パス/コマンドで現在のプロセスCPU使用率を抽出してコンソールに印刷する方法

パス/コマンドで現在のプロセスCPU使用率を抽出してコンソールに印刷する方法

プロセス名/パス別に現在のプロセスCPU/メモリ使用量を取得してコンソールに印刷したいと思います。このコマンドは、連続したデータストリームを提供するのではなく、数値を出力する必要がありますps

ps -p PID動作しません:

  1. プロセス番号がありません。 (プロセスパスがあります。)
  2. 現在、測定値をコンソールに一度印刷しません。

たとえば、次のようになります。

$command -getCPU | grep processPath

答え1

私の考えは、awk次のコマンドを使用してプロセス名のプロセッサとメモリ使用量を表示できることです。

ps -C "PROCEES_NAME" -o %cpu,%mem,cmd

結果:

%CPU %MEM CMD
 0.0  0.2 /usr/bin/python3 completion.py
 0.0  0.1 /usr/bin/python3 lib/python/jedi/evaluate/compiled/subprocess/__main__.py lib/python

その後、awkを使用して最初の行を削除できます。

ps -C python3 -o %cpu,%mem,cmd | awk 'FNR > 1'

結果:

 0.0  0.2 /usr/bin/python3 completion.py
 0.0  0.1 /usr/bin/python3 lib/python/jedi/evaluate/compiled/subprocess/__main__.py lib/python

使用回数のみを取得し、他の出力をスキップするには、次のコマンドを使用できます。

ps -C "python3" -o %cpu,%mem,cmd | awk 'FNR > 1 {print $1,$2}'

結果:

0.0 0.2
0.0 0.1

$11行目、$22行目です。必要に応じて削除できます。

process_nameを使用するのは悪い考えであり、PIDを使用する方が良いです。

答え2

さて、私はトップとpsについて混乱しています。次のコマンドを使用して目的を達成できました。

$ps aux | grep <processName> | awk '{print $3}'

行3は現在のCPU比です。

関連情報