Вы можете использовать -w
с killall
для этого:
-w, --wait
Wait for all killed processes to die. killall checks
once per second if any of the killed processes still exist
and only returns if none are left. Note that killall may
wait forever if the signal was ignored, had no effect,
or if the process stays in zombie state.
Так что killall -w rogue_agents
будет достаточно.
Изменить: Для дополнительного вопроса бонуса в вашем редактировании ...
(об обновлении до kill -9
после определенного периода времени) Вы можете попробовать следующее:
(Я не могу попробовать это сам в данный момент, потому что у меня нет мошеннических процессов :)
timeout 8 killall -w rogue_agents
timeout 8 killall -9 -w rogue_agents
Это сделает killall
с ожиданием. timeout 8
заставляет его ждать только 8 секунд, после чего вы можете выполнить killall -9
. Я также заставил это ждать 8 секунд. Если killall -9
не будет выполнен через 8 секунд, то действительно что-то не так, и это потребует ручного исследования.
Конечно, вы можете встроить тест, чтобы выполнить вторую строку, только если после первоначального killall
после 8 секунд все еще присутствуют rogue_agents. И эхо с ошибкой, если процесс все еще активен после второго killall -9
.