Używam Baculi na pudełku RedHat. Od czasu do czasu demon pamięci bacula-sd przestaje działać i staje się <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>
Moje pytanie brzmi: jak mogę zabić ten proces? Jego rodzic ma 1, czyli init, o ile wiem, i nie chciałbym zabijać procesu inicjacji, prawda?
„Normalnie” zabicie tego procesu nie działa:
[root@backup ~]# kill -0 5825
[root@backup ~]# kill -9 5825
Bardzo doceniamy pomoc!
Edycja: uruchomiona
[root@backup ~]# lsof -p 5825
produkuje następujące dane wyjściowe:
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)
Odpowiedzi:
Jedynym sposobem na usunięcie zombie / nieistniejącego procesu byłoby zabicie rodzica. Ponieważ rodzicem jest init (pid 1), spowoduje to również uszkodzenie twojego systemu.
To prawie pozostawia dwie opcje.
Poszedłbym z drugim.
źródło
init
ponieważ nie ma on obsługi sygnału dla SIGKILL. Zobaczyćman 2 kill
.init
zadań jest zbieranie procesów zombie, więc jeśli zaczekasz wystarczająco długo,init
oczyść procesy zombie. Chociaż większośćinit
s powinna ustawić program obsługiSIGCHLD
na be,SIG_IGN
który to naprawia.Możesz spróbować zrestartować init:
W przeciwnym razie nie martwiłbym się zbytnio. Nie działa i nie zużywa żadnych zasobów, a jest po to, aby jądro mogło je zapamiętać.
źródło
Sprawdź, czy wystąpiła panika jądra,
Sprawdź, czy proces znajduje się w stanie uśpienia „D”, w którym znajduje się w trybie jądra dla jakiegoś połączenia systemowego, które jeszcze nie powróciło (albo jądro przestało działać, albo z innego powodu) http://www.nabble.com/What-causes-an -unkillable-process - td20645581.html
źródło
Jeśli zombie ma init jako jego rodzic, wówczas init przestał działać poprawnie. Jedną z ról init jest usuwanie zombie. Jeśli tego nie zrobi, nikt inny tego nie zrobi. Więc jedynym rozwiązaniem jest ponowne uruchomienie. Jeśli init jest uszkodzony, ponowne uruchomienie może się nie powieść, więc zamknę ważne usługi, zsynchronizuj system plików, a następnie naciśnij przycisk zasilania.
źródło
upstart
isystemd
.Zatrzymajmy panikę, prawda? Proces „zlikwidowany” lub „zombie” nie jest procesem . Jest to po prostu wpis w tabeli procesów z zapisanym kodem wyjścia. Zatem zombie nie ma zasobów, nie bierze cykli procesora i nie zużywa pamięci, ponieważ nie jest to proces . Nie bądź dziwny i swędzący, próbując „zabić” procesy zombie. Podobnie jak ich imienniki, nie można ich zabić, ponieważ już nie żyją. Ale w przeciwieństwie do osób jedzących mózg, nie szkodzą absolutnie nikomu i nie ugryzą innych procesów.
Nie pozwól, aby procesy zombie zjadły twój mózg. Po prostu ich ignoruj.
źródło
Wygląda na to, że masz osierocony proces. O ile wiem, jedynym sposobem na zabicie ich byłoby ponowne uruchomienie urządzenia. Od czasu do czasu zdarzało mi się to na moich serwerach ESX (które są linux pod maską), a ponowne uruchomienie hosta jest naprawą (z obsługi VMware).
Jestem facetem z Windows, więc weź to za swoją wartość.
źródło