Quando interrogate il sistema per sapere quando è stato modificato un file l'ultima volta, ad esempio con
$ stat -c '%x' testfile
2019-07-14 09:33:04.977645058 +0200
quello che ottenete in realtà è solo la rappresentazione in formato "umano" del numero memorizzato internamente nel filesystem.
$ stat -c '%X' testfile
1563089584
Un tempo per la memorizzazione di questo valore si utilizzava una variabile a 32 bit senza segno. Per questo motivo, ancora oggi, la pagina man di stat non indica come ottenere una precisione maggiore. Adesso i bit a disposizione sono molti di più, e consentono la memorizzazione fino al livello dei nanosecondi:
$ stat -c '%.X' testfile
1563089584,977645058
È interessante notare che nelle primissime versioni di Unix era stato scelto di utilizzare i numeri interi non per contare i secondi, ma i sessantesimi di secondo (questo perché ci si basava su oscilloscopi a 60 Hz). Si era nel 1971, e con 32 bit si potevano in questo modo rappresentare solo 828 giorni e mezzo circa, per cui fu deciso all'epoca (scusate il bisticcio di parole) di impostare epoch al 1 gennaio 1971. Solo successivamente fu cambiata l'impostazione e si passò alla memorizzazione dei secondi utilizzando il 1 gennaio 1970 come riferimento di base.
Capisco i motivi pratici della scelta, ma pensate a quanto sarebbe bello, ancora oggi, se fosse stato scelto come riferimento il primo passo dell'uomo sulla Luna, avvenuto pochi mesi (14.159.025 secondi, per la precisione) prima, alle 2:56:15 UTC del 21 luglio 1969.
$ date -d '@-14159025'
lun 21 lug 1969, 04.56.15, CEST
$ date -u -d '@-14159025'
lun 21 lug 1969, 02.56.15, UTC
Nessun commento:
Posta un commento