Como posso matar um processo com base em seus argumentos de linha de comando?
killall
, pgrep
E pkill
parecem funcionar apenas com base no nome do processo.
Eu preciso que isso seja capaz de diferenciar entre vários aplicativos em execução dentro das máquinas virtuais Java, onde java
é o nome do processo para todos eles e o nome real do aplicativo pode ser encontrado observando os argumentos da linha de comando.
Isso pode ser feito manualmente com ps aux | grep myapp.jar
e, em seguida, eliminando manualmente o pid da saída, mas eu gostaria de um comando para fazer algo equivalente automaticamente.
bash: syntax error near unexpected token ';'
... Funciona em uma declaração de caso quando o e comercial é seguido por;;
... talvez você estiver usando um shell diferente (?)zsh
, que suporta a sintaxe que eu usei. Deixando-a trabalhos em ambos, porém, assim eu o retireizsh
usuários do que em qualquer outro lugar - eu apenas pareço encontrarzsh
usuários aqui.Você pode usar
htop
para exibir todos os processos atualmente em execução com seus argumentos de linha de comando e eliminar um processo selecionado.fonte
Substitua
argument
abaixo por uma expressão regular que deve muito a linha de comando completa de um processo:fonte
Se você não tem pkill ou qualquer outra coisa, use proc / [1-9] * / cmdline
fonte