Я запускаю 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), это также приведет к остановке вашей системы.
Это в значительной степени оставляет вам два варианта.
Я бы пошел со вторым.
Проверьте, не было ли паники ядра,
# dmesg |tail
Проверьте, находится ли процесс в "D" неубиваемом сне, где он находится в режиме ядра для какого-то системного вызова, который еще не вернулся (либо ядро, либо другая причина) http://www.nabble.com/What-causes-an-unkillable-process--td20645581.html
Если у зомби в качестве родителя есть init, значит, init перестал работать. Одна из функций init - убирать зомби. Если он этого не сделает, никто другой не сделает этого. Так что единственное решение - перезагрузка. Если init не работает, перезагрузка может завершиться ошибкой, поэтому я бы отключил важные службы, синхронизировал файловую систему, а затем вместо этого нажал кнопку питания.
Вы можете попробовать перезапустить init:
# telinit u
В противном случае я бы особо не волновался. Он не работает и не требует никаких ресурсов, а просто существует, чтобы ядро могло его запомнить.
Давайте подавим панику, ладно? "Несуществующий" или "зомби" процесс это не процесс. Это просто запись в таблице процессов с сохраненным кодом выхода. Таким образом, зомби не имеет ресурсов, не требует циклов процессора и памяти, поскольку это не процесс. Не делайте всех странных и зудящих, пытаясь «убить» зомби-процессы. Как и их тезки, их нельзя убить, поскольку они уже мертвы. Но в отличие от тех, которые поедают мозги, они никому не вредят и не кусают другие процессы.
Не позволяйте зомби-процессам съесть ваш мозг. Просто игнорируйте их.
Похоже, у вас осиротевший процесс. Насколько я знаю, единственный способ убить их - это перезагрузить компьютер. У меня это происходило время от времени на моих серверах ESX (которые являются Linux под капотом), и перезагрузка хоста - это исправление (от поддержки VMware).
Я парень Windows, так что принимайте это как следует.
У меня только что возникла эта проблема, когда я запускаю Wine Kindle, и окно Kindle не закрывается после того, как я убиваю все процессы Wine, если я запускаю ps, есть [Kindle.exe] <defunct>
процесс, родительский элемент которого равен 1 (ps.tree - это самодельный скрипт для отображения дерева процессов):
$ps.tree 21323 1 0 02:44:47 /lib/systemd/systemd --system --deserialize 119 21323 1 01:50:44 [Kindle.exe] <defunct>
Я наконец убил [Kindle.exe]
процесс и окно-призрак, убив всех потоки этого процесса, выполнив эту команду:
cd /proc/21323/task kill *