tempi di attività che cambiano il tempo segnalato


0

Ho uno script che si basa sul tempo in cui Ubuntu 18.04 è stato trovato da:

uptime -s

Salvo quel valore in un file quando eseguo lo script. Ho notato quando ho avviato Ubuntu che il tempo era:

uptime -s
2019-01-07 18:01:59

Dopo aver eseguito per poco più di due ore, lo stesso comando riporta ora un'altra volta (sono rimasto connesso nello stesso account per tutto questo tempo):

uptime -s
2019-01-07 18:01:58

Mi aspetto che il comando venga segnalato contemporaneamente nella stessa sessione di accesso. Ma in qualche modo il tempo cambia con 1 secondo (è prima ora).

Si tratta di un problema con il sistema operativo o lo strumento?

https://elixir.bootlin.com/linux/latest/source/fs/proc/uptime.c
struct timespec64 uptime;
ktime_get_boottime_ts64(&uptime);

Come posso ottenere il tempo di funzionamento del sistema senza tale fluttuazione?

Aggiornare:

Ho pensato di trovare la risposta in: Linux: ottenere la data e l'ora di avvio del sistema

Ma ho sbagliato, solo per fortuna, dopo aver eseguito alcuni altri test, si può vedere che è un problema del sistema operativo, il tempo ruota tra 58 e 59 a seconda dei nanosecondi:

$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.670091767
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.627339874
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.708332394
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.821526069
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.604129974
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.469767199
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:59.264900963
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.986611962
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.851955874
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:58.958194732
$ date -d "`cut -f1 -d. /proc/uptime` seconds ago" +"%F %T.%N"
2019-01-07 18:01:59.066728481

Sembra che non ci sia tempo di attività del sistema affidabile al secondo livello.


Risposte:


0

Ho trovato una risposta qui:

Linux: ottenere la data e l'ora di avvio del sistema

Questo comando sembra dare il risultato corretto, a differenza dei tempi di attività -s

 date -d "`cut -f1 -d. /proc/uptime` seconds ago"

Esempio:

date -d "`cut -f1 -d. /proc/uptime` seconds ago"
Mo 7. Jan 18:01:59 CET 2019

Sembra che i tempi di attività non siano affidabili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.