Я работаю над вычислительно тяжелым кодом, который - пока - много сбоев, но я все еще работаю над ним :) Когда он падает, я не могу закрыть окно GUI; Я должен открыть оболочку и убить -9 процесс.
Это процесс Java, и его легко найти:
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
Теперь это простая, но довольно механическая задача. Поэтому обычно я жду около 7-8 процессов, чтобы завершиться сбоем, а затем kill -9
каждый из них.
Я хочу сделать это автоматически. Я думаю, что должно быть легко передать некоторые команды, чтобы получить идентификатор (n-1) результатов ps aux | grep java
и убить его, но я понятия не имею, с чего начать.
Кто-нибудь может дать мне какие-нибудь советы?
killall java
не работал для меня по какой-то случайной причине, которую я не смог решить.-9
Параметр позаботилась об этом. Спасибо.java
.Откройте текстовый редактор и сохраните этот короткий сценарий bash в своем домашнем каталоге как killjava.
Затем
chmod u+x ~/killjava
в терминале, чтобы вы могли выполнить файл.Тогда вы можете просто позвонить
~/killjava
из терминала, и ваш Java-процесс будет мертвым. Вы можете подумать, на какие другие ресурсы это повлияет ваше уничтожение Java-процесса (например, на соединения с базой данных). Например, возможно,kill -15
было бы более уместным - см. Объяснение здесь .источник
Вот альтернативный подход, основанный на предыдущем ответе @ Дина.
Это использует jps для идентификации процесса Java.
MainClass - это класс в вашей запущенной Java-программе, который содержит метод main.
источник