PSで上位5つのCPU消費プロセスを表示する方法は?
ps
コマンドで簡単に実行できるのに、なぜtop
を使用するのですか?
ps
を使用する必要がある場合は、これを試してください:
ps aux | sort -nrk 3,3 | head -n 5
絶え間なく更新され、本当に「トップ」であるものが必要な場合は、watchを使用してください。
watch "ps aux | sort -nrk 3,3 | head -n 5"
正解は:
ps --sort=-pcpu | head -n 6
したがって、ソートを妨げることなく列を指定できます。
例:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
MAC OS Xに関する注意:Mac OS Xでは、ps
は--sort
を認識しませんが、現在のCPU使用率でソートするために-r
を提供します。したがって、Mac OS Xの場合は以下を使用できます。
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
あなたのニーズに応じて、これはもう少し読みやすいかもしれません:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
出力例:
1.3 4 root [ksoftirqd/0]
1.1 9 root [ksoftirqd/1]
1.0 17606 nobody /usr/sbin/gmetad
1.0 13 root [ksoftirqd/2]
0.3 17401 nobody /usr/sbin/gmond
(フィールドは%CPU、PID、USER、COMMANDです)
ps
はあなたが探しているものではないと思います。 top
の出力を確認しましたか?
GNU-Topを使用している場合は、バッチモードを使用して、CPU使用量でソートされたプロセスリストを吐き出し、head/tailを使用して上位5行を取得してください(最初の8行はヘッダーです)。
top -b -n 1 | head -n 12 | tail -n 5
BSDのトップは異なる動作をするようで、非インタラクティブモードがないため、他のps
ベースのソリューションのいずれかを使用してください。
私がこれのために見つけた最も速い1つのライナー(ヘッダーが追加されるため、注6):
ps aux k-pcpu | head -6
現在のバージョンのpsには、フィールドコード(psのmanページに記載されています)に基づいたソート機能があります。プロセッサー使用のフィールドコードは「c」です。 psコマンドの最後に--sort c
を使用できます。 ps aux --sort c
これにより、最もCPUを使用するプロセスがリストの一番下に配置されます。並べ替えに使用するフィールドコードにマイナスを追加して、リストの順序を逆にします。 ps aux --sort -c
他の貴重な答えにポイントを追加するために、私は好む:
ps auxk-c | head -6
また、ニースであるヘッダーも印刷します。
ここで、k
は--sort
と同一であり、c
は並べ替えのCPU使用率(エイリアス%cpu
)フィールドを指定しますが、-
は逆の並べ替えです。
,
で区切られた指定子を追加できます。他の指定子は次のとおりです:%mem
、args
、bsdstart
、pid
、gid
、uid
... STANDARD FORMAT SPECIFIERS manページのセクション。例えば:
ps auxk -gid,-%mem | head -11
内部的にメモリ使用量でソートされた、最高のグループIDを持つ10プロセスを出力します。
コマンドラインツールps
には独自の並べ替えオプションがあるため、次のようにします。
$ ps -eo pcpu,args --sort=-%cpu | head
必要な列を追加できます。 ps
のマニュアルページで、他にどのようなオプションが利用できるかを確認してください。
$ man ps
私は上位5 CPU消費プロセスを確認する最も簡単な方法は、
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
上位5つのメモリ消費プロセスを確認するには、
ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5
どこ、
-e
:このフラグは、すべてのプロセスを選択するために使用されます
-o
:このフラグは、ユーザー定義としてフォーマットするために使用されます。
pid
:この引数はpidを表示するために使用されます
comm
:この引数は、コマンド名のみを表示するために使用されます。完全なコマンドを取得するには、args
、cmd
またはcommand
を使用します
%cpu
:この引数は、プロセスのCPU使用率を "##。#"形式で示します。ここではpcpu
も使用できます。
%mem
:この引数は、マシンの物理メモリに対するプロセスの常駐セットサイズの比率をパーセントで示します。ここではpmem
も使用できます。
--sort
:ソート順を指定します。 =
の後、-
記号を使用して、最も高い値を一番上に並べ替えます。デフォルトのオプションである+
は、昇順の番号順(つまり、0からn)をリストします。
Mac OS Xの_top
_には、_top -l numberOfSamples
_(GNU top
のバッチモードと同じように見える)の形式のログモードオプションがあります。ただし、「サンプル間のデルタを使用して計算されるため、最初に表示されるサンプルにはプロセスごとに無効な%CPUが表示される」ため、少なくとも2つのサンプルが必要です(_man 1 top
_)。
_# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
_
top
は、CPUを使用しているものを表示します。インストールされている場合、htop
を使用すると、CPUによるフィルタリング(場合によっては)を含む、より詳細な制御が可能になります。