画面の幅に関係なく、現在のCPU使用率を見つけるための最良のコマンドライン選択肢は何ですか?

画面の幅に関係なく、現在のCPU使用率を見つけるための最良のコマンドライン選択肢は何ですか?

top -p <myPID> -n 1十分に広くない端末で実行すると、CPU使用率%が出力から省略されます。これは、bashスクリプトを使用してプロセスのCPU使用率を見つけようとすると大きな問題です。スクリプトが実行されている端末の幅が十分でないと、スクリプトが機能しないためです。

ps -oe pcpu,pid,cmd合計平均CPUは提供されますが、実行中の使用率は提供されません。

端末の幅に依存しないプロセスの現在のCPU使用率を取得するために使用できるコマンドはありますか?

答え1

これシステム統計パッケージmpstatが含まれています。走る

mpstat 2 | awk '{print $11}'

目的とは反対のアイドル時間比を提供するため、mpstat出力に対していくつかの操作を実行する必要があるかもしれません。

8 % mpstat 2 | awk '{print $11}'

%idle
100.00
99.50
100.00
100.00
100.00
100.00

私のSlackware 11システムにmpstatがありますが、私が起動するまで私のArchシステムには表示されませんでした。pacman -S sysstat

答え2

スクリプトから目的の出力を取得できるように、COLUMNS環境変数を高く設定します。

export COLUMNS=100
top -p ... 

COLUMNS var を変更してtop次を呼び出すこともできます。

COLUMNS=100 top -p ...

答え3

f単にキーを使用して表示された列を調整できます。一部の列を削除してCPU%を追加します。それから見ることができるはずです。

答え4

ps u -p <PID>

うまくいきます。以下を試すこともできますawk

 pid=16707; ps u -p $pid --no-heading | awk -v pid=${pid} -F" " '{print "CPU usage for "$11": "$3}'

関連情報