it-swarm.com.de

Linux: So finden Sie die Liste der Daemon-Prozesse und Zombie-Prozesse

Ich habe versucht, bei Google nachzuschauen, konnte jedoch nicht viele Informationen zu der eigentlichen Frage finden. 

Wie erhalte ich eine konsolidierte Liste von Zombie-Prozessen und Daemon-Prozessen? Wie mache ich das auf verschiedenen Betriebssystemen? Linux? AIX? Windows?

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

14
kris123456

Probieren Sie das aus.

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

Im obigen Befehl habe ich die Eigenschaften eines Daemons verwendet, um sie aus allen vorhandenen Prozessen in Linux herauszufiltern.

Das übergeordnete Element eines Daemons ist immer Init, also prüfen Sie, ob ppid 1 ..__ vorhanden ist. Der Daemon ist normalerweise keinem Terminal zugeordnet, daher haben wir '?' Unter tty . Die Prozess-ID und die Prozessgruppen-ID eines Daemons sind normalerweise die gleichen Die Sitzungs-ID eines Daemons ist mit der Prozess-ID identisch.

15
madala

Mit GNU ps unter Linux:

$ ps --version

procps-ng version 3.3.3

]

Zombies:

ps -lA | grep '^. Z'

erhalten Sie alle Zombies (beachten Sie, dass der Parameter in Kleinbuchstaben 'L' ist, d. h. 'l' gefolgt von 'A').

Daemons:

Wie @Barmar sagte, gibt es keine Möglichkeit, Dämonen sicher zu bekommen, aber ein Hinweis darauf, dass ein Prozess ein Dämon ist, ist, dass er keinem TTY-Gerät zugeordnet ist. Die 12. Spalte der Ausgabe "ps -Al" ist TTY. Die 4. ist PID, 14. ist der Prozessname. Daher:

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

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

10
kaiwan

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

Deshalb:

ps -ef | awk '$3 == 1'
2
Ann B

Um die Liste der Zombie- und Daemon-Prozesse abzurufen, schreiben Sie einfach einen Pseudo-Zeichen-Dev-Treiber, in dem Sie durch task_struct navigieren und nach dem Status suchen müssen

1
user2623122

Ich habe für Daemons und die "alte" Sysv-Initd geschrieben, Sie müssen überprüfen, ob es an Ihrer Distribution funktioniert.

Gute Dämonen haben gut geschriebene Startskripte in/etc/initd geschrieben

Wie kennt init die laufenden Daemons beim Ändern des Runlevels?

Es sucht nach ihren Namen im Verzeichnis

/ var/lock/subsys

Also kannst du

holen Sie sich die Namensliste von dort

scannen Sie alle laufenden Prozesse und prüfen Sie, ob der Name in der Liste enthalten ist: Bingo!

So scannen Sie alle Prozesse: Listen Sie jedes Unterverzeichnis in auf

/ proc

Wenn der Name aus Ziffern besteht, ist dies die PID eines laufenden Prozesses.

Der Status des Prozesses mit pid 1234 ist beispielsweise diese Datei

/ proc/1234/status

Öffne es und bekomme die erste Zeile, beginnt mit "Name:"

Sehen

http://man7.org/linux/man-pages/man5/proc.5.html

https://linuxexplore.com/2014/03/19/use-of-subsystem-lock-files-in-init-script/

(Entschuldigung für die unangenehmen Formatierungen, ich schreibe von meinem Handy aus ...)

0
Massimo