En général, je soutiens La réponse de G-Man . Je voudrais vous présenter une solution rapide qui peut suffire dans certaines circonstances.
Que les trois exécutables soient foo
, bar
y baz
. Les hypothèses :
- vous pouvez les exécuter à la main ;
- vous les exécutez tous sous le même utilisateur ;
- vous exécutez au plus un
foo
un bar
et un baz
à un moment donné.
Au lieu de foo
Ejecutar foo ; killall bar 2>/dev/null
.
Au lieu de bar
Ejecutar bar ; killall baz 2>/dev/null
.
Au lieu de baz
Ejecutar baz ; killall foo 2>/dev/null
.
Si vous voulez exécuter foo
en arrière-plan, la syntaxe correcte est la suivante :
{ foo ; killall bar 2>/dev/null ; } &
De même avec bar
y baz
. De cette façon, vous pouvez les exécuter à partir d'un seul Shell si vous le souhaitez.
La solution s'adapte à n'importe quel nombre raisonnable de processus. Lorsqu'un processus se termine, une chaîne de processus killall
sera déclenché. Cela finira par jouer du thrash metal les tuer tous.
Notez que vous ne devriez pas démarrer un nouvel ensemble de processus avant d'être sûr que cette chaîne d'élimination est terminée.