检查linux机器是不是空闲

Posted

技术标签:

【中文标题】检查linux机器是不是空闲【英文标题】:Checking whether a linux machine is idle检查linux机器是否空闲 【发布时间】:2012-11-07 01:22:38 【问题描述】:

如果我的机器处于空闲状态,我想关闭它,并且正在寻找“空闲”的最可靠定义。它应该衡量计算机(最终用户的笔记本电脑或台式机)是否正在执行有用的工作。值得注意的是,我想检查以下几点:

没有用户活动

w 命令打印终端会话的空闲时间

xprintidle 似乎对 X 做同样的事情,使用 X 屏幕保护程序扩展

低负载平均

uptime 打印平均负载

没有正在运行的下载

bwm-ng 计算当前网络和磁盘使用情况

现在我的问题:

    是否有任何现有的工具可以执行这些检查?

    我们应该检查哪些其他活动以使其更可靠?打开网络连接可能吗?或者永远不应该被中断的进程白名单?我们能否使用一些机器学习技术以某种方式了解有用工作的特征?

期待您的意见和建议!

【问题讨论】:

您可能忘记了通过crontabat 运行的用户程序。他们没有控制终端。但是你为什么要问??? 我问的原因是因为昨天晚上,我开始了构建工作,然后就去睡觉了。如果机器可以在构建结束时关闭,那就太好了。然而,构建包含多个进程,有时会编译内容,有时会等待网络……所以我想我会寻找更通用的解决方案。 【参考方案1】:

恕我直言,直截了当的方法是 Perl 中的 shell

cpan -i X11::IdleTime # or any otherway to install X11::IdleTime module
sleep 2
perl -MX11::IdleTime -e 'print GetIdleTime(), $/;'

【讨论】:

这似乎和上面提到的 xprintidle 一样......这是我要求的更大难题的一部分。 我的命令或 xprintidle 在 crontab 作业中是否不够用? 嗯,不...正如我所写,X11 空闲时间只是众多方面之一。如果我仅根据该信息关闭机器,我可能会中断重要的下载。 我收到“无法在 @INC 中找到 X11/IdleTime.pm”消息。

以上是关于检查linux机器是不是空闲的主要内容,如果未能解决你的问题,请参考以下文章

仅在机器空闲时运行 cron 作业(linux)

检查记录数组中的空间是不是空闲

Linux for armv8 - 避免所有空闲处理器状态

C# IRC 和 Twitch 空闲断开连接?

Linux闲时自动抢占GPU脚本

Linux闲时自动抢占GPU脚本