我想弄清楚,我们如何知道系统是否空闲?如果系统闲置了 x 分钟,我想暂停系统。我试图找到这个并尝试了下面的脚本代码
#!/bin/bash
idletime=$((1000*60)) # 1 minute in milliseconds
while true; do
idle=`xprintidle`
echo $idle
if (( $idle > $idletime )); then
echo -n "mem" >> /sys/power/state
fi
sleep 1
done
但是 xprintidle 仅监视鼠标和键盘事件以增加其计数器。 现在,如果我在无限循环中运行一个程序,那么它也会挂起系统。
另一个选项是在一段时间内从/proc/stat 中提取空闲时间,但在不同的系统上,如果我让系统没有任何事件,我会看到不同范围的 cpu 空闲值。
有人可以帮助我如何实现系统暂停吗?
最佳答案
事情随时可能发生,也将会发生。有些事情被 cron 启动了。某人的 sleep() 调用完成,它会唤醒几毫秒。
我想说,想出一些有意义的启发法。例如,定期对/proc/loadavg 进行采样,如果给定时间段内负载平均值保持在某个阈值以下,则假设系统现在处于空闲状态。
关于linux - 如何知道系统是否完全空闲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662926/