В моем скрипте я разделил набор данных на input_aa, input_ab и т. Д. Затем я запускаю каждый из них по одному и тому же скрипту Python:
# Execute program on each split file
for part in input_*; do
python3 $part &
done
wait
У меня двоякий вопрос: как я могу определить, что процесс Python завершился неудачно, и при обнаружении, как мне убить всех порожденных детей и завершить работу сценария с ошибкой?
bash
,dash
,yash
,mksh
,zsh
. В основном любая оболочка POSIX, кроме AT & T ksh.set -m
указывается (недостаточно) в POSIX, но в качестве дополнительной функции.kill 0
убивает всех членов группы процессов независимо от их родителей. Смотрите,ps -j
чтобы увидеть идентификаторы группы процессов.Это пример. ИГРАТЬ с этим первым, чтобы получить именно то, что вам нужно. Это не может сломать много, как есть.
Это настроение для преднамеренного сбоя, потому что
ls oinkle
произойдет сбой (на моей машине).Когда вы получите то, что вам нужно после работы со стартовым скриптом --- Изменить:
чтобы:
изменение:
чтобы:
Перенаправления для сохранения журналов. Вы можете не хотеть их.
источник
killfile
как начнутся все остальные, то вы можете не содержать все pid заданий, которые были запущены.[ $? -ne 0 ]
...