Que tal ...?
pkill java
pkill(1)
(também killall(1)
no Linux) funciona como kill(1)
, mas envia o sinal para todos os processos com o (s) nome (s) especificado (s), e não PIDs. Existem outras formas de combinar processos também - verifique a man page!
Na verdade, especificamente porque estamos falando de Java, eu faria o seguinte para automatizar as coisas corretamente:
pgrep java >/dev/null && (pkill java; sleep 5)
pgrep java >/dev/null && (pkill -9 java; sleep 5)
if pgrep java >/dev/null; then
echo "Whoops, java processes still running. Bailing out."
exit 1
fi
Isto irá verificar se algum processo java está sendo executado, enviará o sinal SIGTERM
e aguardará 5 segundos. Se ainda houver processos em execução, ele enviará o sinal SIGKILL
e esperará outros 5 segundos. Se houver processos ainda em execução, ele interromperá a execução do script retornando um código de saída de 1.
Atualização: alterou a resposta para usar pgrep(1)
e pkill(1)
em vez de pidof(1)
e killall(1)
.