Зомби-процесс уже завершен и не может быть "убит" сигналом SIGKILL
(или любым другим сигналом). Это принципиальное отличие зомби от других состояний процессов.
Природа зомби-процесса:
Что происходит при попытке:
kill -9 <PID_зомби>
"kill: (<PID>) - No such process"
Создаем тестовый зомби-процесс:
python -c 'import os; os.fork() or os._exit(0)'; sleep 10
Находим его PID:
ps -eo pid,stat,cmd | grep -w Z
Пытаемся "убить":
kill -9 <PID> # Ничего не произойдет
kill -15 <PID> # Тоже не сработает
ps -o ppid= -p <ZOMBIE_PID>
kill -HUP <PPID> # SIGHUP перезапустит многие демоны
kill -TERM <PPID> # SIGTERM для graceful shutdown
Если PPID = 1:
# Перечитать конфигурацию init (systemd/sysvinit)
sudo kill -HUP 1
# Или перезапустить службу
sudo systemctl restart <service>
Ядро само очистит зомби, если:
signal(SIGCHLD, SIG_IGN);
Гарантия доставки статуса:
Исторические причины:
Запустите мониторинг в одном терминале:
watch -n 1 'ps -eo pid,ppid,stat,cmd | grep -w Z'
В другом терминале:
# Создаем зомби
perl -e 'fork(); exit; sleep 30'
# Пробуем убить (не сработает)
kill -9 <ZOMBIE_PID>
# Убиваем родителя (очистит зомби)
kill -15 <PPID>
Резюмируем:
Профессиональный совет: Не паникуйте при единичных зомби, но расследуйте массовое появление!