Problém může být v tom, že váš uživatel nemá práva ke spuštění souboru.
Nejprve nastavte příznak spuštění pro váš skript
chmod +x /home/samitha/bash.sh
Poté byste měli zkontrolovat oprávnění pro soubor php pomocí
ls -lah /var/www/Controller
Pokud se nezobrazí vaše uživatelská skupina ani vaše uživatelské jméno, musíte skript spustit s právy superuživatele nebo změnit jeho oprávnění.
První způsob by byl vložit váš záznam do
sudo crontab -e
nebo druhý by byl (což bych nedoporučoval, protože každý by mohl spustit skript voláním vašeho webu)
chmod a+x /var/www/Controller/post.php
TL;DR:Vložte "bash" před skript v crontab a ve všech skriptech volaných skriptem.
Mám na to opravu. Žádná z předchozích odpovědí mi nefungovala. Mám dva notebooky Asus, na kterých běží Kubuntu (aktualizováno na jádro v5.8) s prakticky identickými konfiguracemi. Nevím, proč jeden má problém a druhý ne. Nicméně po 2 dnech experimentování jsem našel opravu. Doufejme, že někdo znalejší než já najde příčinu.
Cron používá sh místo bash. Zkoušel jsem přidat SHELL=/bin/bash a definovat PATH nad příkazy v crontab a nemělo to žádný účinek. Všechny mé skripty mají na začátku shebang #!/bin/bash, také bez efektu. Oprávnění mých skriptů (a jejich adresářů) jsou 777. Skripty se nespouštějí pro cron nebo uživatele, bez ohledu na to, jakou kombinaci uživatel:skupina jsem na souborech zkusil. Použití úplných názvů cest je cron a uvnitř skriptů neměl žádný účinek, který by se lišil od použití proměnných prostředí.
Moje oprava byla vložit "bash" před název souboru skriptu v crontab. Např.:
00 01 * * * bash $BASH_SCRIPTS/backup_os.sh
(Ano, cron nemá problém s použitím mých proměnných prostředí definovaných v /etc/environment.) Také v cronu, když skript spustí jiný skript, druhý skript dostane „povolení odepřeno“, pokud tento skript není upraven tak, aby měl „bash " před názvem souboru 2. skriptu nebo použijte "zdroj", pokud to bude s vaším skriptem fungovat.
Uživatel spouštějící tento cron (ten, kdo provádí cron -e) nemá správná práva ke spuštění tohoto skriptu. To znamená:buď skript postrádá příznak spuštění, nebo jej není možné dosáhnout, protože některé z jeho předchůdců příznak spuštění nemají.
můžete také vyzkoušet následující řešení:
chmod +x post.php
chmod +x bash.sh
echo "* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1" >> cronjob
chmod +x cronjob
/etc/init.d/crond start #redhat based servers like centos
/etc/init.d/cron start #debian based servers like ubuntu
crontab cronjob