GNU/Linux >> Znalost Linux >  >> Linux

Může ps zobrazit pouze procesy mimo jádro v Linuxu?

Mělo by to fungovat (v systému Linux):

ps --ppid 2 -p 2 --deselect

kthreadd (PID 2) má PPID 0 (v systému Linux 2.6+ ), ale ps neumožňuje filtrovat PPID 0; tedy toto řešení.


Jedním ze způsobů, jak rozpoznat procesy jádra, je, že nepoužívají žádnou uživatelskou paměť, takže pole vsz je 0. To také zachycuje zombie (díky Stephanu Chazelasovi za toto pozorování), které lze eliminovat na základě jejich stavu.

ps axl | awk '$7 != 0 && $10 !~ "Z"'

Chcete-li uvést pouze PID:

ps -e -o pid= -o state= -o vsize= | awk '$2 != "Z" && $3 != 0 {print $1}'

V praxi mi stačí následující idiom:

ps auxf | grep -v ]$

Filtruje řádky končící hranatými závorkami, což by mohlo výsledkem jsou vynechání nechtěných položek, ale je to velmi nepravděpodobné. Na oplátku je to docela snadno zapamatovatelné a relativně rychlé psát.

Některé procesy jako avahi-daemon přidávají k názvu svého procesu informace v hranatých závorkách (název hostitele v případě avahi-daemon) a budou tímto příkazem odfiltrovány.


Linux
  1. Linux – Jsou různá jádra Linux/unix zaměnitelná?

  2. Omezit top příkaz na zobrazení pouze top X procesů na příkazovém řádku

  3. Jak může být linuxové jádro tak malé?

  1. Kolik jader zvládne linuxové jádro?

  2. Jsou vlákna jádra Linuxu skutečně procesy jádra?

  3. Jak mohu rezervovat blok paměti z jádra Linuxu?

  1. Moduly linuxového jádra, bez kterých nemůžeme žít

  2. Linux – Init Process:Předchůdce všech procesů?

  3. Udělejte soubor pouze pro čtení na Linuxu i pro roota