
私のUbuntuコンピュータのCPU使用率を測定しようとしています。 CPU使用率が60%を超える場合は、どのプロセスのCPU使用率が最も高いかを判断し、CPU使用率が60%を超えることを示す電子メールを送信する必要があります。 CPU使用率が最も高いプロセス名を持つプロセス。
頂上に着くとこんな姿が見えました。
Cpu0 : 20.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 34.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 17.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 20.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
CPU負荷のみを確認し、CPU使用量は確認しない次のスクリプトを思い出しました。上記の目標を達成するにはどうすればよいですか?
#!/bin/bash
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'
電子メールを送信するには、次のコマンドを使用しましたが効果がありました。
echo "Body" | mailx -r "[email protected]" -s "SUBJECT" "[email protected]"
答え1
awkを使用してください:
ps aux --sort=-%cpu | awk 'NR==1{print $2,$3,$11}NR>1{if($3!=0.0) print $2,$3,$11}' > some_file.txt
上記のコードは、すべてのプログラムに対してゼロ以外のCPU使用率を提供します。
あなたに与えるpid,%cpu, command_name
CPU使用量を60以上にするには、$3!=0.0
次のように置き換えます。$3>=60
出力をファイルとして保存しましたsome_file.txt
。cat
このファイルをインポートしてmailコマンドにパイプすることができます。
試してみてください:メールを送る
cat some_file.txt | mailx -r "[email protected]" -s "SUBJECT" "[email protected]"