Pracuję nad ciężkim obliczeniowo kodem, który - na razie - bardzo ulega awarii, ale nadal nad nim pracuję :) Kiedy się zawiesza, nie mogę zamknąć okna GUI; Muszę otworzyć powłokę i zabić proces -9.
Jest to proces Java i łatwo go znaleźć:
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
Teraz jest to łatwe, ale dość mechaniczne zadanie. Zwykle więc czekam na awarie około 7-8 procesów, a następnie kill -9
każdy z nich.
Chcę to zrobić automatycznie. Wydaje mi się, że łatwe powinno być przesyłanie niektórych poleceń w celu pobrania identyfikatora wyników (n-1) ps aux | grep java
i zabicia go, ale nie mam pojęcia, od czego zacząć.
Czy ktoś może dać mi jakieś wskazówki?
killall java
nie działał dla mnie z jakiegoś przypadkowego powodu, którego nie byłem w stanie rozwiązać.-9
Parametr zadbał o to. Dziękuję Ci.java
.Otwórz edytor tekstu i zapisz ten krótki skrypt bash w swoim katalogu domowym jako „killjava”
Następnie
chmod u+x ~/killjava
w terminalu, aby można było wykonać plik.Następnie możesz po prostu zadzwonić
~/killjava
z terminala, a proces Java będzie zupełnie martwy. Możesz zastanowić się, jakie inne zasoby wpłyną na twoje zabicie procesu Java w ten sposób (np. Połączenia z bazą danych). Na przykład być możekill -15
byłoby bardziej odpowiednie - patrz wyjaśnienie tutaj .źródło
Oto alternatywne podejście oparte na wcześniejszej odpowiedzi @ Dean.
Używa jps do identyfikacji procesu Java.
MainClass to klasa uruchomionego programu Java, która zawiera główną metodę.
źródło