Estou trabalhando em um código computacionalmente pesado que - por enquanto - trava muito, mas ainda estou trabalhando nele :) Quando ele trava, não consigo fechar a janela da GUI; Eu tenho que abrir um shell e matar -9 o processo.
É um processo Java e é fácil de encontrar:
nkint@zefiro:~$ ps aux | grep java
nkint 2705 16.6 1.0 460928 43680 ? Sl 12:23 0:08 /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java -Djava.library.path=something something
nkint 2809 0.0 0.0 4012 776 pts/0 S+ 12:24 0:00 grep --color=auto java
nkint@zefiro:~$ kill -9 2705
Agora é fácil, mas é uma tarefa bastante mecânica. Normalmente, espero por cerca de 7-8 processos travarem e, em seguida, kill -9
cada um deles.
Eu quero fazer isso de forma automática. Eu acho que deve ser fácil canalizar alguns comandos para pegar o id dos resultados (n-1) ps aux | grep java
e matá-lo, mas não tenho nenhuma idéia por onde começar.
Alguém pode me dar alguma dica?
killall java
não estava funcionando para mim por algum motivo aleatório que não consegui resolver. O-9
parâmetro cuidou disso. Obrigado.java
.Abra um editor de texto e salve esse script bash curto no diretório inicial como 'killjava'
Em seguida,
chmod u+x ~/killjava
em um terminal para que você possa executar o arquivo.Então você pode simplesmente ligar a
~/killjava
partir de um terminal e seu processo Java estará completamente morto. Você pode considerar quais outros recursos sua eliminação do processo Java dessa maneira (como conexões com o banco de dados) serão afetados. Por exemplo, talvezkill -15
seja mais apropriado - veja a explicação aqui .fonte
Aqui está uma abordagem alternativa, baseada na resposta anterior de @ Dean.
Isso usa jps para identificar o processo java.
MainClass é uma classe no seu programa java em execução que contém o método principal.
fonte