Ich habe eine Benutzer-Crontab-Datei wie folgt konfiguriert:
*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh
Aber es wird nicht ausgeführt. Ich wartete ungefähr 10-15 Minuten. Warum?
Der Befehl auto-update.sh wird problemlos ausgeführt, wenn er manuell ausgeführt wird. Wie kann ich die Ausführungskette aufteilen und mein Skript von cron zum Laufen bringen?
KeepAlive
und -ElementeQueueDirectories
).Antworten:
Die Umgebung, in der ein Cron-Job ausgeführt wird, unterscheidet sich erheblich von einer interaktiven Shell. Es ist wahrscheinlich, dass das Skript ausgeführt wird, aber nicht erfolgreich. Einer der größten Unterschiede besteht darin, dass für Cron-Jobs der Standardpfad nur "/ usr / bin: / bin" lautet. Wenn Sie also Befehle verwenden, die nicht in / usr / bin oder / bin enthalten sind, ist dies nicht der Fall gefunden, es sei denn, Ihr Skript legt entweder einen eigenen Pfad fest oder liefert explizite Pfade zu Befehlen. Der andere große Unterschied besteht einfach darin, dass es nicht mit einer interaktiven Sitzung verbunden ist. Wenn also versucht wird, etwas Interaktives (Lesen vom Terminal usw.) auszuführen, schlägt dies fehl. Versuchen Sie, den Cron-Eintrag in zu ändern:
... und prüfen Sie, ob im Protokoll etwas Informatives angezeigt wird.
quelle
ps -ax | grep [c]ron
und sehen, ob der Cron-Daemon (/ usr / sbin / cron) aufgelistet ist. Wenn dies der Fall ist, versuchen Sie den Logger-Test von bmike. Überprüfen Sie in jedem Fall die Protokolle (/var/log/system.log und das Element "Alle Nachrichten" im Konsolendienstprogramm) und prüfen Sie, ob relevante Informationen vorhanden sind.Es ist schwer zu sagen, aber was ist, wenn Sie einen zweiten Cron-Job hinzugefügt haben, der etwa alle 5 Minuten ausgeführt wird, und ein vom System erstelltes Tool aufrufen, das Nachrichten in system.log protokolliert?
Auf diese Weise wissen Sie, dass cron für den betreffenden Benutzer ausgeführt wird, und können sich entweder darauf konzentrieren, cron zu starten oder Ihr Skript so zu reparieren, dass es in der eingeschränkten cron-Umgebung ausgeführt wird. (Sie können auf die Wanduhr schauen und einige Male auswählen, die bald oder sogar in den nächsten Minuten erscheinen werden - z. B. um 12:34 Uhr bearbeiten, 35,36,37,38 eingeben, damit die Minuten ausgeführt und die Cron-Datei gespeichert werden .)
quelle
Es ist eine Weile her, dass Sie diese Frage gestellt haben, aber es scheint, dass in diesem Thread keine Lösung gefunden wurde.
Abhängig von der Art und Weise, wie Sie eine Benutzer-Crontab erstellen, muss diese möglicherweise nach der Bearbeitung ausgeführt werden:
Um festzustellen, ob die neue Crontab (auch nach dem Ändern) aktiviert wurde, überprüfen Sie Folgendes:
quelle
Ich hatte das gleiche Problem. Sie müssen den Pfad zu Ihrem Bash-Skript hinzufügen:
quelle
Ich hatte das gleiche Problem. Es ging weg, nachdem ich nach meinem Job eine neue Zeile in meine Crontab-Datei eingefügt hatte (ich bin ein totaler Crontab n00b, daher habe ich keine Ahnung, ob dieses Verhalten allgemein bekannt ist oder nicht).
quelle