Possível ver processos mortos?

11

Em man ps , ele afirma claramente os diferentes estados que um processo pode ter no Linux.

D    Uninterruptible sleep (usually IO)
R    Running or runnable (on run queue)
S    Interruptible sleep (waiting for an event to complete)
T    Stopped, either by a job control signal or because it is being traced.
W    paging (not valid since the 2.6.xx kernel)
X    dead (should never be seen)
Z    Defunct ("zombie") process, terminated but not reaped by its parent.

Mesmo tho X é um estado de processo, nunca deve ser visto. Mas isso é correto? Existe uma maneira teórica de ver isso como um estado em um processo? Ou é completamente 100% impossível?

    
por xeor 23.04.2014 / 12:24

2 respostas

5

Eu dei um mergulho no kernel do Linux, sem conhecimento sobre como ele funciona em seu núcleo, ou qualquer grande conhecimento em C. Então, por favor, seja gentil com esta teoria:)

O estado DEAD está definido como link e é usado no link para fornecer apenas um status de retorno. Então, a única maneira que pode ser vista é se você verificar o estado do processo antes de link (ou mais tarde, onde quer que esta função seja chamada de ...).

Se você tentar matar um processo morto, ele será tratado e ignorado em link

Então, em teoria ... eu acho que a resposta é sim. X como um estado pode ser visto em teoria, mas provavelmente nunca foi na vida real ..

Por favor, corrija-me se / onde estou errado .. Não tenho certeza sobre isso ..

    
por 24.04.2014 / 00:01
1

Veja a evidência de um que acabamos de encontrar em um sistema ao vivo:

$ sudo ps axf -O wchan
31103 -      R ?        00:00:00 /bin/bash /usr/local/bin/monitorcron taskA
31104 exit   X ?        00:00:00  \_ [su]
    
por 05.12.2014 / 18:57