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.