it-swarm.com.de

Wie werden Cron-Jobs protokolliert?

Ich möchte wissen, wie ich genau sehen kann, was die Cron-Jobs bei jeder Ausführung machen. Wo befinden sich die Protokolldateien? Oder kann ich die Ausgabe an meine E-Mail senden? Ich habe die E-Mail-Adresse so eingestellt, dass das Protokoll gesendet wird, wenn der Cron-Job ausgeführt wird, aber noch nichts empfangen wurde.

176
Adrian M.
* * * * * myjob.sh >> /var/log/myjob.log 2>&1

protokolliert alle Ausgaben des Cron-Jobs in /var/log/myjob.log

Sie können mail verwenden, um E-Mails zu senden. Die meisten Systeme senden cron-Auftragsausgaben per E-Mail an root oder den entsprechenden Benutzer.

282
Spliffster

Standardmäßig werden Cron-Protokolle in/var/log/syslog protokolliert, damit Sie cron-bezogene Einträge anzeigen können.

grep CRON /var/log/syslog

https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log

52
Matthew Lock

Es gibt mindestens drei verschiedene Arten der Protokollierung:

  1. Die Protokollierung BEVOR das Programm ausgeführt wird, wird nur WENN der Cronjob TRIED protokolliert, um den Befehl auszuführen. Dieser befindet sich in/var/log/syslog, wie bereits von @Matthew Lock erwähnt.

  2. Die Protokollierung von Fehlern NACH dem Versuch des Programms, ausgeführt zu werden, kann an eine E-Mail oder an eine Datei gesendet werden, wie von @Spliffster erwähnt. Ich ziehe es vor, logging in eine Datei zu schreiben, denn mit email THEN haben Sie eine NEUE Quelle für Probleme, und es wird geprüft, ob E-Mail-Versand und -Empfang Einwandfrei funktionieren. Manchmal ist es das, manchmal nicht. In einer einfachen, einfachen Desktop-Maschine, an der Sie nicht interessiert sind, __. Ein SMTP-Gerät zu konfigurieren, werden Sie es manchmal vorziehen, sich in einer Datei anzumelden:

     * * * *  COMMAND_ABSOLUTE_PATH > /ABSOLUTE_PATH_TO_LOG 2>&1
    
    • Ich würde auch in Betracht ziehen, die Berechtigungen von/ABSOLUTE_PATH_TO_LOG zu überprüfen, und den Befehl mit den Berechtigungen dieses Benutzers ausführen. Nur zur Verifizierung, während Sie testen, ob es eine potenzielle Problemquelle sein kann.
  3. Die Protokollierung des Programms selbst mit eigener Fehlerbehandlung und Protokollierung für Nachverfolgungszwecke.

Es gibt einige häufige Problemquellen mit Cronjobs: * Der ABSOLUTE PFAD der auszuführenden Binärdatei. Wenn Sie es von Ihrem .__ ausführen. Shell, es könnte funktionieren, aber der cron-Prozess scheint ein anderes .__ zu verwenden. Umgebung, und daher findet es nicht immer Binärdateien, wenn Sie nicht Verwenden Sie den absoluten Pfad . * Die von einer Binärdatei verwendeten BIBLIOTHEKEN. Es ist mehr oder weniger derselbe vorherige Punkt, aber stellen Sie sicher, dass, wenn Sie einfach den NAME des Befehls setzen, genau auf die Binärdatei Bezug genommen wird, die dieselbe Bibliothek verwendet, oder besser prüfen, ob die Binärdatei, auf die Sie sich beziehen, mit dem absoluten Pfad verweist Das ist das Gleiche, auf das Sie sich beziehen, wenn Sie die Konsole direkt verwenden. Die Binärdateien können mit dem Befehl locate gefunden werden, zum Beispiel:

$locate python

Stellen Sie sicher, dass die zu verweisende Binärdatei die gleiche ist, die Sie in Ihrer Shell aufrufen, oder testen Sie sie erneut in der Shell, indem Sie den absoluten Pfad verwenden, den Sie in den Cronjob einfügen möchten.

  • Eine weitere häufige Problemquelle ist die Syntax im Cronjob. Denken Sie daran, dass es Sonderzeichen gibt, die Sie für Listen (Kommas) verwenden können, um Bereiche (Bindestriche -) zu definieren, das Inkrementieren von Bereichen (Schrägstriche) usw. festzulegen. Schauen Sie nach: http: //www.softpanorama .org/Dienstprogramme/cron.shtml
9
David L

Hier ist mein Code:

* * * * * your_script_fullpath >> your_log_path 2>&1
9
Haimei

Unter Ubuntu können Sie eine cron.log - Datei aktivieren, die nur die CRON-Einträge enthält.

Kommentieren Sie die Zeile aus, in der cron in der Datei /etc/rsyslog.d/50-default.conf Erwähnt wird:

#  Default rules for rsyslog.
#

#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                          /var/log/cron.log

Speichern und schließen Sie die Datei und starten Sie den Dienst rsyslog neu:

Sudo systemctl restart rsyslog

Sie können jetzt Cron-Protokolleinträge in einer eigenen Datei sehen:

Sudo tail -f /var/log/cron.log

Beispielausgaben:

Jul 18 07:05:01 machine-Host-name CRON[13638]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

Es werden jedoch keine weiteren Informationen darüber angezeigt, welche Skripts tatsächlich in /etc/cron.daily Oder /etc/cron.hourly Ausgeführt wurden, es sei denn, diese Skripts werden direkt in die Datei cron.log (oder möglicherweise in eine andere Protokolldatei) ausgegeben.

Wenn Sie überprüfen möchten, ob eine Crontab ausgeführt wird und nicht in cron.log Oder syslog danach suchen müssen, erstellen Sie eine Crontab, die die Ausgabe in eine Protokolldatei Ihrer Wahl umleitet.

# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log 2>&1

Schritte ausgeführt von: https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu -linux /

5
Gianfranco P.

Wenn Sie einen Befehl mit Sudo ausführen, wird es nicht erlaubt. Sudo braucht eine Menge.

1
Saad Masood

cron sendet bereits die Standardausgabe und den Standardfehler jedes von ihm ausgeführten Jobs per E-Mail an den Eigentümer des Cron-Jobs.

Sie können MAILTO=recipient in der Datei crontab verwenden, um die E-Mails an ein anderes Konto senden zu lassen.

Damit dies funktioniert, müssen Sie die E-Mail-Funktion ordnungsgemäß ausführen. Die Zustellung an ein lokales Postfach ist in der Regel kein Problem (in der Tat besteht die Wahrscheinlichkeit, dass ls -l "$MAIL" zeigt, dass Sie bereits ein paar erhalten haben), aber wenn Sie es von der Box aus in das Internet laden möchten, benötigen Sie den MTA (Postfix, Sendmail, was haben Sie). richtig konfiguriert sein, um sich mit der Welt zu verbinden.

1
tripleee

Wenn Sie Ihre Cron-Jobs dennoch überprüfen möchten, müssen Sie ein gültiges .__ angeben. E-Mail-Konto beim Einrichten der Cron-Jobs in cPanel.

Wenn Sie eine gültige E-Mail angeben, erhalten Sie die Ausgabe des Cron-Jobs, der ausgeführt wird. So können Sie es überprüfen und sicherstellen, dass alles korrekt ausgeführt wurde. Beachten Sie, dass Sie keine E-Mail erhalten, wenn der Befehl cron job keine Ausgabe enthält.

Bitte beachten Sie, dass Sie für jeden ausgeführten Cron-Job eine E-Mail erhalten. Dies kann Ihren Posteingang überfluten, falls Ihre Crons zu oft laufen

0
Faridul Khan