Chcę sprawdzić, czy określony crontab działa poprawnie. Dodałem taką pracę:
*/2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1
Wiem, że przekierowuję na urządzenie zerowe, ale nie jestem pewien, czy powyższe polecenie jest dobre.
* Edycja 1: W moim / var / log / syslog co dwie minuty mam następujący błąd:
(CRON) error (grandchild #2788 failed with exit status 2)
* Edycja 2: Brak błędów w logach dla tego nowego zadania:
*/2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1
Odpowiedzi:
Składnia wpisu crontab wygląda poprawnie. Rzeczywiście, jeśli edytujesz swój plik crontab za pomocą „
crontab -e
” (tak jak powinieneś), pojawi się błąd, jeśli i tak określisz niepoprawnie składniową pozycję pliku crontab.Po pierwsze, czy
/path_to_my_php_script/info.php
działa poprawnie z wiersza poleceń?Jeśli tak, to czy działa poprawnie tak:
Jeśli to działa, czy to działa w ten sposób?
Krok (3) jest podobny do tego, w jaki sposób cron uruchomi twój program (jak udokumentowano w „man 5 cron”).
Najbardziej prawdopodobnym problemem jest to, że cron PATH używa do uruchomienia programu, jest zbyt restrykcyjny. Dlatego możesz chcieć dodać coś takiego jak poniżej na górze wpisu crontab (musisz dodać katalogi, których będzie potrzebował twój skrypt):
Zauważ też, że cron domyślnie użyje
/bin/sh
, a nie bash. Jeśli potrzebujesz bash, dodaj go również na początku pliku crontab:Zauważ, że obie te zmiany wpłyną na wszystkie wpisy crontab. Jeśli chcesz zmodyfikować te wartości dla swojego
info.php
programu, możesz zrobić coś takiego:Warto również wspomnieć, że w systemie skonfigurowanym dla „mail” (innymi słowy w systemie, który ma skonfigurowany MTA [sendmail / postfix / etc]), wszystkie dane wyjściowe z programów crontab są wysyłane automatycznie pocztą elektroniczną. Domyślny system komputerowy Ubuntu nie ma skonfigurowanej poczty lokalnej, ale jeśli pracujesz na serwerze, możesz po prostu wpisać „mail” w terminalu, aby zobaczyć wszystkie te wiadomości cron. Dotyczy to również
at
polecenia „ ”.źródło
Chociaż bardzo rzadko, czasem cron przestaje działać poprawnie, nawet jeśli usługa jest uruchomiona. Oto jak sprawdzić, czy crond jest uruchomiony i zatrzymać / uruchomić usługę.
W systemie Linux:
W Ubuntu i innych systemach opartych na Debianie:
źródło
cron
nie jestcrond
Nie przekierowuj wyjścia błędu do / dev / null i grep / var / log / syslog dla wyjścia cron.
Możesz natychmiast wyświetlać błędy podczas zapisywania pliku po edycji
/etc/crontab
lub plików w nim za/etc/cron.d/
pomocą:Jeśli edycja jest poprawna, zobaczysz tylko
RELOAD
powiadomienie, wystąpią błędy jakźródło
Możesz zobaczyć swojego aktywnego crona za pomocą polecenia terminalu:
Oto parametry w kolejności:
min (0–59)
godzina (0-23)
dzień miesiąca (1-31)
miesiąc (1-12)
dzień tygodnia (0–6) (niedziela = 0)
Komenda
Więc wywołujesz swój skrypt co pierwszą minutę każdej godziny. W celu testowania powinieneś częściej testować swoje dane wyjściowe:
Będzie to nazywać co minutę!
źródło
W przypadku części czasu w każdym wierszu możesz użyć tego testera cron do przetestowania / weryfikacji definicji czasu cron.
źródło
Wierzę, że możesz także użyć
run-parts
do uruchamiania zadań crona poza pasmem. To jest właśnie to, czego używa cron do uruchamiania okresowych zadań cron, więc podając odpowiednie argumenty, możesz je uruchomić w dowolnym momencie.Jeśli chcesz po prostu uruchomić jeden plik zamiast wszystkich zadań cron zdefiniowanych np.
/etc/cron.daily
, Będziesz musiał podać argument regex wraz z poprawnym regex.run-parts --list --regex '^p.*d$' /etc
Należy pamiętać, że zadania cron są zwykle nazywane bez rozszerzenia i oznaczane jako pliki wykonywalne, więc upewnij się, że skrypty są podobne, chociaż użycie wyrażenia regularnego może pozwolić na uruchomienie skryptu z rozszerzeniem.
źródło
ah !!
sam dostałem odpowiedź, sprawdziłem i nie znalazłem
crond
w domyślnym katalogu instalacyjnym tj/etc/init.d/
spróbuje teraz odpowiedzieć.
Uwaga - I nie sprawdzić
cron.allow
,cron.deny
zbyt. Jak dotąd wszystko jest w porządku.źródło