Я что-то не понимаю или это должно быть невозможно?
Все мои процессы-демоны находятся в состоянии зомби после того, как я попытался остановить службу управления:
# ps ax | grep controller
13768 pts/11 S+ 0:00 grep controller
26866 ? Zl 18:56 [controller] <defunct>
26870 ? Zl 18:57 [controller] <defunct>
26871 ? Zl 18:45 [controller] <defunct>
26876 ? Zl 13:17 [controller] <defunct>
26877 ? Zl 10:28 [controller] <defunct>
26880 ? Zl 18:18 [controller] <defunct>
26881 ? Zl 12:01 [controller] <defunct>
26882 ? Zl 18:18 [controller] <defunct>
И все же порты все еще открыты (хотя netstat не может найти имя процесса)
# netstat -tlpn | sort
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1180/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11882/httpd
tcp 0 0 10.0.0.50:8890 0.0.0.0:* LISTEN -
tcp 0 0 10.0.0.50:8891 0.0.0.0:* LISTEN -
tcp 0 0 10.0.0.50:8892 0.0.0.0:* LISTEN -
tcp 0 0 10.0.0.50:8896 0.0.0.0:* LISTEN -
tcp 0 0 10.0.0.50:8897 0.0.0.0:* LISTEN -
tcp 0 0 10.0.0.50:8900 0.0.0.0:* LISTEN -
Хотя lsof жестяная банка см. названия процессов
# lsof -i -n -P | grep 10.0.0.50 | grep LISTEN
controlle 26866 devuser 82u IPv4 323641 0t0 TCP 10.0.0.50:8890 (LISTEN)
controlle 26870 devuser 82u IPv4 323629 0t0 TCP 10.0.0.50:8891 (LISTEN)
controlle 26871 devuser 82u IPv4 323635 0t0 TCP 10.0.0.50:8892 (LISTEN)
controlle 26876 devuser 82u IPv4 323643 0t0 TCP 10.0.0.50:8896 (LISTEN)
controlle 26877 devuser 82u IPv4 323615 0t0 TCP 10.0.0.50:8897 (LISTEN)
controlle 26880 devuser 82u IPv4 323647 0t0 TCP 10.0.0.50:8900 (LISTEN)
controlle 26881 devuser 82u IPv4 323649 0t0 TCP 10.0.0.50:8901 (LISTEN)
controlle 26882 devuser 82u IPv4 323631 0t0 TCP 10.0.0.50:8902 (LISTEN)
И что самое странное, эти зомби-процессы, похоже, работают нормально:
# curl http://10.0.0.50:8892/status
{"status": "ok"}
Но kill
установка процессов, чтобы заставить их остановиться (мне нужно обновить их, следовательно, я пытаюсь остановить их в первую очередь) не имеет никакого эффекта.
Я, вероятно, могу перезагрузиться, чтобы убить процессы, чтобы обновить их, но было бы неплохо сначала выяснить, что WTF происходит здесь с непобедимыми запущенными мертвыми процессами ...
kill -9
истребит этих зомби.
Как правило, зомби случаются, когда родитель умирает, и дочерние процессы не завершаются должным образом родителем до того, как он завершится. Это происходит чаще, если вы kill
родительский, и он не закрывается изящно (и забирает с собой всех детей). Это похоже на сиротский процесс.
Процесс - это зомби во времени между завершением процесса и получением родительским статусом статуса выхода. Если зомби остается здесь долгое время, это указывает на недостаток в родителях этого зомби. Если родитель умирает, процесс наследуется процессом номер 1 (процесс init). init всегда должен очень быстро справляться с зомби. Если вы видите зомби с родительским pid 1, это означает, что что-то не так с init или ядром.