Ich möchte überprüfen, ob eine bestimmte Crontab ordnungsgemäß funktioniert. Ich habe einen Job wie diesen hinzugefügt:
*/2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1
Ich weiß, dass ich auf das Null-Gerät umleitung, aber ich bin nicht sicher, ob der obige Befehl gut ist.
* Edit 1: In meinem / var / log / syslog habe ich alle zwei Minuten den folgenden Fehler:
(CRON) error (grandchild #2788 failed with exit status 2)
* Edit 2: Keine Fehler in den Protokollen mit diesem neuen Job:
*/2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1
Antworten:
Die Syntax für den crontab-Eintrag sieht korrekt aus. Wenn Sie Ihre crontab mit "
crontab -e
" bearbeiten (wie Sie sollten), wird eine Fehlermeldung angezeigt, wenn Sie einen syntaktisch ungültigen crontab-Eintrag angeben.Erstens, läuft
/path_to_my_php_script/info.php
es korrekt von der Kommandozeile aus?Wenn ja, läuft es auch so ?:
Wenn das funktioniert, funktioniert es dann so?
Schritt (3) ähnelt dem Ausführen Ihres Programms durch cron (wie in "man 5 cron" dokumentiert).
Das wahrscheinlichste Problem ist, dass der PATH-Cron, mit dem Sie Ihr Programm ausführen, zu restriktiv ist. Aus diesem Grund möchten Sie am Anfang Ihres crontab-Eintrags möglicherweise Folgendes hinzufügen (Sie müssen in die Verzeichnisse, die Ihr Skript benötigt, Folgendes einfügen):
Beachten Sie auch, dass cron standardmäßig
/bin/sh
nicht bash verwendet. Wenn Sie bash benötigen, fügen Sie dies auch am Anfang Ihrer crontab-Datei hinzu:Beachten Sie, dass sich diese beiden Änderungen auf alle crontab-Einträge auswirken . Wenn Sie diese Werte nur für Ihr
info.php
Programm ändern möchten , können Sie Folgendes tun:Erwähnenswert ist auch, dass auf einem für "Mail" konfigurierten System (dh einem System mit einem konfigurierten MTA [sendmail / postfix / etc]) alle Ausgaben von Crontab-Programmen automatisch per E-Mail an Sie gesendet werden. Auf einem Ubuntu-Standarddesktopsystem ist keine lokale Mail konfiguriert. Wenn Sie jedoch auf einem Server arbeiten, können Sie "mail" in ein Terminal eingeben, um alle diese Cron-Mails anzuzeigen. Dies gilt auch für den
at
Befehl " ".quelle
Obwohl sehr selten, funktioniert cron manchmal nicht mehr richtig, obwohl der Dienst ausgeführt wird. So stellen Sie sicher, dass crond ausgeführt wird, und beenden / starten Sie den Dienst.
Unter Linux:
Auf Ubuntu und anderen Debian-basierten Systemen:
quelle
cron
nichtcrond
Leiten Sie die Fehlerausgabe für die Cron-Ausgabe nicht nach / dev / null und grep / var / log / syslog um.
Sie können sofort Fehler anzeigen, wenn Sie eine Datei nach der Bearbeitung
/etc/crontab
speichern oder Dateien darin/etc/cron.d/
mit:Wenn die Bearbeitung in Ordnung ist, werden Sie nur den
RELOAD
Hinweis sehen, wie Fehler auftretenquelle
Sie können Ihren aktiven Cron mit dem Befehl terminal sehen:
Hier sind die Parameter in der Reihenfolge:
min (0 - 59)
Stunde (0 - 23)
Tag des Monats (1 - 31)
Monat (1 - 12)
Wochentag (0 - 6) (Sonntag = 0)
Befehl
Sie rufen Ihr Skript also jede erste Minute jeder Stunde auf. Sie sollten Ihre Ausgabe zu Testzwecken in regelmäßigen Abständen testen:
Dies wird es jede Minute aufrufen!
quelle
Für den Zeitabschnitt in jeder Zeile können Sie diesen Cron-Tester verwenden , um Ihre Cron- Zeitdefinition zu testen / zu verifizieren.
quelle
Ich glaube, Sie können auch
run-parts
Cronjobs außerhalb der Band ausführen. Es ist tatsächlich das, was cron selbst verwendet, um die periodischen Cron-Jobs auszuführen. Wenn Sie also die entsprechenden Argumente angeben, können Sie sie jederzeit ausführen.Wenn Sie nur eine Datei anstelle aller in definierten Cron-Jobs ausführen möchten, müssen
/etc/cron.daily
Sie das reguläre Ausdrucksargument zusammen mit einem gültigen regulären Ausdruck angeben.run-parts --list --regex '^p.*d$' /etc
Denken Sie daran, dass Cron-Jobs in der Regel ohne Erweiterung benannt und als ausführbar gekennzeichnet werden. Stellen Sie daher sicher, dass Ihre Skripte ähnlich sind. Mit einem regulären Ausdruck können Sie jedoch ein Skript mit einer Erweiterung auslösen.
quelle
ah !!
Ich habe die Antwort selbst erhalten, habe sie überprüft und nicht
crond
im Standardinstallationsverzeichnis gefunden, d. h/etc/init.d/
werde jetzt versuchen zu antworten.
hinweis - ich habe das
cron.allow
auchcron.deny
nachgesehen. Bisher ist alles in Ordnung.quelle