如果 CPU 使用率超过 60%,请查找占用最大 CPU 使用率的进程?

如果 CPU 使用率超过 60%,请查找占用最大 CPU 使用率的进程?

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

相关内容