Назад | Перейти на главную страницу

Как убить процесс в Linux, если kill -9 не действует

Я полагаю, что kill -9 по-прежнему просто посылает сигнал процессу. Если процесс не работает должным образом, я могу предположить, что kill -9 не даст никакого эффекта. Действительно, сегодня я впервые увидел, что kill -9 не действует при отправке в застрявший процесс ruby. Итак, вот мой вопрос: есть ли более жесткий способ убить процесс?

Вы должны перезагрузить машину. Если kill -9 не убивает процесс, это означает, что он застрял в ядре. Если вы не сможете выяснить, на чем он застрял, и отклеить его, вы ничего не сможете сделать. Причина, по которой он застревает, заключается в том, что он чего-то ждет, а логика, необходимая, чтобы полностью прекратить ожидание, просто не существует.

(Выше предполагается, что процесс уже был изменен на init. В противном случае его родитель может держать его. Возможно, вам придется убить его родителя.)

Каждый раз, когда у меня есть задание, которое застревает и сигналы 9 или 15 не убивают его, я отправляю ему сигнал 30 (SIGPWR), и почти каждый раз он очищает его. Я не могу вспомнить, когда отправка сигнала об отключении электроэнергии не работала.

Да есть, перезагрузка ...

Обычно, хотя и не в состоянии убить -9 процесс не является такой проблемой, поскольку эти процессы не сильно влияют на вашу систему, они, вероятно, просто зомби. Единственный раз, когда мне потребовалось перезагрузить компьютер, чтобы избавиться от него, это когда он «занимал» порт tcp, который мне нужно было использовать.