我想知道,我们怎么知道系统是否闲置?我想暂停系统,如果它闲置了几分钟。我试图找到这个并尝试下面的脚本代码
#!/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 idle的不同值范围。
有人可以帮助我如何实施系统暂停。
答案 0 :(得分:2)
东西可以随时发生。有些东西被cron拉开了。某人的sleep()调用结束,它会唤醒几毫秒。
我会说,想出一些有意义的启发式方法。例如,定期采样/ proc / loadavg,如果负载平均值保持低于某个阈值,则在给定的时间段内,假设系统现在处于空闲状态。