Usa date -s
:
date -s '2014-12-25 12:34:56'
Eseguilo come root o sotto sudo
. Cambiare solo uno dell'anno/mese/giorno è più una sfida e comporterà la ripetizione di bit della data corrente. Ci sono anche strumenti di data GUI incorporati nei principali ambienti desktop, solitamente accessibili tramite l'orologio.
Per modificare solo una parte dell'ora, puoi utilizzare la sostituzione del comando nella stringa della data:
date -s "2014-12-25 $(date +%H:%M:%S)"
cambierà la data, ma manterrà l'ora. Vedi man date
per i dettagli di formattazione per costruire altre combinazioni:i singoli componenti sono %Y
, %m
, %d
, %H
, %M
e %S
.
Ora di sistema
Puoi usare date
per impostare la data di sistema. L'implementazione GNU di date
(come si trova sulla maggior parte dei sistemi basati su Linux non incorporati) accetta molti formati diversi per impostare l'ora, ecco alcuni esempi:
imposta solo l'anno:
date -s 'next year'
date -s 'last year'
imposta solo il mese:
date -s 'last month'
date -s 'next month'
imposta solo il giorno:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
metti tutto insieme:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Tempo hardware
Ora l'ora di sistema è impostata, ma potresti volerla sincronizzare con l'orologio hardware:
Usa --show
per stampare l'ora dell'hardware:
hwclock --show
Puoi impostare l'orologio hardware sull'ora corrente del sistema:
hwclock --systohc
O l'ora di sistema sull'orologio hardware
hwclock --hctosys
Il comando per per modificare la data di sistema è date
.
Ci sono due modi per chiamare il comando date (in Linux):
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Facile
Il modo più semplice è usare date -s
in quanto consente l'uso di semplice relativo date
$ date -s yesterday; date
date: cannot set date: Operation not permitted
Sat Jan 5 07:21:07 EST 2019
Sun Jan 6 07:21:07 EST 2019
La data non è cambiata perché è stata eseguita con un utente limitato $
. Se vuoi effettivamente cambiare la data, usa root (#
) o sudo:
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
Quindi, cambiando qualsiasi parte di un parente date è facile come dargli un nome:
$ date -s "5 years ago"
Mon Jan 6 08:26:26 EST 2014
$ date -s "+6 months"
Sat Jul 6 08:28:39 EDT 2019
$ date -s "+3 hours -13 minutes"
Sun Jan 6 11:16:59 AST 2019
Le date assolute sono un po' più complesse in quanto richiedono maggiori dettagli:
$ date -s "2001-07-23 10:11:12"
Oppure puoi usare il comando date due volte:
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
sostituire uno qualsiasi dei %
da un valore valido e la data verrà impostata (solo come root).
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
diretto
Il secondo modulo di chiamata data viene utilizzato per direttamente modificare la data di sistema.
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Quindi :
date 11230812 # MMDDhhmm
Fisserà la data al 23 novembre alle 08:00 e 12:00.
BSD ha un comando simile ma un formato diverso ([[[[[cc]yy]mm]dd]HH]MM[.ss]).
Prova date
come utente limitato per vedere cosa farebbe (senza cambiare nulla):
$ date 11230812
date: cannot set date: Operation not permitted
Sat Nov 23 08:12:00 EST 2019
Oppure, se vuoi davvero cambiare la data, come root:
# date 11230812
# date
Sat Nov 23 08:12:00 EST 2019
Tieni presente che i servizi come NTP o chrony saranno interessati. E, se riavviato, la data verrà reimpostata su quella reale.
Aggiungi un YY per impostare l'anno:
$ date 1123081222
date: cannot set date: Operation not permitted
Wed Nov 23 08:12:00 EST 2022
Oppure un CCYY per impostare l'anno e secolo:
$ date 112308121982
date: cannot set date: Operation not permitted
Tue Nov 23 08:12:00 EST 1982