これで (Linux の場合):
ps --ppid 2 -p 2 --deselect
kthreadd
(PID 2) は PPID 0 (Linux 2.6 以降) ) しかし ps
PPID 0 のフィルタリングを許可しません。したがって、この回避策です。
カーネル プロセスを認識する 1 つの方法は、それらがユーザー メモリをまったく使用しないため、vsz フィールドが 0 であることです。これはゾンビもキャッチし (この観察については Stephane Chazelas に感謝します)、ステータスに基づいて排除することができます。
ps axl | awk '$7 != 0 && $10 !~ "Z"'
PID のみを一覧表示するには:
ps -e -o pid= -o state= -o vsize= | awk '$2 != "Z" && $3 != 0 {print $1}'
実際には、次のイディオムで十分であることがわかりました:
ps auxf | grep -v ]$
括弧で終わる行をフィルタリングします。可能性 不要なエントリが省略されますが、その可能性はほとんどありません。引き換えに、非常に覚えやすく、比較的すばやく入力できます。
avahi-daemon などの一部のプロセスは、括弧内のプロセス名情報 (avahi-daemon の場合はホスト名) に追加され、このコマンドによって除外されます。