Avete mai pensato come sarebbe comodo avere una sveglia che faccia alzare il vostro pinguino in automatico?

Perché svegliare il pinguino in automatico?

Nel mio ambiente lavorativo utilizzo 3 computer Linux che completano la struttura di (purtroppo) altre tre macchine Windows. Di questi, due si occupano di effettuare copie di sicurezza dei dati importanti presenti sul resto della rete e di gestire l’invio di SMS; l’altro è il PC che utilizzo personalmente per gestire il lavoro della rete e tutte le attività collaterali al mio lavoro.

Purtroppo solo uno di questi PC viene regolarmente acceso dai colleghi la mattina: quello che gestisce gli invii degli SMS. Gli altri sono considerati “di serie B” perché non si vede il lavoro che svolgono normalmente durante tutto il corso della giornata, agiscono nell’ombra (non hanno nemmeno un monitor collegato).

Il mio PC ha il supporto a questa tecnologia?

Come gestire l’accensione di tutti i PC Linux ad orari e giorni prestabiliti? Semplice: se il vostro PC supporta RTC basterà un semplice comando per farlo addormentare e per dare la sveglia il giorno dopo!

Prima di tutto dobbiamo verificare il supporto di RTC. Per farlo basterà digitare, in una finestra di terminale, il seguente comando:

sudo rtcwake -m show

Se la risposta è rtcwake: /dev/rtc0: unable to find device: File o directory non esistente, probabilmente il vostro PC non supporta il device RTC oppure  deve essere attivato a livello di BIOS (riavviate il PC e date un occhio alla configurazione hardware).

Nel caso del mio portatile Toshiba Satellite, ad esempio, non è disponibile questa funzione, nel mio vecchio netbook Samsung invece, pur non essendoci voci specifiche nel BIOS, funziona alla perfezione e, la risposta al comando precedente è stato: alarm: off.

Una volta controllato che il PC abbia il supporto a RTC non dobbiamo fare altro che imparare ad usare il comando per impostare la sveglia.

Come si usa rtcwake?

Naturalmente il pinguino non si spegnerà ma “si addormenterà” in attesa di ripartire alla giusta ora del giorno impostato.

Personalmente utilizzo una voce di cron per addormentare il computer ma è possibile dare il comando manualmente quando si desidera spegnere.

Un modo veloce per farlo è impartire questo comando:

sudo rtcwake -m mem –date AAAAMMGGHHMMSS

in questo comando diciamo a rtcwake di salvare in memoria lo stato della macchina e di riattivarsi il giorno GG del mese MM dell’anno AAAA alle ore HH:MM:SS.

Altrimenti si può dare un lasso di tempo di attesa, prima della sveglia, espresso in minuti con il comando:

sudo rtcwake -m mem –date +5min

Questi che abbiamo visto sono i comandi più semplici da impartire. Un altro metodo, che permette maggiori personalizzazioni, è l’utilizzo del time_t, ovvero del numero di secondi a partire dal 1 gennaio 1970 alle ore 00:00 (semplice no?).

Grazie a questo sistema potremmo utilizzare il comando date di Linux per calcolare il time_t e settare la sveglia, ad esempio, il giorno dopo ad una determinata ora pur non sapendo quale sia il giorno dopo. Il comando sarà questo:

sudo rtcwake -m mem -t $(date +%s -d ‘tomorrow 09:00’)

In questo modo, domani alle 9 in punto, il nostro pinguino verrà svegliato!

Come gestire orari di accensione particolarmente complessi?

On-line ho trovato uno script molto carino che permette di risvegliare il PC tutti i giorni ad un’ora precisa escludendo la domenica ed il lunedi:

#!/bin/bash
if [[ $(date +%u) -gt 5 ]]; then
DATE=$(date +%s -d ‘next Tuesday 9:00’)
else
DATE=$(date +%s -d ‘tomorrow 9:00’)
fi
/usr/sbin/rtcwake -m mem -t $DATE

Il comando date +%u restituisce il numero del giorno partendo dal presupposto che 1 è rappresentato dal lunedì.

In questo caso se il giorno attuale è maggiore di 5 (ovvero se è sabato o domenica) allora il computer si dovrà riattivare alle ore 9.00 del martedì successivo, altrimenti il giorno dopo sempre alla stessa ora.

Analogamente lo script potrebbe essere utilizzato per situazioni ancora più complesse.

Questo script lo faccio partire in automatico con una voce di crond all’ora in cui devo spegnere il PC. In questo modo sono sicuro, che la mattina lavorativa successiva, troverò il computer già pronto ad aspettarmi ed il pinguino sveglissimo!

Altri metodi di addormentamento alternativi alla sospensione in memoria?

In realtà il parametro -m mem può essere  utilizzato in altro modo per evitare la sospensione in memoria.

Il metodo predefinito di sospensione è -m standby: questo stato offre un minimo risparmio di energia ed una velocità di riattivazione del sistema molto veloce;

Una alternativa è il metodo -m freeze che congela i processi ma offre un risparmio di energia peggiore del precedente perché, in realtà, il sistema è comunque attivo;

Il metodo che offre il miglior risparmio energetico è -m disk e tutto quello che il comando -m mem immaganizzerebbe in memoria viene salvato sul disco fisso. Attenzione: questo metodo risparmia talmente tanta energia che il mio pinguino Samsung ha deciso di restare a dormire;

Se vogliamo  solo impostare la sveglia, senza però procedere alla sospensione del sistema, basterà impartire il comando -m no mentre, se invece vogliamo disattivare una sveglia impostata, potremo utilizzare il metodo -m disable.

Per trovare il metodo migliore per il proprio utilizzo consiglio, naturalmente, di fare una serie di prove utilizzando il comando per risvegliare il pinguino dopo pochi minuti di pisolino.

Ti è piaciuto questo articolo? Condividilo con i tuoi amici sui social. Trovi i pulsanti di condivisione veloce qui sotto! Hai commenti? Non devi far altro che scriverli e riceverai sempre una risposta alle tue domande.