Wo befindet sich die Cron-Protokolldatei in MacOSX Lion?
25
Ich möchte einen Cron-Job beheben, der bis zu einer kürzlich vorgenommenen Änderung einwandfrei funktioniert hat, kann die Cron-Protokolldatei jedoch nicht finden. Wo befindet sich die Datei?
Ist es wirklich ein Cron Job oder verwenden Sie launchd? Cron ist unter OS X veraltet.
jaberg
1
Haben Sie eine Protokolldatei für den Cron-Job festgelegt?
Daviesgeek
Es ist eigentlich ein cronJob, mit dem ich es eingerichtet habe und mit dem cron -eich es sehen kann, cron -lund ich bin mir sicher, dass es lange Zeit bei Lion und davor bei Snow Leopard funktioniert hat.
Ali
und nein, ich lege keine Protokolldatei manuell für 'cron' selbst fest, obwohl ich in eine Protokolldatei innerhalb des Jobs schreibe und diese vor kurzem nicht mehr funktioniert, nachdem ich etwas geändert habe.
Ali
2
Ali, da du die Antwort hast, poste sie bitte als Antwort und akzeptiere sie. Bearbeiten Sie es nicht in die Frage. Sie dürfen nicht nur Ihre eigene Frage beantworten, sondern werden dazu ermutigt.
Jason Salaz
Antworten:
30
Standardmäßig protokolliert cron keine Ausgaben ausgeführter Jobs. Es ist möglich zu protokollieren, dass Cronjobs ausgeführt wurden, aber dies ist auch unter OS X nicht die Standardeinstellung.
Um die Ausgabe der Cronjob-Ausführung zu untersuchen, empfehle ich, die Cronjob-Zeile so zu ändern, dass STDOUT und STDERR in Protokolldateien umgeleitet werden. Fügen Sie Ihrer Jobzeile in Ihrer crontab-Datei oder nach dem Ausführen crontab -e, wie auch immer Sie vorgehen, Folgendes hinzu:
Dabei sollte STDOUT (normalerweise gedruckte oder als Echo ausgegebene Ausgabe an STDOUT) an eine Textdatei mit dem Namen stdout.log im Verzeichnis / tmp und STDERR an stderr.log im Verzeichnis temp gesendet werden. Viele Dienstprogramme verwenden STDERR, um spezielle Fehlermeldungen auszudrucken, wenn es sich um Anwendungsfehler handelt, und nicht um Fehler, die bei der tatsächlichen Ausführung des Programms auftreten. (Sie können mehr über STDERR auf Wikipedia lesen .)
Danke, genau das habe ich versucht, es sieht so cronaus, als würde der Job aus irgendeinem Grund nicht ausgeführt. Wenn ich den Job selbst durch Eingabe des Befehls im Terminal ausführe, der ausgeführt wird und cronin die Protokolldatei ausgegeben wird, aber wenn ich auf die Ausführung warte, passiert nichts, zumindest keine Änderung in der Protokolldatei, dachte ich vielleicht an eine "Cron-Protokolldatei" "oder es gab irgendwelche Spuren in der Konsole, die mir helfen könnten herauszufinden, was los ist, kürzlich habe ich meine Shell von bash auf zsh geändert, aber ich glaube nicht, dass das dies hätte beeinflussen können.
Ali
1
Laut erikslab.com/2011/02/04/logging-with-launchd könnten Sie den cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) mit einem Stdout / Stderr-Pfad ändern, um cron selbst zu debuggen. Ich erinnere mich nicht , wenn launchctl unloading und launchctl loading die plist ausreichend ist, oder weil es sich um ein System - Daemon ist , wenn Sie würde ganz neu starten. Ich würde letzteres nur vorschlagen, um sicherzugehen.
Jason Salaz
21
Es ist viel einfacher, einfach Folgendes hinzuzufügen /etc/syslog.conf:
Ich mag diese Idee - aber in 10.10.5 /etc/syslog.confsagt meine # Note that flat file logs are now configured in /etc/asl.conf. Diese Datei hat eine andere Syntax. Mir ist nicht klar, wie ich die Protokollierung konfigurieren soll.
Ken Williams
@ KenWilliams, auch wenn es heißt, dass syslog.conf immer noch funktioniert, auf High Sierra.
Fish Monitor
15
Standardmäßig ist die Protokollierung nicht aktiviert. Möglicherweise erhalten Sie jedoch nützliche Informationen, wenn Sie den mailBefehl ausführen.
TL; DR für den mailBefehl: Drücken Sie die Eingabetaste, um Nachrichten zu lesen, und dann die qEingabetaste, um den Befehl zu beenden.
Das ist eine Fehlermeldung, die im Postfach vonuser
nohillside
@patrix, ich konnte auch Erfolg cron job finden. Die Antwort wurde aktualisiert.
Vineeth
Nett! Sollte die akzeptierte Antwort sein!
Trollhorn
3
Es stellte sich heraus, wenn Cron den Job ausführt (wie ich), /usr/local/binist nicht in der PATH.
Ich habe dies durch Ausprobieren herausgefunden und den Job von Grund auf aus einfachen Dingen aufgebaut, von denen ich wusste, dass sie funktionieren würden, und nach und nach Dinge hinzugefügt, bis ich das Problem gefunden habe.
Zu den anderen Vorschlägen und Antworten:
Aus irgendeinem Grund (zumindest auf meinem Computer, auf dem ein von SnowLeopard aktualisierter Lion ausgeführt wird) cronwerden die in den plist-Dateien angegebenen Parameter nicht verwendet, launchdum etwas zu lesen, /System/Library/LaunchDaemons/com.vix.cron.plistoder möglicherweise schreibt cron auf Lion nichts stdout oder stderr.
Übrigens verwende ich http://s3tools.org/s3cmd in synceinem Ordner mit einem Amazon S3-Bucket als Backup (wie einer primitiven DropBox).
cron
Job, mit dem ich es eingerichtet habe und mit demcron -e
ich es sehen kann,cron -l
und ich bin mir sicher, dass es lange Zeit bei Lion und davor bei Snow Leopard funktioniert hat.Antworten:
Standardmäßig protokolliert cron keine Ausgaben ausgeführter Jobs. Es ist möglich zu protokollieren, dass Cronjobs ausgeführt wurden, aber dies ist auch unter OS X nicht die Standardeinstellung.
Um die Ausgabe der Cronjob-Ausführung zu untersuchen, empfehle ich, die Cronjob-Zeile so zu ändern, dass STDOUT und STDERR in Protokolldateien umgeleitet werden. Fügen Sie Ihrer Jobzeile in Ihrer crontab-Datei oder nach dem Ausführen
crontab -e
, wie auch immer Sie vorgehen, Folgendes hinzu:0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log
Dabei sollte STDOUT (normalerweise gedruckte oder als Echo ausgegebene Ausgabe an STDOUT) an eine Textdatei mit dem Namen stdout.log im Verzeichnis / tmp und STDERR an stderr.log im Verzeichnis temp gesendet werden. Viele Dienstprogramme verwenden STDERR, um spezielle Fehlermeldungen auszudrucken, wenn es sich um Anwendungsfehler handelt, und nicht um Fehler, die bei der tatsächlichen Ausführung des Programms auftreten. (Sie können mehr über STDERR auf Wikipedia lesen .)
quelle
cron
aus, als würde der Job aus irgendeinem Grund nicht ausgeführt. Wenn ich den Job selbst durch Eingabe des Befehls im Terminal ausführe, der ausgeführt wird undcron
in die Protokolldatei ausgegeben wird, aber wenn ich auf die Ausführung warte, passiert nichts, zumindest keine Änderung in der Protokolldatei, dachte ich vielleicht an eine "Cron-Protokolldatei" "oder es gab irgendwelche Spuren in der Konsole, die mir helfen könnten herauszufinden, was los ist, kürzlich habe ich meine Shell von bash auf zsh geändert, aber ich glaube nicht, dass das dies hätte beeinflussen können./System/Library/LaunchDaemons/com.vix.cron.plist
) mit einem Stdout / Stderr-Pfad ändern, um cron selbst zu debuggen. Ich erinnere mich nicht , wennlaunchctl unload
ing undlaunchctl load
ing die plist ausreichend ist, oder weil es sich um ein System - Daemon ist , wenn Sie würde ganz neu starten. Ich würde letzteres nur vorschlagen, um sicherzugehen.Es ist viel einfacher, einfach Folgendes hinzuzufügen
/etc/syslog.conf
:Starten Sie dann syslog neu
Getestet und lauffähig unter OSX 10.7.4
quelle
/etc/syslog.conf
sagt meine# Note that flat file logs are now configured in /etc/asl.conf
. Diese Datei hat eine andere Syntax. Mir ist nicht klar, wie ich die Protokollierung konfigurieren soll.Standardmäßig ist die Protokollierung nicht aktiviert. Möglicherweise erhalten Sie jedoch nützliche Informationen, wenn Sie den
mail
Befehl ausführen.TL; DR für den
mail
Befehl: Drücken Sie die Eingabetaste, um Nachrichten zu lesen, und dann dieq
Eingabetaste, um den Befehl zu beenden.quelle
Ich konnte Cron-Job-Login finden,
Es folgt ein Cron-Job-Protokoll, das ich zum Ausführen eines AWS CLI-Befehls erhalten habe.
quelle
user
Es stellte sich heraus, wenn Cron den Job ausführt (wie ich),
/usr/local/bin
ist nicht in derPATH
.Ich habe dies durch Ausprobieren herausgefunden und den Job von Grund auf aus einfachen Dingen aufgebaut, von denen ich wusste, dass sie funktionieren würden, und nach und nach Dinge hinzugefügt, bis ich das Problem gefunden habe.
Zu den anderen Vorschlägen und Antworten:
Aus irgendeinem Grund (zumindest auf meinem Computer, auf dem ein von SnowLeopard aktualisierter Lion ausgeführt wird)
cron
werden die in den plist-Dateien angegebenen Parameter nicht verwendet,launchd
um etwas zu lesen,/System/Library/LaunchDaemons/com.vix.cron.plist
oder möglicherweise schreibt cron auf Lion nichts stdout oder stderr.Übrigens verwende ich http://s3tools.org/s3cmd in
sync
einem Ordner mit einem Amazon S3-Bucket als Backup (wie einer primitiven DropBox).quelle