我正在尝试测量我的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]"