Stellen Sie sicher, dass ein Cron-Job abgeschlossen wurde


9

Gibt es einen Befehl, der ausgeführt werden kann, um zu überprüfen, ob ein Cron-Job eines Benutzers erfolgreich ausgeführt wurde?

Plattform ist Ubuntu 8.04 LTS.

Ich habe Skripte in / home / useraccount / bin /

Laufen

crontab -l

Wenn Sie als Benutzer angemeldet sind, erhalten Sie Folgendes:

# m h  dom mon dow   command

@hourly /home/useraccount/bin/script_1

@hourly /home/locateruser/bin/script_2

Mir ist klar, dass Skripte E-Mails senden oder mit einem Zeitstempel in ein Protokoll schreiben können, aber ich frage mich, ob es nur eine Möglichkeit gibt, zu überprüfen, ob sie über die Befehlszeile ausgeführt wurden.

BEARBEITEN :

ich rannte

ps -ef|grep cron 

... und es zeigt

root      4358     1  0 Mar12 ?        00:00:00 /usr/sbin/cron

Ich bin mir nicht sicher, ob dies darauf hinweist, dass die Jobs ausgeführt werden.


Ich denke, Cron läuft immer. Wenn Ihre Cron-Jobs jedoch einen anderen Prozess starten, können Sie mit ps testen, ob der neue Prozess ausgeführt wird
David Fox,

Antworten:


15
grep scriptname /var/log/syslog

Die Frage bezieht sich speziell auf Benutzer-Crontabs. Normale Benutzer haben normalerweise keinen Zugriff auf / var / log / syslog. Dies funktioniert also nur, wenn Sie auch Root auf diesem Computer haben.
jlh

4

/ var / log / cron

Sie können überprüfen, ob es derzeit ausgeführt wird mit:

ps aux

3

Um sicherzustellen, dass ein Skript erfolgreich abgeschlossen wurde, sollte wirklich eine temporäre Datei verwendet werden. Erstellen Sie es, wenn der Job gestartet wird, und löschen Sie ihn, wenn er beendet ist. Dies führt auch zu Abstürzen und verhindert, dass derselbe Job im Fehlerfall erneut ausgeführt wird.

#!/bin/bash

# check if there is already a temp file with suffix .myscript in /tmp,
# if file exists return with status of 666
[ -f /tmp/*.bla ] && exit 666

# create a temp file with suffix .myscript
TEMP_FILE=`mktemp --suffix .myscript`
touch $TEMP_FILE

#
# script stuff
#

# we are done, clean-up after ourselves
rm $TEMP_FILE

Dies ist eine gute Praxis
Henry the Hengineer

1

Ich habe ein Tool namens http://cronitor.io erstellt , weil ich eine Lösung zur Überwachung einiger Cron-Jobs benötigte und mit den vorhandenen Optionen nicht zufrieden war. Es ist kostenlos, einen einzelnen Job zu überwachen, und es gibt kostenpflichtige Pläne für die geschäftliche Nutzung.

Das Tolle an Cronitor ist, dass Sie ihm nur einen Cron-Ausdruck wie * / 5 * * * MW geben und Sie benachrichtigt werden, wenn der Job nicht planmäßig startet, länger als erwartet ausgeführt wird oder sich selbst überlappt.


0

Sie können sich auch Ergebnisse per E-Mail zusenden lassen.

30 3 * * * find /home/*/Maildir/.Spam/{new,cur}/ -type f -mtime +6 -delete| \
           mail -e -s "task #1 report" postmaster@example.com
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.