2010-08-18 13 views
5

Ho il mio laptop, il più delle volte connesso a internet, la velocità di internet è piuttosto lenta. Quando scarico alcuni file di grandi dimensioni, non sono in grado di navigare su siti Web a causa della bassa velocità di Internet. Il mio piano è scrivere uno script bash ed eseguirlo in cron jobs, quando trova il sistema inattivo, quindi avvia un processo (il processo che scaricherà i file più grandi preferibilmente wget) automaticamente e quando utilizzo il laptop, il processo è ucciso. Simile a uno screensaver (ho trovato alcuni modi a Scheduling in Linux: run a task when computer is idle (= no user input) ma non uso screensaver sulla mia macchina né voglio dipendere da un'applicazione gnome come xscreensaver). Io uso Ubuntu Linux, c'è un modo per trovare il giusto tempo di inattività di una mahine Linux.Come scoprire che una macchina Linux in esecuzione è inattiva o no

idle = nessuna tastiera, touch pad o clic del mouse.

C'è un modo per trovare attività di rete in questo modo, come se il loro non è il traffico Internet, quindi il mio script inizia a eseguire un altro script wget e se il mio browser richiede le pagine web, allora smetterà di eseguire lo script.

per favore suggerirmi un modo corretto .. dovrei implementarlo usando il tempo di inattività, sarà più efficace se uso il traffico di rete in considerazione.

+0

Hai considerato invece il traffic shaping? –

+0

@chen come farlo sul sistema locale? non ho idea!! –

+1

Suppongo che si può usare per shorewall che, come spiegato nel http://www.shorewall.net/simple_traffic_shaping.html –

risposta

0

mi consiglia un metodo molto più semplice: basta dire wget quanta banda si può mangiare fino, a lasciare un po 'gratuito per navigare sul web.

Basta usare:

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

Non voglio mettere cap di larghezza di banda per i miei download, perché farò nulla di buono, mentre il sistema è inattivo .. –

+0

L'unico altro metodo sarebbe uno script personalizzato eseguito come "salvaschermo". MOLTO più difficile, e - a seconda di quanto tempo il tuo sistema è inattivo - potrebbe non essere più veloce anche. –

+0

è l'unico modo per farlo .. mi chiedo come è stato implementato lo screensaver. spero di poterne ricavare qualche indizio .. –

3

c'è un modo ma è abbastanza hacky. È possibile ascoltare i dispositivi appropriati (nell'area/dev).

Ad esempio, sulla mia macchina attuale:

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

Genera un intero carico di byte se sto digitando e blocca (uscite nulla) se non lo sono. Qualcosa di simile dovrebbe funzionare per il mouse ma non sembra sul mio sistema.

Per impostazione predefinita, le autorizzazioni per i dispositivi di input sono piuttosto rigide, è possibile che si desideri eseguirne il controllo (ad esempio). Non lascerei sicuramente qualcosa del genere che gira come root! Essere consapevoli del fatto che ci sono molte possibili implicazioni sulla sicurezza di fare confusione con le autorizzazioni in dev. Definitivamente non lo considererei se fosse una scatola condivisa.

Questo non è un semplice programma di scrivere (si può essere in grado di farlo come un insieme di script di segnalazione tra loro, ma io personalmente non sarebbe) e usando qualcosa come xscreensaver (o anche solo l'utilizzo della CPU) sarebbe più semplice (ma forse meno divertente).

+0

che funziona per tastiera però .. ma per mouse/touchpad non funziona nemmeno per me .. –

Problemi correlati