Hay 5 procesos que no se pueden eliminar kill -9 $PID
y la ejecución cat /proc/$PID/cmdline
bloqueará la sesión actual. Tal vez son procesos zombies.
La ejecución ps -ef or htop
también colgará la sesión actual. Pero top
y ps -e
están funcionando bien.
Parece que hay dos problemas que el sistema de archivos no responde.
Esta es una máquina de producción que ejecuta máquinas virtuales, por lo que reiniciar no es una opción.
Los siguientes ID de procesos no funcionan: 16181 16765 5985 7427 7547
El padre de estos procesos es 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)
Y uno de los procesos qemu no funciona
|-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)
linux
process
kill
zombie-process
Sam Stoelinga
fuente
fuente
/usr/bin/strace ps -ef
para ver dóndeps -ef
se cuelga exactamente su .ps -el
Funciona y en qué estado se encuentran estos procesos?Respuestas:
No tienes zombies.
cat /proc/$PID/cmdline
No tendría ningún problema con un zombie. Sikill -9
no mata el programa , significa que el programa está haciendo una operación de E / S ininterrumpida. Eso generalmente indica una de tres cosas:Las utilidades como
ps
pueden bloquearse si intentan leer alguna información, como la ruta ejecutable del proceso, que el núcleo no proporciona por una de las razones anteriores.Intenta
cat /proc/16181/syscall
ver qué proceso está haciendo 16181. Esto puede o no funcionar dependiendo de qué tan lejos esté su sistema.Si el problema es un sistema de archivos de red, es posible que pueda desmontarlo por la fuerza o ponerlo en línea. Si el problema es un error de kernel o hardware, lo que puede hacer dependerá de la naturaleza del error. Se recomienda encarecidamente reiniciar (y actualizar a un kernel fijo, o reemplazar el hardware dañado).
fuente
Las otras respuestas suponen que estos son procesos zombies. Un proceso zombie es un proceso que ha terminado de ejecutarse, pero todavía está en la tabla de procesos en caso de que el padre quiera saber el estado de salida. Estos son normales y
init
limpiarán automáticamente los procesos zombies que se le asignen.Los procesos de zombis nunca deberían hacer que algo se cuelgue, por lo que parece que ese no es su problema. Si se trata de una llamada del sistema o un controlador bloqueado, el proceso puede estar en un estado ininterrumpido. Hay una buena explicación aquí .
fuente
fork
tener éxito (cuandonrpoc
se alcanza el nivel difícil ) porque todavía ocupan espacio en la tabla de procesos.Para encontrar procesos zombie en Linux:
Primero, puedes intentar enviar la señal SIGCHLD al proceso padre del zombie usando el comando kill. Tenga en cuenta que el comando anterior le proporciona PPID (PID del proceso principal) de cada zombie. En nuestro ejemplo, PPID del zombie es
555
.Si un proceso zombie aún no desaparece, puedes matar el proceso padre (p. Ej., 555) del zombie.
Una vez que su proceso principal es eliminado, el zombie será adoptado por el proceso init, que es el principal de todos los procesos en Linux. El proceso init llama periódicamente
wait()
para cosechar cualquier proceso zombie.fuente
Solo puedes matar a un zombie matando a su padre. Un proceso zombie ha liberado todos sus recursos y está esperando que su estado de salida sea recogido por su padre. Se convierte en un zombie cuando el padre no ejecuta un
wait
para recoger el estado de salida de su hijo. Cuando matas al padre del zombi,init
toma el estado de salida y el zombi finalmente muere.fuente
init
. Si un zombie se repare debajoinit
, no puedes matarlo.