2013-08-01 42 views
14

Próbowałem sprawdzić w Google, ale nie mogłem znaleźć wiele informacji związanych z faktycznym pytaniem.Linux: Jak znaleźć listę procesów demonów i procesów zombie

Jak uzyskać skonsolidowaną listę procesów i procesów demonów zombie? Jak to zrobić w różnych systemach operacyjnych. Linux? AIX? Windows?

Jestem pewien, że w oparciu o PID nie jesteśmy w stanie określić rodzaju procesu. Uruchomienie terminalu też może nie pomóc.

+0

Nie ma sposobu na identyfikację procesów demonów, ale zombie mają 'Z' w kolumnie stanu' ps'. – Barmar

Odpowiedz

1

Aby uzyskać listę proces zombie i demona tylko napisać sterownik dev znaków psudo, gdzie należy poruszać koryta task_struct i zajrzeć do stanu

+0

To prawda, ale: (a) więcej wysiłku (b) nadal nie będziesz wiedział, który demon jest na pewno – kaiwan

+0

Czy mógłbyś prosić o "napisanie pseudo-znakowego sterownika dev"? Ponadto, przechodząc przez parametr task_struct, możliwe jest dokładne zidentyfikowanie procesu demona. To znaczy, na pewno. Brak rozbieżności. – kris123456

10

Z GNU ps w systemie Linux:

[

$ ps --version 

procps-ng version 3.3.3 

]

zombie:

ps -lA | grep '^. Z' 

dostaniesz wszystkie zombie (zwróć uwagę, że param ma małe litery "L", tj. "L", a następnie "A").

demony:

Jak @Barmar powiedział, że nie ma sposobu, aby pozbyć się demonów na pewno, ale wskazówką, że proces jest demonem, jest to, że nie jest powiązany z dowolnym urządzeniem TTY. 12. kolumna wyjścia "ps-Al" to TTY; czwarty to PID, 14 to nazwa procesu. Stąd:

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

będzie Ci procesy, które są ewentualnie demony; Niegwarantowane! :)

2

Demony są uruchamiane przez init, co oznacza, że ​​mają PPID z 1.

Dlatego:

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

Ale spowoduje to wyprowadzenie tych procesów, które również nie są demonami. Ponieważ, jeśli rodzic procesu umiera przed potomkiem, to dziecko jest następnie rodzicielskie przez init(). –

14

wypróbować to.

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

W powyższym poleceniu użyłem same właściwości demona, aby je odfiltrować, od wszystkich istniejących procesów w systemie Linux.

Rodzicem demona jest zawsze Init, więc sprawdź dla ppid 1. Demon zwykle nie jest powiązany z żadnym terminalem, dlatego mamy "?" Pod tty. Identyfikator procesu i identyfikator grupy procesów demona są zwykle takie same. Identyfikator sesji demona jest taki sam, jak identyfikator procesu.

Powiązane problemy