linux - 如何知道系统是否完全空闲

标签 linux linux-kernel power-management

我想弄清楚,我们如何知道系统是否空闲?如果系统闲置了 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/

相关文章:

c - Linux内核中如何将int转换为char?

c - 为什么在 Linux 字符驱动读取调用中 size 总是 = 4096?

machine-learning - 通过强化学习进行多标准优化

android - 为什么Android中的文件 '/sys/power/state'总是 'mem'?

linux - localhost 在 Docker 容器中意味着什么?

linux - Linux Mint 上神秘的 find 命令占用内存

php - 在框架上跟踪 php 进程

linux - 在 XAMPP Linux 中安装 Laravel 5.3

c - 如何调用文件操作的读函数的正确方法?

iphone - 使用 cocos2d 应用程序降低功耗的可能性