Dans mon script, je divise un ensemble de données en input_aa, input_ab, etc. Ensuite, je les exécute à travers le même script Python, en tant que tel:
# Execute program on each split file
for part in input_*; do
python3 $part &
done
wait
Ma question est double: comment puis-je détecter qu'un processus Python a échoué, et lorsqu'il est détecté, comment puis-je tuer tous les enfants générés et quitter le script avec un échec?
bash
,dash
,yash
,mksh
,zsh
. Fondamentalement, n'importe quel shell POSIX, mais AT&T ksh.set -m
est (sous-) spécifié dans POSIX mais en tant que fonctionnalité facultative.kill 0
tue tous les membres du groupe de processus quel que soit leur parent. Voirps -j
pour voir les identifiants des groupes de processus.Ceci est un exemple. JOUER avec ce premier pour obtenir exactement ce dont vous avez besoin. Il ne peut pas beaucoup se casser tel quel.
Ceci est configuré pour échouer délibérément car
ls oinkle
échouera (sur ma machine).Lorsque vous obtenez ce dont vous avez besoin après avoir bricolé avec le script de démarrage --- Changement:
à:
changement:
à:
Les redirections sont là pour enregistrer les journaux. Vous n'en voudrez peut-être pas.
la source
killfile
peut que votre ne contienne pas tous les pids des travaux démarrés.[ $? -ne 0 ]
...