web-dev-qa-db-ja.com

「ps」を使用してCPUを消費する上位5つのプロセスを表示する

PSで上位5つのCPU消費プロセスを表示する方法は?

115
PlanasB

psコマンドで簡単に実行できるのに、なぜtopを使用するのですか?

psを使用する必要がある場合は、これを試してください:

ps aux | sort -nrk 3,3 | head -n 5

絶え間なく更新され、本当に「トップ」であるものが必要な場合は、watchを使用してください。

watch "ps aux | sort -nrk 3,3 | head -n 5"
112
Boban P.

正解は

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
94
Facundo Victor

あなたのニーズに応じて、これはもう少し読みやすいかもしれません:

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です)

28

psはあなたが探しているものではないと思います。 topの出力を確認しましたか?

GNU-Topを使用している場合は、バッチモードを使用して、CPU使用量でソートされたプロセスリストを吐き出し、head/tailを使用して上位5行を取得してください(最初の8行はヘッダーです)。

top -b -n 1 | head -n 12  | tail -n 5

BSDのトップは異なる動作をするようで、非インタラクティブモードがないため、他のpsベースのソリューションのいずれかを使用してください。

24
Caleb

私がこれのために見つけた最も速い1つのライナー(ヘッダーが追加されるため、注6):

ps aux k-pcpu | head -6
6
Nestor Urquiza

現在のバージョンのpsには、フィールドコード(psのmanページに記載されています)に基づいたソート機能があります。プロセッサー使用のフィールドコードは「c」です。 psコマンドの最後に--sort cを使用できます。 ps aux --sort c

これにより、最もCPUを使用するプロセスがリストの一番下に配置されます。並べ替えに使用するフィールドコードにマイナスを追加して、リストの順序を逆にします。 ps aux --sort -c

5
Cian D

他の貴重な答えにポイントを追加するために、私は好む:

ps auxk-c | head -6

また、ニースであるヘッダーも印刷します。

ここで、k--sortと同一であり、cは並べ替えのCPU使用率(エイリアス%cpu)フィールドを指定しますが、-は逆の並べ替えです。

,で区切られた指定子を追加できます。他の指定子は次のとおりです:%memargsbsdstartpidgiduid ... STANDARD FORMAT SPECIFIERS manページのセクション。例えば:

 ps auxk -gid,-%mem | head -11

内部的にメモリ使用量でソートされた、最高のグループIDを持つ10プロセスを出力します。

4
2i3r

コマンドラインツール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:この引数は、コマンド名のみを表示するために使用されます。完全なコマンドを取得するには、argscmdまたはcommandを使用します

%cpu:この引数は、プロセスのCPU使用率を "##。#"形式で示します。ここではpcpuも使用できます。

%mem:この引数は、マシンの物理メモリに対するプロセスの常駐セットサイズの比率をパーセントで示します。ここではpmemも使用できます。

--sort:ソート順を指定します。 =の後、-記号を使用して、最も高い値を一番上に並べ替えます。デフォルトのオプションである+は、昇順の番号順(つまり、0からn)をリストします。

0
muhammad

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
_
0
ulf

topは、CPUを使用しているものを表示します。インストールされている場合、htopを使用すると、CPUによるフィルタリング(場合によっては)を含む、より詳細な制御が可能になります。

0
PSN