首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本,用于在指定进程到达cpu %时终止它。

问脚本,用于在指定进程到达cpu %时终止它。
EN

Ask Ubuntu用户
提问于 2021-01-27 23:08:55
回答 1查看 1K关注 0票数 1

我有一个Ubuntu服务器20。我正在运行4个进程,其名称如下:

代码语言:javascript
复制
project-A
project-B
project-C
project-D

一切运行良好,但有时我看到其中一个项目消耗CPU,达到300%。

因此,我希望脚本杀死(例如)“项目-B”,当它达到300%的CPU。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2021-01-28 17:50:15

下面的脚本应该杀死使用50%以上CPU的任何md5sum进程。根据需要替换md5sum和50。

代码语言:javascript
复制
while true; do
    PID=$(pidof -s md5sum || cat /proc/sys/kernel/pid_max)
    if [[ $(ps -p $PID -o %cpu= |grep -Po '^\s*\K[0-9]+') -gt 50 ]]; then
        echo killing PID $PID
        kill $PID
    fi
    sleep 1
done

注释:

  • 在替换上述脚本中的pidof -s your_process之前,请尝试使用md5sum确保其工作正常。
  • 如果上面没有实际终止进程,则可能需要使用蛮力kill -9 $PID而不是kill $PID,但只有在第一种方法不起作用时才能这样做。
  • 在一行中执行上述一次(没有循环):
代码语言:javascript
复制
PID=$(pidof -s md5sum || cat /proc/sys/kernel/pid_max); if [[ $(ps -p $PID -o %cpu= |grep -Po '^\s*\K[0-9]+') -gt 50 ]]; then echo killing PID $PID; kill $PID; fi

解释:

  • 循环,直到ctrl-c被按下;这也允许杀死多个匹配进程。
  • pidof -s md5sum || cat /proc/sys/kernel/pid_max first (-s):md5sum进程的进程id,如果没有,则为不存在的PID。
  • ps -p $PID -o %cpu=进程的$PID CPU利用率为十进制百分比
  • |grep -Po '^\s*\K[0-9]+'带CPU百分比为整数
  • if [[ ... -gt 50 ]]如果..。大于50
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1311550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档