我有我的笔记本电脑,大部分时间都连接到互联网,互联网的速度非常慢。当我下载一些大文件时,由于互联网速度慢,我无法浏览网站。我的计划是编写一个bash脚本并在cron作业中运行它,当它发现系统处于空闲状态时,它会自动启动一个进程(这个进程会自动下载大文件),当我使用笔记本电脑时,进程是杀害。类似于屏幕保护程序(我在Scheduling in Linux: run a task when computer is idle (= no user input)找到了一些方法,但我不在我的机器上使用屏幕保护程序,我也不想依赖像xscreensaver这样的gnome应用程序)。我使用Ubuntu linux,有没有办法找到Linux mahine的适当空闲时间。
idle =没有键盘,触摸板或鼠标点击。
有没有办法以这种方式查找网络活动,比如如果他们没有互联网流量,那么我的sript开始执行另一个wget脚本,如果我的浏览器请求网页,那么它将停止执行脚本。
请建议我一个正确的方法..如果我使用空闲时间实现它,如果我考虑使用网络流量将更有效。
答案 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