Ich habe eine tägliche Crontab-Aufgabe:
50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1
Dieses Shell-Skript daily_task führt einige Python-Skripte aus und erstellt eine Datendatei.
Und es scheitert für zwei Nächte. Aber als ich am Morgen kam und die Python-Skripte manuell ausführte, bekam ich die Datendatei. Oder ich habe eine neue Crontab eingestellt, die nur das Datum auf setzt 0 10 * * *
, und diese Crontab ist auch erfolgreich.
Also habe ich gestern > /tmp/zen_log 2>&1
die Cron-Aufgabe eingegeben, um eine Fehlermeldung zu erhalten.
Und heute Morgen habe ich diese Fehlermeldung in zen_log erhalten:
/my_path/daily_task.sh: line 19: 12364 Killed /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Es scheint, dass ein Prozess getötet wurde? Aber was genau bedeutet das line 19: 12364 Killed
?
PS:
Heute, vor einer Minute, als ich das Python-Skript manuell ausführte, bekam ich:
/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Killed
line 19
im Skript? Vielleicht hilft uns das Posten Ihres Skripts, Ihnen eine Antwort zu geben.line 19
ist/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
daily_task.sh
? Es ist schwer zu verstehen, warum es fehlschlägt,1:50 am
aber10 am
mit den bisherigen Informationen gelingt ./var/log/messages
Ich frage mich, ob Ihr Skript einen OOM-Fehler (Out-of-Memory) verursacht und getötet wird. Neigt Ihr System dazu, in den späten Nachtstunden im Vergleich zu den AM-Stunden andere systemressourcenhungrige Skripte / Anwendungen / Jobs auszuführen?Antworten:
Wenn Anwendungen ausgeführt werden,
killed
ist es häufig eine gute Idee, einen kurzen Blick auf Ihre/var/log/messages
Datei zu werfen, um festzustellen , ob der Kernel den Prozess beendet. Der häufigste Auslöser (meiner Erfahrung nach) war immer auf OOM-Fehler (Out-of-Memory) zurückzuführen. Da mein Unternehmen hauptsächlich Java-Anwendungen verwendet, veröffentlichen die Entwickler häufig ein fehlerhaftes Code-Update, das ein OOM-Ereignis auslöst .Das Planen von Aufgaben, wenn Ihr Betriebssystem über die meisten verfügbaren Ressourcen verfügt, ist wahrscheinlich der Grund dafür, dass es in den AM-Zeitfenstern erfolgreich ist und nicht in der PM, wenn die meisten Leute gerne Jobs für Steuersysteme planen. Einfache Lösungen hierfür sind, entweder Ihre Systemressourcen zu erhöhen, die Ihrem Code zugewiesenen Ressourcen einzuschränken oder sich zu bewegen, wenn Ihre Jobs geplant sind, damit sie nicht in Konflikt geraten.
quelle
messages
in Syslog anstelle von/var/log/messages