2013-08-01 16 views
14

Ho provato a controllare su Google, ma non sono riuscito a trovare molte informazioni relative alla domanda reale.Linux: come trovare l'elenco dei processi demone e dei processi zombi

Come si ottiene un elenco consolidato di processi zombie e processi demone? Come farlo su diversi sistemi operativi. Linux? AIX? Finestre?

Sono sicuro che, in base al PID, non possiamo identificare il tipo di processo. Anche correre attraverso un terminale potrebbe non essere d'aiuto.

+0

Non c'è modo di identificare i processi daemon, ma gli zombi hanno 'Z' nella colonna di stato di' ps'. – Barmar

risposta

1

per ottenere l'elenco degli Zombie e demone processo appena scrivere un driver dev carattere psudo, dove si dovrebbe passare attraverso gli task_struct e cercare per lo stato

+0

Vero, ma: (a) più sforzo (b) non si sa ancora quale è un demone di sicuro – kaiwan

+0

Ti piacerebbe eloberarsi su "scrivi un pseudo driver di sviluppo dei caratteri"? Inoltre, navigando attraverso task_struct, è possibile identificare con precisione un processo daemon. Significa, di sicuro. Nessun disallineamento. – kris123456

10

Con GNU ps su Linux:

[

$ ps --version 

procps-ng version 3.3.3 

]

Zombies:

ps -lA | grep '^. Z' 

ti darà tutti gli zombi (nota che il param è in minuscolo 'L', cioè, 'l' seguito da 'A').

Demoni:

Come @Barmar detto non c'è modo di ottenere i demoni con certezza, ma un indizio che un processo è un demone è che non è associato ad alcun dispositivo TTY. La dodicesima colonna dell'output di 'ps -Al' è TTY; il 4 ° è PID, 14 è il nome del processo. Quindi:

ps -lA | awk '$12 == "?" {print $4, $14}' 

ti porterà processi che sono possibilmente demoni; non garantito! :)

2

daemon vengono avviati dal processo init, che significa che hanno un PPID 1.

Pertanto:

ps -ef | awk '$3 == 1' 
+0

Ma questo produrrà anche quei processi che non sono daemon. Perché, se un genitore di un processo muore prima di un figlio, quel figlio viene poi genitorato da init(). –

14

provare questo.

ps axo pid,ppid,pgrp,tty,tpgid,sess,comm |awk '$2==1' |awk '$1==$3' 

Nel comando precedente ho utilizzato le proprietà stesse di un daemon per filtrarle, da tutti i processi esistenti in Linux.

Il genitore di un daemon è sempre Init, quindi controllare ppid 1. Il daemon normalmente non è associato a nessun terminale, quindi abbiamo '?' In tty. ID processo e ID gruppo processo di un demone sono normalmente uguali L'ID di sessione di un daemon è uguale all'ID processo.

Problemi correlati