Come si imposta programmaticamente l'orologio hardware su Linux?
Domanda
Linux fornisce la chiamata stime (2) per impostare l'ora di sistema. Tuttavia, mentre questo aggiornerà l'ora del sistema, non imposta l'orologio hardware del BIOS in modo che corrisponda all'ora del nuovo sistema.
I sistemi Linux in genere sincronizzano l'orologio hardware con l'ora di sistema allo spegnimento e ad intervalli periodici. Tuttavia, se la macchina viene spenta e riaccesa prima di una di queste sincronizzazioni automatiche, il tempo non sarà corretto al riavvio della macchina.
Come si garantisce che l'orologio hardware venga aggiornato quando si imposta l'ora di sistema?
Soluzione
Controlla la man-page di rtc per i dettagli, ma se hai effettuato l'accesso come root, qualcosa del genere:
struct rtc_time {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday; /* unused */
int tm_yday; /* unused */
int tm_isdst;/* unused */
};
struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
Altri suggerimenti
Dopo aver chiamato stime (), procedere come segue:
system("/sbin/hwclock --systohc");
Vedi la pagina man hwclock (8) per maggiori informazioni.
Vorrei iniziare leggendo il codice sorgente di hwclock.
Vorrei anche sottolineare che l'orologio hardware è preciso solo fino a un certo punto (ho visto sistemi che perdono / guadagnano un paio di secondi al giorno).
Hai mai pensato di configurare il demone del tempo di rete per sincronizzare l'orologio con un server del tempo?
È vero che questa sincronizzazione non avviene fino a quando non viene avviato il demone, quindi mantenere sincronizzato l'orologio hardware aiuta anche tra l'accensione e il punto in cui il daemon temporale si sincronizza con il time server.
Se l'editor di testo è diverso da kubuntu (kate è l'impostazione predefinita nell'editor), usa il tuo con il comando sudo
nel terminale.
- esegui terminale
- copia e incolla questo comando
sudo kate / etc / default / rcS
premi Invia - inserisci la password dell'utente (la tua password di accesso) premi Invia
- l'editor di testo si aprirà sul desktop
- cambia la riga
UTC = yes
inUTC=no
- e fai clic su Salva (nella parte superiore della barra della scheda dell'editor di testo)
- riavvio