Я запускаю Bacula на коробке RedHat. Время от времени, демон хранения bacula-sd перестает работать и становится <defunct>
.
[root@backup ~]# ps -ef | grep defunct | more
root 4801 29261 0 09:25 pts/5 00:00:00 grep defunct
root 5825 1 0 Oct18 ? 00:00:00 [bacula-sd] <defunct>
У меня вопрос, как я могу убить этот процесс? Его родителем является 1, который, насколько я знаю, является init, и я бы не хотел убивать процесс init, не так ли?
«Нормальное» убийство этого процесса не работает:
[root@backup ~]# kill -0 5825
[root@backup ~]# kill -9 5825
Помощь очень ценится!
Редактировать: работает
[root@backup ~]# lsof -p 5825
производит следующий вывод:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bacula-sd 5825 root cwd DIR 253,0 4096 3801089 /root
bacula-sd 5825 root rtd DIR 253,0 4096 2 /
bacula-sd 5825 root txt REG 253,0 2110599 368004 /usr/local/sbin/bacula-sd
bacula-sd 5825 root mem REG 253,0 75284 389867 /usr/lib/libz.so.1.2.3
bacula-sd 5825 root mem REG 253,0 46680 3604521 /lib/libnss_files-2.5.so
bacula-sd 5825 root mem REG 253,0 936908 369115 /usr/lib/libstdc++.so.6.0.8
bacula-sd 5825 root mem REG 253,0 125736 3606807 /lib/ld-2.5.so
bacula-sd 5825 root mem REG 253,0 1602128 3606885 /lib/libc-2.5.so
bacula-sd 5825 root mem REG 253,0 208352 3606892 /lib/libm-2.5.so
bacula-sd 5825 root mem REG 253,0 125744 3606887 /lib/libpthread-2.5.so
bacula-sd 5825 root mem REG 253,0 25940 3604573 /lib/libacl.so.1.1.0
bacula-sd 5825 root mem REG 253,0 15972 3604535 /lib/libattr.so.1.1.0
bacula-sd 5825 root mem REG 253,0 46548 3606908 /lib/libgcc_s-4.1.2-20080102.so.1
bacula-sd 5825 root mem REG 253,0 56422480 366368 /usr/lib/locale/locale-archive
bacula-sd 5825 root 0r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 1r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 2r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 3u CHR 9,128 6469 /dev/nst0
bacula-sd 5825 root 4u IPv4 1023380 TCP backup:bacula-sd (LISTEN)
bacula-sd 5825 root 5u IPv4 2693268 TCP backup:bacula-sd->backup:53957 (CLOSE_WAIT)
bacula-sd 5825 root 7u IPv4 3248683 TCP backup:bacula-sd->backup:57629 (CLOSE_WAIT)
bacula-sd 5825 root 8u IPv4 3250966 TCP backup:bacula-sd->backup:37650 (CLOSE_WAIT)
bacula-sd 5825 root 9u IPv4 3253908 TCP backup:bacula-sd->backup:37671 (CLOSE_WAIT)
Ответы:
Единственный способ, которым вы можете удалить процесс зомби / несуществующий, - это убить родителя. Поскольку родителем является init (pid 1), это также приведет к разрушению вашей системы.
Это в значительной степени оставляет вам два варианта.
Я бы пошел со вторым.
источник
init
как у него нет обработчика сигнала для SIGKILL. Смman 2 kill
.init
задач является сбор процессов зомби, поэтому, если вы подождете достаточно долго,init
очистите процессы зомби. Хотя большинствоinit
s должно устанавливать обработчикSIGCHLD
,SIG_IGN
который исправляет это.Вы можете попробовать перезапустить init:
В противном случае я бы не слишком волновался. Он не работает и не потребляет никаких ресурсов, он просто существует, чтобы ядро могло его запомнить.
источник
Проверьте, не было ли паники ядра,
Проверьте, находится ли процесс в "D" Unkillable sleep, где он находится в режиме ядра для какого-то syscall, который еще не вернулся (либо ядро упало, либо по какой-то другой причине) http://www.nabble.com/What-causes-an -unkillable-процесс - td20645581.html
источник
Если зомби имеет init в качестве родителя, то init перестал работать правильно. Одна из ролей init - убирать зомби. Если он этого не сделает, никто не сделает. Таким образом, единственным решением является перезагрузка. Если init не работает, перезагрузка может завершиться неудачей, поэтому я бы закрыл важные службы, синхронизировал файловую систему, а затем нажал кнопку питания.
источник
upstart
иsystemd
.Давайте сдерживать панику, не так ли? «Несуществующий» или «зомби» процесс - это не процесс . Это просто запись в таблице процессов с сохраненным кодом выхода. Таким образом, зомби не держит ресурсов, не берет циклов ЦП и не использует память, поскольку это не процесс . Не пытайтесь «убить» зомби-процессы. Как и их тезки, их нельзя убить, потому что они уже мертвы. Но в отличие от тех, кто питается мозгами, они абсолютно никому не вредят и не будут кусать другие процессы.
Не позволяйте зомби-процессам съесть ваш мозг. Просто игнорируй их.
источник
Похоже, у вас есть осиротевший процесс. Насколько я знаю, единственный способ убить их - перезагрузить коробку. У меня это происходило на моих серверах ESX (которые являются linux под капотом) время от времени, и перезагрузка хоста - это исправление (из поддержки VMware).
Я парень из Windows, поэтому возьмите это за то, что оно того стоит.
источник