Il y a 5 procédés qui ne peuvent pas être tués par kill -9 $PID
et exécuter cat /proc/$PID/cmdline
accrochera la session en cours. Peut-être qu'ils sont des processus zombies.
Exécuter ps -ef or htop
accrochera également la session en cours. Mais top
et ps -e
fonctionne bien.
Il semble donc qu'il y ait deux problèmes que le système de fichiers ne répond pas.
Il s'agit d'une machine de production exécutant des machines virtuelles, le redémarrage n'est pas une option.
Les identifiants de processus suivants ne fonctionnent pas: 16181 16765 5985 7427 7547
Le parent de ces processus est init
├─collectd(16765)─┬─{collectd}(16776)
│ ├─{collectd}(16777)
│ ├─{collectd}(16778)
│ ├─{collectd}(16779)
│ ├─{collectd}(16780)
│ └─{collectd}(16781)
├─collectd(28642)───{collectd}(28650)
├─collectd(29868)─┬─{collectd}(29873)
│ ├─{collectd}(29874)
│ ├─{collectd}(29875)
│ └─{collectd}(29876)
Et l'un des processus QEMU ne fonctionne pas
|-qemu-system-x86(16181)-+-{qemu-system-x86}(16232)
| |-{qemu-system-x86}(16238)
| |-{qemu-system-x86}(16803)
| |-{qemu-system-x86}(17990)
| |-{qemu-system-x86}(17991)
| |-{qemu-system-x86}(17992)
| |-{qemu-system-x86}(18062)
| |-{qemu-system-x86}(18066)
| |-{qemu-system-x86}(18072)
| |-{qemu-system-x86}(18073)
| |-{qemu-system-x86}(18074)
| |-{qemu-system-x86}(18078)
| |-{qemu-system-x86}(18079)
| |-{qemu-system-x86}(18086)
| |-{qemu-system-x86}(18088)
| |-{qemu-system-x86}(18092)
| |-{qemu-system-x86}(18107)
| |-{qemu-system-x86}(18108)
| |-{qemu-system-x86}(18111)
| |-{qemu-system-x86}(18113)
| |-{qemu-system-x86}(18114)
| |-{qemu-system-x86}(18119)
| |-{qemu-system-x86}(23147)
| `-{qemu-system-x86}(27051)
Vous n'avez pas de zombies. cat /proc/$PID/cmdline
n'aurait aucun problème avec un zombie. Si kill -9
ne tue pas le programme , cela signifie que le programme fait une opération d'E/S ininterruptible. Cela indique généralement l'une des trois choses:
Des utilitaires tels que ps
peuvent accrocher s'ils essaient de lire des informations telles que le trajet exécutable du processus que le noyau prévoit l'une des raisons susmentionnées.
Essayer cat /proc/16181/syscall
Pour voir quel processus 16181 fait. Cela peut ne pas fonctionner ou ne pas fonctionner en fonction de la distance de votre système.
Si le problème est un système de fichiers de réseau, vous pourrez peut-être forcer la démontie, ou pour le faire venir en ligne. Si le problème est un bogue de noyau ou de matériel, ce que vous pouvez faire dépendra de la nature du bogue. Le redémarrage (et la mise à niveau vers un noyau fixe ou le remplacement du matériel cassé) est fortement recommandé.
Les autres réponses supposent que ce sont des processus zombies. Un processus de zombie est un processus terminé en cours d'exécution, mais est toujours dans la table de processus au cas où le parent souhaite connaître le statut de sortie. Celles-ci sont normales, et init
nettoyera automatiquement les processus zombies qui lui sont attribués.
Les processus zombies ne doivent jamais faire pendre quoi que ce soit, il semble donc que cela ne soit pas votre problème. Si c'est un appel système ou un pilote suspendu, le processus peut être dans un état ininterromptable. Il y a une bonne explication ici .
Vous ne pouvez tuer qu'un zombie en tuant son parent. Un processus de zombie a publié toutes ses ressources et attend que son statut de sortie soit ramassé par son parent. Cela devient un zombie lorsque le parent n'exécute pas un wait
pour ramasser le statut de sortie de son enfant. Lorsque vous tuez le parent de Zombie, init
reprend le statut de sortie et Zombie meurt enfin.