Ich lasse Bacula auf einer RedHat-Box laufen. Von Zeit zu Zeit funktioniert der Speicher-Daemon bacula-sd nicht mehr und wird <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>
Meine Frage ist, wie kann ich diesen Prozess beenden? Sein Elternteil ist 1, was meines Wissens nach init ist, und ich würde den init-Prozess nicht abbrechen wollen, oder?
"Normalerweise" funktioniert das Beenden dieses Prozesses nicht:
[root@backup ~]# kill -0 5825
[root@backup ~]# kill -9 5825
Hilfe wird sehr geschätzt!
Bearbeiten: Laufen
[root@backup ~]# lsof -p 5825
erzeugt die folgende Ausgabe:
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)
Antworten:
Die einzige Möglichkeit, den Zombie- / Abbruchprozess zu entfernen, besteht darin, die Eltern zu töten. Da das übergeordnete Element init (pid 1) ist, würde dies auch Ihr System herunterfahren.
Damit haben Sie zwei Möglichkeiten.
Ich würde mit dem zweiten gehen.
quelle
init
da es keinen Signalhandler für SIGKILL gibt. Sehenman 2 kill
.init
Aufgaben darin besteht, Zombieprozesse zu ernten. Wenn Sie also lange genug warten,init
sollten Sie die Zombieprozesse bereinigen. Die meisteninit
s sollten jedoch den HandlerSIGCHLD
auf be setzen,SIG_IGN
der dies behebt.Sie könnten versuchen, init neu zu starten:
Sonst würde ich mir keine Sorgen machen. Es läuft nicht und nimmt keine Ressourcen in Anspruch und ist nur da, damit sich der Kernel daran erinnern kann.
quelle
Überprüfen Sie, ob es eine Kernel-Panik gab,
Überprüfen Sie, ob sich der Prozess im "D" -Unkillable-Sleep-Modus befindet, in dem er sich für einen noch nicht zurückgegebenen Systemaufruf im Kernel-Modus befindet (entweder Kernel-Ups oder aus einem anderen Grund). Http://www.nabble.com/What-causes-an -unkillable-process - td20645581.html
quelle
Wenn ein Zombie init als übergeordnetes Element hat, funktioniert init nicht mehr ordnungsgemäß. Eine der Aufgaben von init ist es, Zombies zu bereinigen. Wenn es das nicht tut, wird es niemand anderes tun. Die einzige Lösung ist also ein Neustart. Wenn init kaputt ist, schlägt ein Neustart möglicherweise fehl. Daher habe ich wichtige Dienste heruntergefahren, das Dateisystem synchronisiert und stattdessen den Ein- / Ausschalter gedrückt.
quelle
upstart
undsystemd
.Lassen Sie uns die Panik lindern, sollen wir? Ein "nicht mehr existierender" oder "Zombie" -Prozess ist kein Prozess . Es handelt sich lediglich um einen Eintrag in der Prozesstabelle mit einem gespeicherten Beendigungscode. Daher hält ein Zombie keine Ressourcen, benötigt keine CPU-Zyklen und verwendet keinen Speicher, da es sich nicht um einen Prozess handelt . Versuche nicht, alle Zombie-Prozesse zu "töten". Genau wie ihre Namensvetter können sie nicht getötet werden, da sie bereits tot sind. Aber im Gegensatz zu den gehirnfressenden schädigen sie absolut niemanden und beißen andere Prozesse nicht.
Lass nicht zu, dass Zombieprozesse dein Gehirn fressen. Ignorier Sie einfach.
quelle
Scheint, als hättest du einen verwaisten Prozess. Soweit ich weiß, wäre die einzige Möglichkeit, diese zu töten, ein Neustart der Box. Ich habe dies von Zeit zu Zeit auf meinen ESX-Servern (die Linux unter der Haube sind) erlebt und ein Neustart des Hosts ist das Update (vom VMware-Support).
Ich bin ein Windows-Typ, also nimm das für das, was es wert ist.
quelle