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


101

psでCPUを消費する上位5つのプロセスを表示するにはどうすればよいですか?

回答:


95

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

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

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

常に更新される、本当に「トップ」なものが必要な場合は、watchを使用します

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

3
ps aux | sort -k 3,3 | tail -n 5 ;-)
PlanasB

1
ps auxのヘッダーをスキップするには、数値の並べ替えを含めるとよいでしょう。ps aux | sort -nrk 3,3 | head -n 5
syss

1
これは、より多くのリソースを消費している多くのプロセスを生成し、パイプで連結されたデータは、プロセスのリストがすでに変更されている可能性が頭に来るときので、また条件をレースする傾向である
phuclv

これは@LưuVĩnhPhúcに当てはまりますが、top実際にどのように機能するかとはどう違うのでしょうか。
アイスウォーター

1
@icedwater topはプロセスリストを読み取り、他のプロセスにパイプすることなく独自に結果を表示します
-phuclv

87

正解は次のとおりです

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-r、現在のCPU使用率でソートすることを提案します。したがって、Mac OS Xでは次を使用できます。

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6

3
これが正解です。ファクンド、ありがとう。私はあなたがソートとパイプを使用できることを他の人に説明しようとしていましたが、psにはソートのオプションが組み込まれていますが、今ではあなたもそれを使用していることがわかります。
ルイスアルバラード

2番目のコマンドはより便利に見えます...しかし、最初のコマンドはbash(x2、またはhead同様に)表示されるようpsです
...-Wilf

3
@Wilf 1つ目は、コマンドを使用せずにCPU消費量でソートする方法を強調するためのものsortで、2つ目は、ソートを妨げることなく列を指定する方法を示します。何かを説明するとき..簡潔で、一度に一つのことを説明することが常に良いです。
ファクンドビクター

27

ニーズによっては、これがもう少し読みやすくなるかもしれません。

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


22

私はpsあなたが探しているものだとは思わない。からの出力を見ましたtopか?

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

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

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


1
OS Xではtop -o cpu -n 5、同じことを達成する方法です。誰か知っている?私topはあなたとは違うtop
boehj

あなたは違うトップを持っているので、あなたは言う立場にいるでしょう。私のトップには、終了する前にディスプレイを更新する回数が-oありません-n
カレブ

けっこうだ。今日の午後、Linuxボックスに乗って見てみましょう。私にtopはバッチモードがありませんが、これはかなり制限されています。top他のコマンドにパイプする方法が必要です。調査を行います。
boehj

私は答えでバッチモードスイッチについて言及しましたが、インタラクティブセッションではなくパイプの一部であることを自動検出するため、実際にはトップには不要です。それなしでパイピングを試してみましたか?
カレブ

1
しましょう。GNU topは、今日の午後の説明どおりに機能しました。乾杯。
boehj


5

現在のバージョンのpsには、フィールドコード(psのマニュアルページで指定)に基づいてソート機能があります。プロセッサ使用率のフィールドコードは「c」です。あなたは--sort cpsコマンドの終わりに使用することができます例えばps aux --sort c

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


4

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

ps auxk-c | head -6

また、ヘッダーも出力します。これは便利です。

これkは、ソートのCPU使用率(エイリアス)フィールド--sortと同じであり、逆ソートのフィールドです。c%cpu-

あなたが区切らより指定子を追加することができ,、他の可能指定子は、次のとおりです。%memargsbsdstartpidgiduid...あなたは完全なリストを見つけることができます 標準フォーマット指定子の manページのセクションを。例えば:

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

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


3

コマンドラインツールにpsは独自の並べ替えオプションがあるので、次のようにします。

$ ps -eo pcpu,args --sort=-%cpu | head

必要な列を追加できます。他のオプションはpsmanページで利用できます。

$ man ps

0

topMac OS Xには、の形式のロギングモードオプションがあります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

topCPUを使用しているものが表示されます。インストールさhtopれている場合、CPUによるフィルタリングなど、よりきめ細かい制御が可能です。


0

トップ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]数値の昇順リストすることです。=-+


-2

top -bn1 |sed -n '7,12'p素敵な小さなライナーとしても機能します。
--sort = X -o X、Y、Zでpsを使用することを好みますが

psを使用すると、プロセスORユーザーに対して異なる統計grepを取得し、awkへのパイプを使用してそれらを合計または平均することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.