На некоторых виртуальных машинах кажется, что каждый сеанс ssh при выходе заканчивается как потерянный процесс. Я могу воспроизвести это, просто войдя в систему через ssh на машине, затем выполнив exit или ^ D, а затем используя ps -elf | grep defunct У меня есть еще один процесс ssh. Наш мониторинг часто использует ssh, так что к утру это сотни и сотни осиротевших зомби, и это примерно на 20 виртуальных машинах.
Вот пример вывода ps:
5 Z user 3197 1 0 80 0 - 0 exit 10:00 ? 00:00:00 [sshd] <defunct>
Я попытался сделать часть родительского (sshd), чтобы увидеть, вот результат, когда я выхожу из сеанса ssh:
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=24025, si_status=255, si_utime=0, si_stime=2} ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 255}], WNOHANG, NULL) = 24025
wait4(-1, 0x7ffc0d57901c, WNOHANG, NULL) = 0
rt_sigaction(SIGCHLD, NULL, {0x7f164fee7d70, [], SA_RESTORER, 0x7f164db34d40}, 8) = 0
rt_sigreturn() = -1 EINTR (Interrupted system call)
select(7, [3 4], NULL, NULL, NULL
Не то чтобы я действительно знаю, что там ищу, но я не понимаю, в чем может быть проблема. Любые идеи ? Я также вижу довольно много неработающих процессов nrpe, но перезапуск sshd по какой-то причине очищает и ssh, и nrpe-зомби.
Не знаю, может ли это быть актуально, но на этих машинах есть очень-очень медленные операции ввода-вывода, простое dd в несколько сотен мегабайт иногда занимает сотни секунд.
РЕДАКТИРОВАТЬ: как и просили, Ubuntu доверяет openssh 6.6p1-2ubuntu2.7
Таким образом, отключение UsePrivilegeSeparation в sshd_config, похоже, помогает. Не очень-то фанат этого, но это работает ..