Загалом я підтримую відповідь G-Man . Я хотів би запровадити швидке рішення, якого може бути достатньо за деяких обставин.
Нехай три виконувані файли будуть foo, barі baz. Припущення:
- ви можете запустити їх вручну;
- ви запускаєте їх як один і той же користувач;
- ти працюєш не більше одного
foo, одного barта одного bazв будь-який момент часу.
Замість fooбігу foo ; killall bar 2>/dev/null.
Замість barбігу bar ; killall baz 2>/dev/null.
Замість bazбігу baz ; killall foo 2>/dev/null.
Якщо ви хочете працювати fooу фоновому режимі, правильний синтаксис виглядає так:
{ foo ; killall bar 2>/dev/null ; } &
Аналогічно з barі baz. Таким чином ви можете запустити їх з однієї оболонки, якщо бажаєте.
Розчин масштабується до будь-якої розумної кількості процесів. Коли один процес припиняється, killallзапускається ланцюг ромашок. Це врешті-решт зіграє всіх треш-металів .
Зауважте, що ви не повинні запускати новий набір процесів, поки не будете впевнені, що цей ланцюг вбивств закінчений.
(foo ; killall bar 2>/dev/null) &,?