Ich arbeite an einem rechenintensiven Code, der vorerst häufig abstürzt, aber ich arbeite immer noch daran :) Wenn er abstürzt, kann ich das GUI-Fenster nicht schließen. Ich muss eine Shell öffnen und den Prozess beenden.
Es ist ein Java-Prozess und leicht zu finden:
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
Jetzt ist es einfach, aber eine ziemliche mechanische Aufgabe. Normalerweise warte ich, bis ungefähr 7-8 Prozesse zum Absturz gebracht sind, und dann kill -9
jeder von ihnen.
Ich möchte dies automatisch tun. Ich denke, dass es einfach sein sollte, einige Befehle zu übermitteln, um die ID der (n-1) -Ergebnisse zu ermitteln ps aux | grep java
und zu töten, aber ich habe keine Ahnung, wo ich anfangen soll.
Kann mir jemand einen Tipp geben?
killall java
Ich habe aus irgendeinem Grund, den ich nicht lösen konnte, nicht für mich gearbeitet. Der-9
Parameter sorgte dafür. Vielen Dank.java
.Öffne einen Texteditor und speichere dieses kurze Bash-Skript in deinem Home-Verzeichnis als 'killjava'
Dann
chmod u+x ~/killjava
in einem Terminal, damit Sie die Datei ausführen können.Dann können Sie einfach
~/killjava
von einem Terminal aus anrufen, und Ihr Java-Prozess ist völlig erledigt. Möglicherweise möchten Sie überlegen, welche anderen Ressourcen das Beenden des Java-Prozesses auf diese Weise (z. B. Datenbankverbindungen) beeinflusst. Zum Beispielkill -15
wäre vielleicht besser geeignet - siehe die Erklärung hier .quelle
Hier ist ein alternativer Ansatz, der auf der früheren Antwort von @ Dean basiert.
Dies verwendet JPS , um den Java-Prozess zu identifizieren.
MainClass ist eine Klasse in Ihrem laufenden Java-Programm, die die main-Methode enthält.
quelle