195

Linux上の単一プロセスのCPUとメモリの使用量を取得したい-PIDを知っている。うまくいけば、毎秒取得して、「watch」コマンドを使用してCSVに書き込むことができます。Linuxコマンドラインからこの情報を取得するためにどのコマンドを使用できますか?

4

21 に答える 21

263
ps -p <pid> -o %cpu,%mem,cmd

(「cmd」を省略できますが、デバッグに役立つ場合があります)。

これにより、実行中のプロセスの平均 CPU 使用率がわかります。

于 2009-08-03T10:23:28.030 に答える
69

カフェの答えの変形: top -p <pid>

これにより、CPU 使用率が自動更新されるため、監視に適しています。

于 2012-08-17T19:25:23.817 に答える
18

プログラムを起動して監視する

この形式は、実行可能ファイルを簡単にベンチマークしたい場合に便利です:

topp() (
  $* &>/dev/null &
  pid="$!"
  trap ':' INT
  echo 'CPU  MEM'
  while sleep 1; do ps --no-headers -o '%cpu,%mem' -p "$pid"; done
  kill "$pid"
)
topp ./myprog arg1 arg2

Ctrl + C を押すと、プログラムが終了し、監視が停止します。出力例:

CPU  MEM
20.0  1.3
35.0  1.3
40.0  1.3

関連: https://unix.stackexchange.com/questions/554/how-to-monitor-cpu-memory-usage-of-a-single-process

Ubuntu 16.04 でテスト済み。

于 2016-11-13T16:28:43.473 に答える
5

上記のcafの回答でコメントしたように、 ps および場合によっては pidstat は、pCPUの生涯平均を提供します。より正確な結果を得るには、top を使用します。一度トップを実行する必要がある場合は、次を実行できます。

top -b -n 1 -p <PID>

またはプロセスのみのデータとヘッダーの場合:

top -b -n 1 -p <PID> | tail -3 | head -2

ヘッダーなし:

top -b -n 1 -p <PID> | tail -2 | head -1
于 2016-06-16T08:16:50.877 に答える
5

必要な pid を使用top -bして grep することも (-bフラグ top runs in batch mode)、または-pフラグを使用して grep を使用せずに pid を指定することもできます。

于 2009-08-03T10:19:53.920 に答える
4

次のコマンドは、特定のプロセス (pid) の 40 秒ごとの CPU およびメモリ使用量の平均を取得します。

pidstat 40 -ru -p <pid>

私の場合の出力 (CPU 使用率の最初の 2 行、メモリの次の 2 行):

02:15:07 PM       PID    %usr %system  %guest    %CPU   CPU  Command
02:15:47 PM     24563    0.65    0.07    0.00    0.73     3  java

02:15:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:15:47 PM     24563      6.95      0.00 13047972 2123268   6.52  java
于 2019-12-19T06:20:27.517 に答える
3
ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr

またはプロセスごと

ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr |grep mysql
于 2013-04-26T19:55:00.317 に答える
1
ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep

PID - プロセス ID

etime - プロセスの実行中/有効期間

%cpu - CPU 使用率

%mem - メモリ使用量

cmd - コマンド

プロセス名を追跡したいプロセス、mysql nginx php-fpmなどに置き換えます...

于 2016-04-21T08:48:04.980 に答える
1

(MacOS 10.10 を使用している場合は、top の累積 -c オプションを試してください:

top -c a -pid PID

(このオプションは他の Linux では利用できません。Scientific Linux el6 と RHEL6 で試してみました)

于 2014-05-11T22:14:39.440 に答える
1

アプリケーションだけのメモリ使用量を取得するには (アプリケーションが使用する共有ライブラリではなく、Linux smaps インターフェイスを使用する必要があります)。この答えはそれをよく説明しています

于 2009-08-03T10:34:45.613 に答える
1
ps aux|awk  '{print $2,$3,$4}'|grep PID

ここで、最初の列は PID、2 番目の列は CPU 使用率、3 番目の列はメモリ使用率です。

于 2014-07-21T13:01:14.240 に答える
0

@Neonの回答に基づいて、ここに私の2セント:

pidstat -h -r -u -v -p $(ps aux | grep <process name> | awk '{print $2}' | tr '\n' ',')
于 2020-10-02T20:45:30.597 に答える