2010-08-18 106 views
5

我有我的筆記本電腦,大部分時間連接到互聯網,互聯網的速度很慢。當我下載一些大文件時,由於互聯網速度很慢,我無法瀏覽網站。我的計劃是編寫一個bash腳本並在cron作業中運行,當它發現系統處於空閒狀態時,它會自動啓動一個進程(該進程會自動下載大文件,最好是wget),當我使用筆記本電腦時,進程是殺害。類似於屏幕保護程序(我已經在Scheduling in Linux: run a task when computer is idle (= no user input)上找到了一些方法,但我沒有在我的機器上使用屏幕保護程序,我也不想依賴像xscreensaver這樣的gnome應用程序)。我使用Ubuntu Linux,有沒有辦法找到一個Linux mahine的適當的空閒時間。如何找出正在運行的Linux機器是否空閒

空閒=沒有鍵盤,觸摸板或鼠標點擊。

是否有某種方式來以這種方式查找網絡活動,就像他們沒有互聯網流量那麼我的sript開始執行另一個wget腳本,並且如果我的瀏覽器請求網頁,那麼它將停止執行腳本。

請給我一個合適的方式..我應該使用空閒時間來實現它,如果我考慮使用網絡流量,它會更有效。

+0

您是否考慮過流量整形? – 2010-08-18 13:22:00

+0

@chen如何在本地系統?我沒有任何線索!! – 2010-08-18 13:25:32

+1

我想你可以使用shorewall作爲解釋在http://www.shorewall.net/simple_traffic_shaping.html – 2010-08-18 14:47:26

回答

0

我建議一個更簡單的方法: 只要告訴wget它可能吃掉多少帶寬,留下一些免費的上網衝浪。

只需使用:

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

我不想給我的下載帶寬上限,因爲我不會在系統閒置時不好。 – 2010-08-18 13:39:33

+0

唯一的其他方法是作爲「屏幕保護程序」執行的自定義腳本。更加困難 - 取決於系統閒置的時間 - 甚至可能不會更快。 – 2010-08-18 13:48:17

+0

是唯一的方法做到這一點..我不知道屏幕保護程序如何實施。希望我能從中得到一些線索.. – 2010-08-18 13:50:38

3

有一種方式,但它是相當哈克。你可以聽到適當的設備(在/ dev區域)。

例如,我目前的機器上:

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

生成,如果我打字和蓋帽(輸出沒有),如果我不是字節的整個負載。類似的東西應該適用於鼠標,但它似乎不在我的系統上。

默認情況下,輸入設備的權限是非常嚴格的,你可能想要chgrp它們(例如)。我絕對不會留下類似root的東西!請注意,有很多可能的安全隱患會影響dev的權限。如果它是共享框,我肯定不會考慮這一點。

這不是一個簡單的程序來編寫(你可以將它作爲一組腳本互相發送信號,但我個人不會這麼做),並且使用xscreensaver之類的東西(或者甚至只是CPU使用情況)會更簡單(但也許不那麼有趣)。

+0

雖然適用於鍵盤..但對於鼠標/觸摸板,它甚至不適用於我.. – 2010-10-12 15:50:36