Je travaille sur un code de calcul lourd qui - pour l'instant - plante beaucoup, mais je travaille toujours dessus :) Quand il plante, je ne peux pas fermer la fenêtre GUI; Je dois ouvrir un shell et tuer -9 le processus.
Il s'agit d'un processus Java et il est facile de trouver:
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
Maintenant, c'est une tâche facile mais assez mécanique. Donc normalement j'attends environ 7-8 processus de planter, puis kill -9
chacun d'eux.
Je veux le faire de manière automatique. Je pense qu'il devrait être facile de diriger certaines commandes pour prendre l'id des résultats (n-1) ps aux | grep java
et le tuer, mais je n'ai aucune idée par où commencer.
Quelqu'un peut-il me donner des indices?
killall java
ne fonctionnait pas pour moi pour une raison aléatoire que je ne pouvais pas résoudre. Le-9
paramètre s'est occupé de cela. Merci.java
.Ouvrez un éditeur de texte et enregistrez ce court script bash dans votre répertoire personnel sous le nom de 'killjava'
Puis
chmod u+x ~/killjava
dans un terminal pour pouvoir exécuter le fichier.Ensuite, vous pouvez simplement appeler à
~/killjava
partir d'un terminal et votre processus Java sera mort. Vous voudrez peut-être considérer quelles autres ressources votre destruction du processus Java de cette manière (comme les connexions à la base de données) sera affectée. Par exemple, cekill -15
serait peut -être plus approprié - voir l'explication ici .la source
Voici une approche alternative, basée sur la réponse précédente de @ Dean.
Cela utilise jps pour identifier le processus java.
MainClass est une classe de votre programme java en cours d'exécution qui contient la méthode principale.
la source