2010-08-18 3 views
5

Ich habe meinen Laptop, die meiste Zeit mit dem Internet verbunden ist, ist die Geschwindigkeit des Internets ziemlich langsam. Wenn ich einige große Dateien herunterlade, kann ich aufgrund der langsamen Internetgeschwindigkeit nicht auf Webseiten surfen. Mein Plan ist, ein Bash-Skript zu schreiben und es in Cron-Jobs zu starten, wenn es das System im Leerlauf findet, startet es einen Prozess (der Prozess, der die großen Dateien vorzugsweise wget herunterlädt) automatisch und wenn ich den Laptop benutze, dann ist der Prozess getötet. Ähnlich wie bei einem Bildschirmschoner (Ich habe einige Möglichkeiten gefunden bei Scheduling in Linux: run a task when computer is idle (= no user input), aber ich benutze keinen Bildschirmschoner auf meiner Maschine, ich möchte auch nicht auf gnome Anwendung wie xscreensaver abhängen). Ich benutze Ubuntu Linux, gibt es eine Möglichkeit, die richtige Leerlaufzeit eines Linux Mahine zu finden.Wie finden Sie heraus, dass ein laufender Linux-Rechner im Leerlauf ist oder nicht

Leerlauf = keine Tastatur, Touchpad oder Mausklicks.

Gibt es eine Möglichkeit, Netzwerkaktivitäten auf diese Weise zu finden, wenn sie keinen Internetverkehr haben, dann startet mein Script ein anderes wget-Skript und wenn mein Browser nach Webseiten fragt, wird das Skript nicht mehr ausgeführt.

bitte schlagen Sie mir einen richtigen Weg vor .. sollte ich es mit Leerlaufzeit implementieren, wird es effektiver sein, wenn ich den Netzwerkverkehr in Betracht ziehen.

+0

Haben Sie stattdessen Traffic Shaping in Betracht gezogen? –

+0

@chen wie man das auf lokalem System? Ich habe keine Ahnung!! –

+1

Ich nehme an, dass Sie shorewall für das verwenden können, wie in http://www.shorewall.net/simple_traffic_shaping.html –

Antwort

0

Ich würde eine viel einfachere Methode empfehlen: Sagen Sie einfach wget, wie viel bandwith es essen kann, um einige frei für das Surfen im Internet zu lassen.

Verwenden Sie einfach:

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

erklärt, ich möchte Bandbreitenobergrenze für meine Downloads nicht setzen, weil ich nichts tue, während das System im Leerlauf ist. –

+0

Die einzige andere Methode wäre ein benutzerdefiniertes Skript, das als "Bildschirmschoner" ausgeführt wird. Viel schwieriger, und - je nachdem, wie lange Ihr System im Leerlauf ist - kann es sogar nicht schneller sein. –

+0

ist es der einzige Weg, das zu tun .. Ich frage mich, wie der Bildschirmschoner implementiert wurde. hoffe, ich kann einen Hinweis davon bekommen. –

3

Es ist eine Möglichkeit, aber es ist ziemlich hacky. Sie könnten die entsprechenden Geräte (im Bereich/dev) hören.

Zum Beispiel auf meiner aktuellen Maschine:

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

Erzeugt eine ganze Ladung von Bytes, wenn ich die Eingabe und blockiert (Ausgänge nichts), wenn ich es nicht bin. Etwas Ähnliches sollte für die Maus funktionieren, aber es scheint nicht auf meinem System zu sein.

Standardmäßig sind die Berechtigungen für die Eingabegeräte ziemlich streng, Sie können sie (zum Beispiel) chgrp machen. Ich würde definitiv sowas nicht als root laufen lassen! Seien Sie sich bewusst, dass es viele mögliche Auswirkungen auf die Sicherheit gibt, wenn Sie sich mit den Berechtigungen in dev beschäftigen. Ich würde definitiv nicht darüber nachdenken, wenn es eine gemeinsame Box ist.

Dies ist kein einfaches Programm zu schreiben (Sie können es als eine Reihe von Skripts Signalisierung gegenseitig tun, aber ich persönlich würde nicht) und etwas wie xscreensaver (oder nur CPU-Nutzung) wäre einfacher (aber vielleicht weniger Spaß).

+0

das funktioniert für die Tastatur obwohl .. aber für Maus/Touchpad funktioniert es nicht einmal für mich .. –

Verwandte Themen