«убить Java» не убивает Java


8

Я сейчас запускаю Debian, и иногда мне нужно вручную убить Java из терминала, но когда я пытаюсь kill #pid#или pkill javaничего не происходит. Нет вывода на консоль (нормально, это нормально), и Java все еще работает (не нормально). Единственный способ убить его - перезагрузить компьютер. Какие-либо предложения?


то, что вы ищете,killall java
roottraveller

Ответы:


13

Может быть, это игнорирование сигнала по какой-то причине. Ты пробовал kill -9?

Но обратите внимание: kill -9не может быть проигнорировано или поймано в ловушку. Если процесс видит сигнал 9, у него нет другого выбора, кроме как умереть. Он больше ничего не может сделать - даже изящно не почистить свои файлы.


1
kill -9как правило, в крайнем случае. Это лучше , чтобы попытаться kill -11затем kill -6первым. Если kill -11не убивает это, kill -6обычно делает. Попробуйте kill -11сначала, подождите несколько секунд, и, если процесс еще жив, попробуйте kill -6. Подождите несколько секунд, и если он все еще не мертв, вы можете попробовать kill -9.
laebshade

2

Мне иногда приходится убивать -9. Однако, если это происходит регулярно, вы должны устранить проблему, которая его вызывает. Убить -9 означает, что что-то не так.

В общем, я вижу, что это происходит только тогда, когда вы попадаете в серьезный режим трэша памяти, что означает, что вам либо нужно больше системной памяти, либо вы даете java слишком много памяти при запуске. Чаще, тем не менее, особенно если вы разрабатываете что-то, вы можете увидеть это, когда у вас заканчивается память «PermGen».

http://www.brokenbuild.com/blog/2006/08/04/java-jvm-gc-permgen-and-memory-options/

В любом случае, это может быть связано с ошибками OutOfMemory.


Я думаю, что это так. Я еще не пробовал, но моя машина, на которой проблема, имеет 1 ГБ оперативной памяти, а Java выделяет 512 МБ.
Симил

1
(Слишком долгая задержка для этого комментария ...) Если вы разрабатываете Java, 1 гигабайт оперативной памяти почти не собирается ее сокращать. Укуси пулю и улучшись как минимум до 2, стреляй на 4+.
2010 года

0

Прочитайте это , это и это . Это поможет вам понять, как работает команда kill.

Вы можете искать Java PID с:

pgrep -l java или pidof java

Может быть, у вас есть процессы зомби в системе, в этом случае читайте здесь


0

Попробуй это:

kill -9 $(pgrep Java)

pgrepвозвращает PID процесса с именем «Java» и killубивает его


По сути это должно быть так же, как и то pkill, что он уже использует
Майкл Мрозек

-1

Это должно работать:

killall -9 Java

это действительно правильный ответ. Пожалуйста, оставьте свой комментарий, если проголосуете.
roottraveller
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.