ps
カーネルスレッドではなくユーザープロセスのみを表示するように要求するにはどうすればよいですか?
バラよりこの問題何を言っているのか理解しています...
答え1
これは次のように実行する必要があります(Linux上)。
ps --ppid 2 -p 2 --deselect
kthreadd
(PID 2)PPID 0(Linux 2.6+)ps
PPID 0のフィルタリングを許可しないため、この回避策があります。
これも見てください同等の答え。
答え2
実際、私は次のイディオムで十分であることがわかりました。
ps auxf | grep -v ]$
括弧で終わる行をフィルタリングします。可能その結果、不要な項目は省略されますが、その可能性はほとんどありません。代わりに覚えやすく、比較的迅速に入力できます。
一部のプロセス(たとえば、avahi-daemon)には、括弧内にプロセス名情報(avahi-daemonの場合はホスト名)があり、このコマンドでフィルタリングされます。
答え3
カーネルプロセスを識別する1つの方法はユーザーメモリを使用しないため、vszフィールドは0です。これはゾンビプロセスをキャッチすることもできます(ありがとうスティーブン・チャジェラスこの観察の場合)は、状態に応じて削除することができます。
ps axl | awk '$7 != 0 && $10 !~ "Z"'
PIDのみリスト:
ps -e -o pid= -o state= -o vsize= | awk '$2 != "Z" && $3 != 0 {print $1}'
答え4
この質問は少し古いですが、興味深い新しいアプローチがあります。バージョン4からプロセスパッケージで環境変数を設定できますLIBPROC_HIDE_KERNEL
。設定されている場合、参考(1)そしてタワー(1)ユーザースペースプロセスのみが表示されます。
マニュアルから抜粋:
LIBPROC_HIDE_KERNEL
通常、-eオプションで表示されるカーネルスレッドを非表示にするには、この値を任意の値に設定します。これは --ppid 2 -p 2 --deselect を選択するのと同じです。 BSDモードでも動作します。