В целом я поддерживаю ответ 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
. Это в конечном итоге сыграет трэш-метал, убивай всех.
Обратите внимание, что вы не должны запускать новый набор процессов, пока не будете уверены, что цепочка убийств завершена.