如何确定正在运行的Linux机器是否空闲

问题描述 投票:7回答:3

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

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

有某种方法可以找到网络活动,例如,如果它们没有互联网流量,那么我的便笺开始执行另一个wget脚本,如果我的浏览器请求网页,它将停止执行该脚本。

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

linux
3个回答
3
投票

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

例如,在我当前的计算机上:

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

如果键入,则生成整个字节负载;如果不是,则生成块(不输出任何内容)。类似的东西也应该适用于鼠标,但是在我的系统上似乎没有。

默认情况下,输入设备的权限非常严格,例如,您可能希望对其进行chgrp。我绝对不会留下像root这样运行的东西!请注意,搞乱dev中的权限可能会带来很多安全隐患。如果是共享框,我绝对不会考虑的。

这不是一个编写简单的程序(您可以像一堆相互发信号的脚本那样来做,但是我个人不会),使用xscreensaver之类的东西(甚至只是CPU使用率)会更简单(但是也许没那么有趣了。


0
投票

我建议使用一种更简单的方法:只需告诉wget它会消耗多少带宽,就可以腾出一些钱来上网。

仅使用:

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

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.