Linux: как найти список процессов демона и процессы зомби

Я попробовал проверку в Google, но я не мог найти много информации, связанной с фактическим вопросом.

Как получить сводный список процессов зомби и процессов демона? Как это сделать в разных операционных системах. Linux? AIX? Windows?

Я уверен, что на основе PID мы не можем идентифицировать тип процесса. Запуск через терминал может также не помочь.

Ответ 1

Попробуйте это.

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

В приведенной выше команде я использовал самые свойства демона, чтобы отфильтровать их из всех существующих процессов в Linux.

Родитель демона всегда является Init, поэтому проверьте на ppid 1. Демон обычно не связан ни с одним терминалом, следовательно, мы имеем? под tty. Идентификатор процесса и идентификатор группы процессов демона обычно одинаковы Идентификатор сеанса демона такой же, как и идентификатор процесса.

Ответ 2

С GNU ps в Linux:

[

$ ps --version

procps-ng version 3.3.3

]

Zombies:

ps -lA | grep '^. Z'

доставит вам всех зомби (обратите внимание, что параметр имеет нижний регистр "L", то есть "l", за которым следует "A" ).

Демоны:

Поскольку @Barmar сказал, что нет способа получить демонов наверняка, но ключом к тому, что процесс является демонами, является то, что он не связан с каким-либо устройством TTY. 12-й столбец вывода "ps -Al" - TTY; 4-й - PID, 14-е - имя процесса. Следовательно:

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

вы получите процессы, которые, возможно, демоны; не гарантировано!:)

Ответ 3

Демоны запускаются процессом init, что означает, что у них есть идентификатор PPID.

Таким образом:

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

Ответ 4

Чтобы получить список процессов Zombie и daemon, просто напишите драйвер ps devo character dev, где вы должны перейти через task_struct и искать состояние