Você pode querer usar -w
com killall
para isso:
-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.
Então killall -w rogue_agents
seria suficiente.
Editar : Para a pergunta de bônus adicional na sua edição ...
(sobre a atualização para um kill -9
após algum período de tempo especificado)
Você poderia tentar o seguinte:
(Eu não posso tentar isso sozinho no momento porque eu não tenho processos desonestos:)
timeout 8 killall -w rogue_agents
timeout 8 killall -9 -w rogue_agents
Isso fará um killall
com uma espera. O timeout 8
faz com que aguarde apenas 8 segundos, após o qual você pode fazer o killall -9
. Eu também fiz esse esperar 8 segundos. Se o killall -9
não for feito depois de 8 segundos, há realmente algo errado e seria necessário uma investigação manual.
Você poderia, é claro, criar um teste para executar apenas a segunda linha se ainda houver rogue_agents presentes após o killall
inicial após 8 segundos. E um eco com um erro se o processo ainda estiver ativo após o segundo killall -9
.