如何找出正在运行的Linux机器是否空闲

时间:2010-08-18 13:02:04

标签: linux

我有我的笔记本电脑,大部分时间都连接到互联网,互联网的速度非常慢。当我下载一些大文件时,由于互联网速度慢,我无法浏览网站。我的计划是编写一个bash脚本并在cron作业中运行它,当它发现系统处于空闲状态时,它会自动启动一个进程(这个进程会自动下载大文件),当我使用笔记本电脑时,进程是杀害。类似于屏幕保护程序(我在Scheduling in Linux: run a task when computer is idle (= no user input)找到了一些方法,但我不在我的机器上使用屏幕保护程序,我也不想依赖像xscreensaver这样的gnome应用程序)。我使用Ubuntu linux,有没有办法找到Linux mahine的适当空闲时间。

idle =没有键盘,触摸板或鼠标点击。

有没有办法以这种方式查找网络活动,比如如果他们没有互联网流量,那么我的sript开始执行另一个wget脚本,如果我的浏览器请求网页,那么它将停止执行脚本。

请建议我一个正确的方法..如果我使用空闲时间实现它,如果我考虑使用网络流量将更有效。

3 个答案:

答案 0 :(得分:3)

有一种方法,但它非常hacky。您可以收听适当的设备(在/ dev区域中)。

例如,在我当前的机器上:

sudo cat /dev/input/by-path/platform-i8042-serio-0-event-kbd

如果我正在键入并阻塞(不输出任何内容),则生成整个字节加载。类似的东西应该适用于鼠标,但它似乎不适用于我的系统。

默认情况下,输入设备的权限非常严格,您可能需要对它们进行chgrp(例如)。我肯定不会留下以root身份运行的东西!请注意,使用dev中的权限搞乱有很多可能的安全隐患。如果它是一个共享的盒子,我绝对不会考虑这个。

这不是一个简单的编写程序(你可以将它作为一堆脚本相互发信号但我个人不会这样做)并使用像xscreensaver(甚至只是CPU使用)这样的东西会更简单(但也许不那么有趣了。)

答案 1 :(得分:0)

我建议使用一种更简单的方法: 只需告诉 wget 它可能会消耗多少带宽,让一些人可以免费上网。

只需使用:

wget --limit-rate=1.5k http://example.com

答案 2 :(得分:0)

请参见https://unix.stackexchange.com/a/122816/65781

我将这些代码放入Github存储库中以进行更好的问题跟踪:https://github.com/ceremcem/on-idle