Frage :Ich habe ein backup.sh-Shell-Skript erstellt und es zu meiner Crontab hinzugefügt, um es täglich auszuführen. Wie kann ich überprüfen, ob der Backup-Cron-Skript-Job erfolgreich ausgeführt wurde? Außerdem habe ich mehrere Echo-Anweisungen in meinem Shell-Skript backup.sh. Wie speichere ich die Ausgabe meines Skripts in einer Protokolldatei, wenn es als Cron-Job ausgeführt wird?
Antwort :Nehmen wir an, Sie haben Ihrer Crontab die Datei backup.sh wie unten gezeigt hinzugefügt, um sie jeden Tag um Mitternacht auszuführen.
$ crontab -e 59 23 * * * /home/john/bin/backup.sh
Um zu überprüfen, ob dieser Job erfolgreich ausgeführt wurde oder nicht, überprüfen Sie die Datei /var/log/cron, die Informationen über alle Cron-Jobs enthält, die in Ihrem System ausgeführt werden. Wie Sie der folgenden Ausgabe entnehmen können, wurde Johns Cron-Job erfolgreich ausgeführt.
$ tail /var/log/cron Oct 8 22:00:00 dev-db crond[18340]: (root) CMD (/bin/sh /home/root/bin/system_check &) Oct 8 23:00:00 dev-db crond[20348]: (oracle) CMD (/bin/sh /home/oracle/bin/cleanup.sh &) Oct 8 23:59:00 dev-db crond[20399]: (john) CMD (/bin/sh /home/john/bin/backup.sh &)
Das Cron-Protokoll enthält die folgenden Informationen:
- Zeitstempel – Datum und Uhrzeit der Ausführung des Cronjobs
- Hostname – Der Hostname des Servers (z. B. dev-db)
- Der Cron-Deamon-Name und die PID. Beispiel:crond[20399]
- Benutzername – Der Benutzername, unter dem dieser Cronjob ausgeführt wurde. Zum Beispiel John.
- CMD – Alles, was darauf folgt, ist der eigentliche Befehl, der zu diesem Zeitpunkt ausgeführt wurde.
Wenn sich in der Datei backup.sh Echo-Anweisungen befinden, möchten Sie diese möglicherweise in einer Datei protokollieren. Wenn das Cron-Skript backup.sh irgendwelche Ausgaben (einschließlich Fehler) auslöst, sollten Sie diese im Allgemeinen in einer Protokolldatei protokollieren. Ändern Sie dazu den crontab-Eintrag und fügen Sie die Ausgabe- und Fehlerumleitung wie unten gezeigt hinzu.
$ crontab -e 59 23 * * * /home/john/bin/backup.sh > /home/john/logs/backup.log 2>&1
Oben:
- > /home/john/logs/backup.log gibt an, dass die Standardausgabe des Skripts backup.sh in die Datei backup.log umgeleitet wird.
- 2>&1 gibt an, dass der Standardfehler (2>) auf denselben Dateideskriptor umgeleitet wird, auf den die Standardausgabe (&1) zeigt.
- Also werden sowohl die Standardausgabe als auch der Fehler nach /home/john/logs/backup.log umgeleitet