Come visualizzare il tempo trascorso dall'ultimo avvio del sistema usando "uptime"?


17

Voglio visualizzare il tempo trascorso dall'ultimo avvio del sistema usando uptime, ma non voglio che mostri tutte quelle informazioni. Voglio solo sapere quante ore sono trascorse dall'ultimo avvio del sistema (ad es .: 18:17:59)

Risposte:


31

Per ottenere il tempo trascorso dall'ultimo avvio del sistema in hh:mm:ssformato, è possibile utilizzare:

awk '{print int($1/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

/proc/uptime lo pseudo-file contiene due numeri:

  • Il primo numero indica da quanto tempo il sistema è attivo in secondi.
  • Il secondo numero indica quanto tempo la macchina ha trascorso inattivo in secondi.

Quindi, usando awkpuoi prendere il numero primo e convertirlo in hh:mm:ssformato.


15

Per ottenere il tempo di attività in pochi secondi:

awk '{print $1}' /proc/uptime

Per ottenere il tempo di attività in pochi minuti:

 echo $(awk '{print $1}' /proc/uptime) / 60 | bc

Per ottenere il tempo di attività in ore:

 echo $(awk '{print $1}' /proc/uptime) / 3600 | bc

Per ottenere x cifre di precisione è possibile aggiungere scale = x, ad esempio per x = 2

echo "scale=2; $(awk '{print $1}' /proc/uptime) / 3600" | bc

2

Prova questo:

uptime | awk '{ print $3 }'

In effetti, stampa la terza parola della linea prodotta da uptime.


3
Funziona. Ma non sembra il modo giusto per farlo. Che cosa succede se la terza parola non è l'ora, ad esempio la mia terza parola è "4", perché la mia macchina è in esecuzione per 4 giorni. Questo è quello che ottengo: "02:00:39 su 4 giorni, 12:54, 2 utenti, carico medio: 0,03. 0,06, 0,06".
Adrian George,

Oh: DI non sapeva l'ora più di 1 giorno!
Alen,

Va bene: d ora hai qualche risposta a questo?
Adrian George,

No scusa. uptimesembra non avere opzioni ma non sono riuscito a trovare nulla in rete.
Alen,

2

Una banale modifica per mostrare i giorni:

awk '{print int($1/86400)"days "int($1%86400/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime

0

Questo formatterà il tuo output come 2 zero padding:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
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.