Dê uma olhada nesse comando:
ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill
isto irá procurar por todos os processos que contenham java e eclipse execluding, em seguida, matá-los
No meu servidor local, muitos processos Java estão em execução e, ao mesmo tempo, estou usando o Eclipse. Agora, quando eu preciso reiniciar meus processos (eu inicio os processos através de um script de shell), antes de cada início eu preciso matar os processos antigos através de:
Método 1: -
kill -9 $Pid
(para cada processo, um por um, o que consome tempo)
Método 2: -
killall -9 java
(para todos os processos - fácil, mas o Eclipse será morto desnecessariamente)
No caso do Método 2, o Eclipse também será eliminado, o que eu nunca quero. Existe alguma maneira de sair disso? Aposto que deve haver: P
Edit: Estou usando o Ubuntu 15.04.
Dê uma olhada nesse comando:
ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill
isto irá procurar por todos os processos que contenham java e eclipse execluding, em seguida, matá-los
Usando awk
ps ax | awk '/java/ && !/eclipse/ {system("kill ")}'
O comando elimina todos os java
processos, mas não o processo eclipse
.
Que tal:
pgrep -af 'java' | grep -Po '^[^ ]+(?!.*eclipse)' | xargs kill
pgrep -af 'java'
procura java
na linha de comando completa dos processos e lista-os
grep -Po '^[^ ]+(?!.*eclipse)'
procura entre os processos pesquisados e obtém os IDs do processo dos processos que não têm eclipse
em suas linhas de comando completas
xargs kill
eliminará os processos.
jps -m | grep -v eclipse | awk '{print }' | xargs -t kill
Use jps para ter certeza de que você está procurando apenas os comandos java e não todos os comandos que possuem java em seu caminho.
ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill
Tags command-line process