You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unix Mint下如何用Bash脚本实现CPU idle超时自动挂起?

纯Bash实现CPU idle检测后自动挂起方案

一、核心Bash脚本实现

创建一个可执行脚本(比如~/cpu_idle_check.sh),实现指定时间间隔的CPU负载检查与挂起逻辑:

#!/bin/bash

# 配置参数
THRESHOLD=10          # CPU使用率阈值(%)
CHECK_INTERVAL=5      # 检查的时间间隔(分钟)
LOG_FILE=~/cpu_suspend_log.txt

# 获取当前CPU使用率(100减去空闲率,取整数部分)
current_cpu=$(mpstat 1 1 | awk '/Average:/ {print 100 - $12}')
current_cpu=${current_cpu%.*}

# 获取${CHECK_INTERVAL}分钟前的CPU使用率(依赖sysstat的sar工具)
past_cpu=$(sar -u -s $(date -d "${CHECK_INTERVAL} minutes ago" +%H:%M:00) | awk '/Average:/ {print 100 - $NF}')
# 处理首次运行无历史数据的情况
if [ -z "$past_cpu" ]; then
    echo "$(date): 无历史CPU数据,跳过本次检查" >> "$LOG_FILE"
    exit 0
fi
past_cpu=${past_cpu%.*}

# 判断是否满足挂起条件
if (( current_cpu < THRESHOLD && past_cpu < THRESHOLD )); then
    echo "$(date): CPU已连续${CHECK_INTERVAL}分钟低负载(当前${current_cpu}%,${CHECK_INTERVAL}分钟前${past_cpu}%),执行挂起" >> "$LOG_FILE"
    systemctl suspend
else
    echo "$(date): 当前CPU使用率${current_cpu}%,${CHECK_INTERVAL}分钟前${past_cpu}%,未达挂起条件" >> "$LOG_FILE"
fi

脚本说明

  • 用mpstat采样1秒的当前CPU平均使用率,通过awk计算实际负载(100减去空闲率)
  • 用sar读取历史CPU数据,指定检查间隔前的时间点获取负载值
  • 对数值取整避免Bash小数比较的问题
  • 记录日志方便后续排查

二、依赖安装与配置

如果系统缺少mpstat和sar工具,安装sysstat包:

sudo apt install sysstat

若sysstat未启用数据收集,编辑配置文件开启:

sudo nano /etc/default/sysstat

将ENABLED="false"改为ENABLED="true",然后重启服务:

sudo systemctl restart sysstat

三、配置普通用户无密码挂起权限

普通用户默认执行systemctl suspend需要密码,通过polkit配置无权限验证:

  1. 创建规则文件:
sudo nano /etc/polkit-1/rules.d/90-suspend.rules
  1. 写入以下内容:
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.suspend" &&
        subject.isInGroup("users")) {
        return polkit.Result.YES;
    }
});
  1. 保存退出即可,规则立即生效

四、配置crontab定时运行

以普通用户身份编辑crontab:

crontab -e

添加定时任务(每5分钟运行一次,可修改*/5调整间隔):

*/5 * * * * /home/你的用户名/cpu_idle_check.sh

替换你的用户名为实际系统用户名,确保脚本路径正确。

五、测试脚本

手动运行脚本验证逻辑:

chmod +x ~/cpu_idle_check.sh
./cpu_idle_check.sh

若CPU负载符合条件,系统会立即挂起;否则会输出状态到日志文件。

内容的提问来源于stack exchange,提问作者7824238

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:00:36