2013-08-01 19 views
14

Ich habe versucht, auf Google zu überprüfen, aber ich konnte nicht viele Informationen im Zusammenhang mit der eigentlichen Frage finden.Linux: So finden Sie die Liste der Daemon-Prozesse und Zombie-Prozesse

Wie bekomme ich eine konsolidierte Liste von Zombie-Prozessen und Daemon-Prozessen? Wie mache ich es auf verschiedenen Betriebssystemen. Linux? AIX? Windows?

Ich bin sicher, dass wir basierend auf PID die Art des Prozesses nicht identifizieren können. Das Durchlaufen eines Terminals kann ebenfalls nicht helfen.

+0

Es gibt keine Möglichkeit, Daemon-Prozesse zu identifizieren, aber Zombies haben 'Z' in der Statusspalte von' ps'. – Barmar

Antwort

1

Um die Liste der Zombie und Daemon-Prozess bekommen nur einen psudo Charakter dev Treiber schreiben, in dem Sie die task_struct Trog navigieren sollten und

+0

Wahr, aber: (a) mehr Aufwand (b) Sie werden immer noch nicht wissen, was ein Daemon ist sicher – kaiwan

+0

Würdest du bitte auf "schreibe einen Pseudo-Zeichen-dev-Treiber"? Durch das Navigieren durch task_struct ist es außerdem möglich, einen Daemon-Prozess genau zu identifizieren. Also sicher. Keine Unstimmigkeiten. – kris123456

10

Mit GNU ps unter Linux für Zustand aussehen:

[

$ ps --version 

procps-ng version 3.3.3 

]

Zombies:

ps -lA | grep '^. Z' 

erhalten Sie alle Zombies (beachten Sie, dass der Parameter ist Kleinbuchstabe "L", d. H. "L" gefolgt von "A").

Daemons:

Wie @Barmar gesagt, es gibt keine Möglichkeit, Daemons für bestimmte zu bekommen, aber ein Hinweis, dass ein Prozess ein Dämon ist, dass es nicht mit einem TTY-Gerät zugeordnet ist. Die 12. Spalte von 'ps-Al' ist TTY; der 4. ist PID, 14. ist der Prozessname. Daraus folgt:

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

werden Sie Prozesse erhalten, die möglicherweise Daemons sind; nicht garantiert! :)

2

Daemons werden durch den init-Prozess gestartet, das heißt, sie eine PPID von 1.

Deshalb haben:

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

Aber dies wird jene Prozesse ausgeben, die auch keine Dämonen sind. Wenn ein Prozess-Elternteil vor einem Kind stirbt, wird dieses Kind dann von init() parented. –

14

ausprobieren.

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

im obigen Befehl habe ich die sehr Eigenschaften eines Dämons, sie heraus zu filtern, von allen bestehenden Prozesse in Linux.

Der Parent eines Daemon ist immer Init, also checken Sie nach dem Punkt 1. Der Daemon ist normalerweise keinem Terminal zugeordnet, daher haben wir '?' Unter tty. Die Prozess-ID und die Prozessgruppen-ID eines Daemon sind normalerweise gleich Die Session-ID eines Daemon ist dieselbe wie die Prozess-ID.