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?

Ali
quelle
2
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:

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 .)

Jason Salaz
quelle
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:

cron.* /var/log/cron.log 

Starten Sie dann syslog neu

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist 
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist 

Getestet und lauffähig unter OSX 10.7.4

Fraidoon Sarwary
quelle
3
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.

William Entriken
quelle
4
Sehr gut, danke. Meins zeigte mir, dass es bei meinem Cron einen nicht erkannten Befehl gab. Prost!
Joshua Pinter
7

Ich konnte Cron-Job-Login finden,

/var/mail/{user-name}

Es folgt ein Cron-Job-Protokoll, das ich zum Ausführen eines AWS CLI-Befehls erhalten habe.

From [email protected]  Fri Mar  2 10:00:00 2018
Return-Path: <[email protected]>
X-Original-To: build
Delivered-To: [email protected]
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <[email protected]>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log
Vineeth
quelle
1
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).

Ali
quelle