Загалом я підтримую відповідь 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) &
,?