dwm
を使用するためにbashスクリプトを作成していますxsetroot
。すべてが期待どおりに動作します。私が見逃しているのは、*nix
標準ツールのみを使用してシステムの各コア(コアが4つあります)の現在の負荷を提供する簡単な方法です。たとえば、を使用してこれを行う方法がわかりませんtop
。これまで、このサイトで見つけた他のすべての投稿は負荷平均のみをカバーしています。前にこのようなことをした人はいますか?
私がすべてのコアに適用したい主な理由は、プログラムが私が並列に書いたいくつかのコード(たとえば、すべてのループ)を実行していることを確認できる安価で粗雑なツールを持つことです。
ベストアンサー1
これにより、要素がCPUごとにロードされるbash配列が作成されます。
loads=($(mpstat -P ALL 1 1 | awk '/Average:/ && $2 ~ /[0-9]/ {print $3}'))
Bash配列は0から始まり番号が付けられるため、2番目のCPUの負荷は次のように印刷されます。
echo ${loads[1]}
これにはユーティリティが必要ですmpstat
。 Debianシリーズシステムにインストールするには、次の手順を実行します。
apt-get install sysstat
どのように動作しますか?
その結果、やや冗長な出力は次mpstat
のようになります。
$ mpstat -P ALL 1 1
Linux 3.2.0-4-amd64 (MyMachine) 08/30/2014 _x86_64_ (2 CPU)
10:12:35 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
10:12:36 PM all 1.49 0.00 1.49 0.00 0.00 0.00 0.00 0.00 97.01
10:12:36 PM 0 0.00 0.00 2.02 0.00 0.00 0.00 0.00 0.00 97.98
10:12:36 PM 1 1.96 0.00 1.96 0.00 0.00 0.00 0.00 0.00 96.08
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
Average: all 1.49 0.00 1.49 0.00 0.00 0.00 0.00 0.00 97.01
Average: 0 0.00 0.00 2.02 0.00 0.00 0.00 0.00 0.00 97.98
Average: 1 1.96 0.00 1.96 0.00 0.00 0.00 0.00 0.00 96.08
これはすべてのCPUを表示するように-P ALL
指示し、パラメータは毎秒出力を印刷し、最初の秒後に停止するように指示します。mpstat
1 1
必要な値のみを選択するには、awk
次のコマンドを使用します。
awk '/Average:/ && $2 ~ /[0-9]/ {print $3}'
これにより、最後の数行のみが選択されます(およびで始まる行、Average:
2番目の列に数字がある行のみが選択されます)。これらの行に対して、3番目の列(CPUロード)が印刷されます。
括弧を使用すると、mpstat
パイプawk
の出力が bash 配列としてキャプチャされます。