Was bedeutet "Zeile 19: 12364 getötet" in der Crontab-Fehlermeldung?

10

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>&1die 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

Zen
quelle
Was ist line 19im Skript? Vielleicht hilft uns das Posten Ihres Skripts, Ihnen eine Antwort zu geben.
devnull
line 19ist/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
Zen
Können Sie Ihre Frage mit dem Inhalt von aktualisieren daily_task.sh? Es ist schwer zu verstehen, warum es fehlschlägt, 1:50 amaber 10 ammit den bisherigen Informationen gelingt .
devnull
3
Überprüfen Sie auch den Inhalt von /var/log/messagesIch 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?
devnull
@ DevNull, ich habe das Kernel-Protokoll überprüft. Jetzt bin ich sicher, dass dieses Skript zu viel Speicher belegt hat und der Kernel es beendet hat.
Zen

Antworten:

17

Wenn Anwendungen ausgeführt werden, killedist es häufig eine gute Idee, einen kurzen Blick auf Ihre /var/log/messagesDatei 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.

devnull
quelle
1
Nur extra beachten, dass Ubuntu standardmäßig das messagesin Syslog anstelle von/var/log/messages
Eiche