J'utilise Bacula sur une boîte RedHat. De temps en temps, le démon de stockage bacula-sd cesse de fonctionner et devient <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>
Ma question est, comment puis-je tuer ce processus? Son parent est 1, qui est init, pour autant que je sache, et je ne voudrais pas tuer le processus d'initialisation, n'est-ce pas?
Tuer ce processus normalement ne fonctionne pas:
[root@backup ~]# kill -0 5825
[root@backup ~]# kill -9 5825
L'aide est grandement appréciée!
Modifier: en cours d'exécution
[root@backup ~]# lsof -p 5825
produit la sortie suivante:
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)
La seule façon de supprimer le processus zombie/défunt serait de tuer le parent. Étant donné que le parent est init (pid 1), cela endommagerait également votre système.
Cela vous laisse à peu près deux options.
J'irais avec le second.
Vérifiez s'il y a eu une panique du noyau,
# dmesg |tail
Vérifiez si le processus est en veille "D" Unkillable, où il est en mode noyau pour certains appels système qui ne sont pas encore retournés (oups du noyau, ou pour toute autre raison) http://www.nabble.com/What -causes-an-unkillable-process - td20645581.html
Si un zombie a init comme parent, alors init a cessé de fonctionner correctement. L'un des rôles de init est de nettoyer les zombies. S'il ne le fait pas, personne d'autre ne le fera. La seule solution est donc de redémarrer. Si l'initialisation est interrompue, un redémarrage peut échouer, donc j'arrêterais des services importants, synchroniserais le système de fichiers puis appuierais sur le bouton d'alimentation à la place.
Vous pouvez essayer de redémarrer init:
# telinit u
Sinon, je ne m'inquiéterais pas trop. Il ne fonctionne pas et ne prend aucune ressource et il est juste là pour que le noyau s'en souvienne.
Gardons la panique, d'accord? Un processus "défunt" ou "zombie" n'est pas un processus. Il s'agit simplement d'une entrée dans la table de processus, avec un code de sortie enregistré. Ainsi, un zombie ne détient aucune ressource, ne prend aucun cycle CPU et n'utilise aucune mémoire, car ce n'est pas un processus. N'obtenez pas tout bizarre et démangeant en essayant de "tuer" les processus zombies. Tout comme leurs homonymes, ils ne peuvent pas être tués, car ils sont déjà morts. Mais contrairement au type mangeur de cerveau, ils ne nuisent absolument à personne et ne mordront pas les autres processus.
Ne laissez pas les processus zombies dévorer votre cerveau. Ignore les.
On dirait que vous avez un processus orphelin. Pour autant que je sache, la seule façon de les tuer serait de redémarrer la box. J'ai eu ce problème sur mes serveurs ESX (qui sont sous Linux sous le capot) de temps en temps et un redémarrage de l'hôte est le correctif (du support VMware).
Je suis un gars Windows alors prenez ça pour ce que ça vaut.