En mi script dividí un conjunto de datos en input_aa, input_ab, etc. Luego, ejecuto cada uno a través del mismo script Python, como tal:
# Execute program on each split file
for part in input_*; do
python3 $part &
done
wait
Mi pregunta es doble: ¿cómo detecto que un proceso de Python ha fallado y, cuando lo detecto, cómo mato a todos los niños engendrados y salgo del script con un error?
bash
,dash
,yash
,mksh
,zsh
. Básicamente cualquier shell POSIX pero AT&T ksh.set -m
se especifica (debajo de) en POSIX pero como una característica opcional.kill 0
mata a todos los miembros del grupo de proceso, sea cual sea su padre. Consulteps -j
para ver los ID de grupo de proceso.Esto es un ejemplo. JUEGA con esto primero para obtener exactamente lo que necesitas. No puede romperse mucho como está.
Esto está configurado para fallar deliberadamente porque
ls oinkle
fallará (en mi máquina).Cuando obtienes lo que necesitas después de jugar con el script de inicio --- Cambiar:
a:
cambio:
a:
Las redirecciones están ahí para guardar registros. Puede que no los quieras.
fuente
killfile
posible que no contenga todos los pids de los trabajos que se han iniciado.[ $? -ne 0 ]
...