In meinem Skript habe ich einen Datensatz in input_aa, input_ab usw. aufgeteilt. Dann führe ich jeweils dasselbe Python-Skript als solches aus:
# Execute program on each split file
for part in input_*; do
python3 $part &
done
wait
Meine Frage ist zweifach: Wie erkenne ich, dass ein Python-Prozess fehlgeschlagen ist, und wie töte ich, wenn ich erkannt werde, alle erzeugten Kinder und beende das Skript mit einem Fehler?
bash
,dash
,yash
,mksh
,zsh
. Grundsätzlich jede POSIX-Shell außer AT & T ksh.set -m
ist in POSIX (unter-) angegeben, jedoch als optionale Funktion.kill 0
tötet alle Mitglieder der Prozessgruppe, unabhängig davon, was ihre Eltern sind. Sieheps -j
, um Prozessgruppen-IDs anzuzeigen.Dies ist ein Beispiel. SPIELEN Sie zuerst damit, um genau das zu bekommen, was Sie brauchen. Es kann nicht viel brechen wie es ist.
Dies ist so eingerichtet, dass es absichtlich fehlschlägt, da
ls oinkle
es (auf meinem Computer) fehlschlägt.Wenn Sie nach dem Basteln mit dem Starter-Skript das bekommen, was Sie brauchen --- Ändern:
zu:
Veränderung:
zu:
Die Umleitungen dienen zum Speichern von Protokollen. Sie können sie nicht wollen.
quelle
killfile
Job möglicherweise nicht alle Pids der Jobs, die gestartet wurden.[ $? -ne 0 ]
...