Как убить процесс, который не умрет?

1

Что-то пошло не так с моим демоном "setroubleshootd" на производственном сервере. это займет много процессора и не умрет ни на что!

что я пробовал

sudo killall -9 setroubleshootd
sudo killall -9 <<pid>>
teslasimus
источник

Ответы:

3

К сожалению, лучшим решением является перезагрузка. Это застряло в ядре.

Вы можете попытаться снять его. Но это по своей сути рискованно. Это может привести к сбою ядра. Упорядоченная перезагрузка намного безопаснее.

В основном, как вы это предотвратить заедание, чтобы выяснить , что он делает ( с использованием таких инструментов , как ls /proc/<pid>/fd, topи так далее) и сделать что - то случится , чтобы изменить то , что он застрял на. Если он застрял в процессе, попробуйте убить этот процесс. Если он застрял в файле, попробуйте удалить этот файл. Это очень редко работает, но даже если это так, я считаю систему загрязненной и перезагружаю ее в любом случае.

Возникновение этого может привести к застреванию большего количества процессов.

Дэвид Шварц
источник
2

Не тот ответ, который вам нужен, но если процесс не умрет, вам, вероятно, не повезло - вам, вероятно, нужно перезагрузиться. (Замечу, что команда для уничтожения PID - kill -9 <>, а не killall.

Я подозреваю, что может быть очень небольшое подмножество событий, которые вы можете обойти, используя ключ Mafic_SysRQ, если он включен (например, монтирование NFS) - но я не слишком много играл с этим, и это для разработчиков - и, я подозреваю, обычно не включается по умолчанию. Больше информации здесь.

davidgo
источник