Download Amministrare GNU/Linux

Transcript
2.4. ALTRI COMANDI
127
Il comando prende varie opzioni, le principali delle quali sono -o che permette di specificare
un file su cui scrivere i risultati al posto dello standard output, e -f che permette di specificare
un formato per i tempi. La descrizione completa del comando (comprese le stringhe usate per
l’opzione -f) si trova al solito nella pagina di manuale.
Tutti gli altri comandi relativi ai tempi hanno a che fare con la gestione del calendar time.
Qui si aggiungono ulteriori complicazioni; la prima è che esistono due orologi, quello di sistema,
usato dal kernel per tutte le sue operazioni, ed aggiornato via software dal kernel stesso, e
l’orologio hardware che funziona in maniera del tutto indipendente e che rimane in funzione
anche quando la macchina è spenta.188 Di solito il kernel legge l’orologio hardware all’avvio, per
impostare il valore iniziale dell’orologio di sistema, e poi non lo considera più.
La seconda complicazione è che il kernel non conosce assolutamente i fusi orari; per lui il
tempo è assoluto, e fa sempre riferimento al tempo standard universale (l’UTC appunto). Tutta
la gestione dei fusi orari è demandata alle applicazioni in user space che, tutte le volte che leggono
un tempo, devono essere in grado di convertirlo nell’ora locale,189 torneremo sull’argomento con
maggiori dettagli in sez. 3.1.4.
Se ci si pensa questa è la scelta più logica: non solo si evita di inserire una serie di informazioni
complesse all’interno del kernel, ma facendo cosı̀ i tempi di sistema sono sempre coerenti, e non
dipendono dal fuso orario in cui ci si trova (nel senso che i file modificati un’ora fa risulteranno
sempre con l’ora giusta qualunque cambiamento sia stato fatto nel fuso orario). Purtroppo
altri sistemi operativi usano l’ora locale per l’orologio di sistema che coincide con l’orologio
hardware, con tutti i problemi che questo comporta quando si deve cambiare fuso orario (con
file che possono anche risultare essere stati creati nel futuro), e soprattutto di incompatibilità
dei tempi in caso di dual boot.
Il principale comando che permette di leggere ed impostare l’orologio di sistema è date. Se
usato senza argomenti questo si limita a stampare data ed ora corrente nel formato standard:
piccardi@hain:~/truedoc/corso$ date
Fri Sep 19 12:45:42 CEST 2003
il comando prende come argomento o il tempo da impostare (operazione privilegiata che può
eseguire solo l’amministratore) o un formato di stampa per il tempo che modifica l’output del
comando facendogli stampare solo le parti di data volute.
Se si vuole impostare la data questa deve essere specificata con una stringa nella forma
MMDDhhmm[[CC]YY][.ss], dove i termini fra parentesi quadra sono opzionali. Con MM si indica
il mese (in numero), con DD il giorno, con hh l’ora, con mm il minuto, mentre l’anno si indica o
con le cifre finali YY o per intero con tanto di secoli come CCYY, infine i secondi ss devono essere
preceduti da un punto; ad esempio si può provare ad impostare l’orologio con:
piccardi@hain:~/truedoc/corso$ date 09191854
date: cannot set date: Operation not permitted
Fri Sep 19 18:54:00 CEST 2003
e l’operazione fallisce, dato che non si è l’amministratore, ma il tempo che si voleva impostare
viene comunque stampato a video.
Se invece l’argomento che si passa inizia con un “+” esso viene interpretato come una stringa
di formattazione per il risultato del comando. La stringa usa il carattere “%” per indicare una
direttiva di formattazione che verrà sostituita dall’opportuno valore, tutti gli altri caratteri
resteranno immutati. Le principali direttive sono riportate in tab. 2.37, l’elenco completo è
nella pagina di manuale.
188
è l’orologio che si trova sulla scheda madre, ed è alimentato della batteria che si trova su di essa.
il tutto è fatto attraverso delle opportune funzioni di libreria, che permettono di eseguire il compito in maniera
trasparente.
189