Браузер Chrome не реагировал, и я попытался его убить, но вместо исчезновения процесс имел <defunct>
справа от него и не был убит:
Что такое <defunct>
для процесса и почему его не убивают?
Браузер Chrome не реагировал, и я попытался его убить, но вместо исчезновения процесс имел <defunct>
справа от него и не был убит:
Что такое <defunct>
для процесса и почему его не убивают?
Из вашего вывода мы видим «несуществующий», что означает, что процесс либо выполнил свою задачу, либо был поврежден, либо убит, но его дочерние процессы все еще запущены или этот родительский процесс контролирует свой дочерний процесс. Чтобы убить этот процесс, kill -9 PID не работает. Вы можете попытаться убить их с помощью этой команды, но она будет показывать это снова и снова.
Определите, который является родительским процессом этого несуществующего процесса и убивает его. Чтобы узнать это, выполните команду:
ps -ef | grep defunct
UID PID PPID C STIME TTY TIME CMD
1000 637 27872 0 Oct12 ? 00:00:04 [chrome] <defunct>
1000 1808 1777 0 Oct04 ? 00:00:00 [zeitgeist-datah] <defunct>
Затем kill -9 637 27872
, затем проверьте, что несуществующий процесс исчез на ps -ef | grep defunct
.
Ручная страница ps (1) говорит :
Процессы с надписью
<defunct>
являются мертвыми процессами (так называемые "зомби" ) которые остаются, потому что их родитель не уничтожил их должным образом. Эти процессы будут уничтоженыinit(8)
, если родительский процесс выходов.
Вы не можете убить его, потому что он уже мертв. Осталось только запись в таблице процессов :
В Unix и Unix-подобных компьютерных операционных системах, зомби-процесс или несуществующий процесс - это процесс, который завершил выполнение, но все еще имеет запись в таблице процессов. Эта запись по-прежнему необходима, чтобы родительский процесс, чтобы прочитать статус выхода своего ребенка.
Нет вреда в разрешении таких процессов, если их много. Зомби в конечном итоге получают свою родительскую компанию (вызывая wait(2)
). Если исходный родитель не получил его до своего собственного выхода, то процесс init
( pid == 1
) делает это через некоторое время. процесс Zombie - это просто:
Процесс, который завершился и удаляется, когда его статус выхода было сообщено другому процессу, который ждет этого процесса для завершения.