init не убивает зомби
У меня есть некоторые процессы зомби в моей системе. Я убил родителей этих зомби, надеясь, что init захватит и освободит ресурсы (множество сокетов в CLOSE_WAIT). Однако init не удаляет эти процессы из системы:
#ps ax
...
17051 ? Zl 8498:24 [impalad] <defunct>
...
# ps -o ppid= -p 17051
1
Есть ли способ удалить зомби без перезагрузки?
ОБНОВИТЬ:
я пробовал kill -s SIGCHLD 1
, Это не помогло.
1 ответ
Вы не можете убить несуществующий процесс. Другими словами:
http://www.linuxquestions.org/questions/suse-opensuse-60/howto-kill-defunct-processes-574612/
Вы не можете убить несуществующий процесс (он же зомби), так как он уже мертв. Это не требует никаких ресурсов, так что это не страшно, но если вы действительно хотите, чтобы он исчез из таблицы процессов, вам нужно, чтобы родительский процесс его пожинал. "pstree" должен дать вам иерархию процессов, а "kill -1 " иногда достаточно для работы.
Поскольку родительский pid вашего процесса - init (1), вы ничего не можете сделать, кроме перезагрузки.
https://unix.stackexchange.com/questions/11172/how-can-i-kill-a-defunct-process-whose-parent-is-init
Вы не можете убить (зомби) процесс, так как он уже мертв. Единственная причина, по которой система поддерживает зомби-процессы, - это сохранение статуса выхода для родительского сбора. Если родитель не получает статус выхода, то процессы зомби останутся навсегда. Единственный способ избавиться от этих зомби-процессов - это убить родителя. Если родителем является init, вы можете только перезагрузиться.
Я не могу проверить это, но этот парень говорит, что вы можете избавиться от несуществующего процесса следующим образом:
Что такое процесс зомби и как мне его убить?
There is already an accepted answer, however: you CAN kill the zombie process. Attach with the debugger to the parent process and call waitpid function. E.g.: - let's assume that the parent has PID=100, the zombie process has PID=200
$ gdb -p 100
(gdb) call waitpid(200, 0, 0)
(gdb) quit
У этого парня была проблема с несуществующим процессом, который, казалось, продолжал работать. Я не понимаю, но вот ссылка. В этом случае kill -9 pid
заявлено на работу.
Зомби-процессы еще живы и работают нормально, но не могут быть убиты?
Здесь вы можете увидеть больше об этой проблеме.
BR