topを使用せずにtopが提供するシステムタスクの概要を取得するには?

topを使用せずにtopが提供するシステムタスクの概要を取得するには?

top は、要約に次の数字を表示します。

ミッション:合計193個、ランニング1個、睡眠192個、停止0個、ゾンビ0個

私はプログラムを実行し、/ procファイルを解析するなど、他の方法で取得できる方法を探しています。

この数字を取得する方法を知っていますか?

私が得ることができる最も近いものは次のとおりです。

pgrep "" -c
192

そしてtopとpgrep:

top -b -n 1 | head -n 2 | tail -n 1; pgrep "" -c

絶対に同意しないでください...

たとえば、194と191

grep 'procs' /proc/stat
procs_running 2
procs_blocked 0

走り、眠り、停止し、ゾンビもここで言及されています。 http://procps.cvs.sourceforge.net/viewvc/procps/procps/top.c?revision=1.134&view=markup#l1025

このgrepは一致するものを見つけ、Sleepingは192です。

 grep -R sleeping /proc/*/status | wc -l

しかし、スリープモードはpgrepのフルモードと一致しません。

top -b -n 1 | head -n 2 | tail -n 1; pgrep "" -c; grep "procs" /proc/stat; grep -R sleeping /proc/*/status | wc -l

ベストアンサー1

 ps -eo stat | awk '/^S/ { stat+=1 } /^R/ { run +=1 } /^Z/ { zomb+=1 } { tot+=1 } END { print "sleeping = "stat" Running = "run" Zombie = "zomb" total = "tot }'

これにより、プロセス状態情報に関する同じ情報が提供されます。

Rは実行中のプロセス、Sは休止プロセス、Zはゾンビプロセスです。

topはtopが実際にどのように実行されるかを考慮しているので、常に実行中のプロセスをもう1つ表示することに注意してください。

おすすめ記事