Zadanie Cron nie działa?

24

Mam plik crontab, który wygląda następująco:

* * * * * /home/abliskovs/update/update.sh

Jednak gdy sprawdzam syslog pod kątem dowodów, że zadanie zostało uruchomione, nic nie wskazuje na to, że zostało ono uruchomione. Jak mogę sprawdzić, czy działa?

crontab -l wyprowadza następujące:

* * * * * /home/abliskovs/update/update.sh

Alex Bliskovsky
źródło
OK, zrobiłem to.
Alex Bliskovsky,
Może głupie pytanie, ale zdarzyło mi się to wcześniej, więc i tak zadam pytanie. Upewnij się, że demon crona faktycznie działa! : P Drugie zgadywanie to uprawnienia, upewnij się, że jest wykonywalne przez użytkownika uruchamiającego cronjob.
Mattias Ahnberg,

Odpowiedzi:

21

Dodaj >> / tmp / testlog.log na końcu wpisu crontab (aby przekierować dane wyjściowe do pliku, który możesz zbadać lub sprawdzić, czy jest uruchomiony, dodatkowo 2> & 1 zawiera dane wyjściowe z konsoli błędów)

Przykład

0 * * * * /home/abliskovs/update/update.sh 2> & 1 /tmp/testlog.log

Upewnij się także, że:

  • Dodaj cronjobs we właściwy sposób. jeśli używałeś crontab -e na swoim koncie, skrypty są uruchamiane z użytkownikiem (a zatem wpis crontab ma jedno pole mniej - użytkownik go uruchamia, jak wiadomo). Jeśli po prostu skopiowałeś powyższy wycinek do /etc/cron.d, zakończy się on niepowodzeniem, ponieważ nie określiłeś użytkownika (a raczej nie znajdzie on użytkownika o nazwie „bash”).
  • Upewnij się, że plik skryptu jest wykonywalny, w przeciwnym razie go nie uruchomi.
  • Załaduj ponownie usługę cron zadań przeładuj ponownie lub uruchom ponownie usługę cronsudo /etc/init.d/cron restart

Jak zrobić plik wykonywalny?

Kilka sposobów na wykonanie pliku

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh
Md Mahbubur Rahman
źródło
3

Upewnij się, że plik skryptu jest wykonywalny {chmod 755}, w przeciwnym razie go nie uruchomi

użytkownik25
źródło
2
Aby plik był wykonywalny, możesz także uruchomićchmod +x filename
Stefano Palazzo
0

Skrypt powłoki update.shprawdopodobnie zawiera błędy, na przykład niektóre polecenia, których nie można wykonać, ponieważ polecenia nie można znaleźć. W takim przypadku pomocne może być dodanie ścieżki do polecenia w zmiennej PATH lub dodanie go bezpośrednio przed poleceniem. Pomaga również określić adres e-mail MAILTO, e-maile powstałe w wyniku wykonania Cronjobs są wysyłane na ten adres

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

Możesz także sprawdzić lokalną skrzynkę pocztową maili plik syslog pod /var/log/syslogkątem błędów. Zobacz także pokrewne pytanie, dlaczego cronjobs może nie działać .

0x4a6f4672
źródło
0

Wystąpił ten sam problem, a przyczyną było to, że crontab nie był uruchomiony, ponieważ nie miał na to pozwolenia. Zmieniłem plik i umieściłem go w /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

Daj mi znać, jeśli to Ci odpowiada.

Kamaro Lambert
źródło