GNU/Linux >> Linux Esercitazione >  >> Linux

Come visualizzare la data e l'ora di riavvio del sistema Linux

Domanda: Dal comando uptime, so per quanti giorni e ore il sistema è attivo e funzionante. Esiste un modo semplice per visualizzare la data e l'ora esatte dell'ultimo riavvio del sistema? ad es. Esattamente da quale data e ora il sistema è stato installato e funzionante?

Risposta: Uptime fornisce queste informazioni indirettamente. Nell'esempio seguente, indica che il sistema è attivo e funzionante da "137 giorni, 6 ore e 13 minuti". Tuttavia, non puoi calcolare rapidamente la data e l'ora esatte di riavvio da questo.

$ uptime
 20:52:01 up 137 days,  6:13,  1 user,  load average: 0.00, 0.00, 0.00

Invece di dire che il sistema è stato installato e funzionante negli ultimi "137 giorni, 6 ore e 13 minuti", non sarebbe carino se dicesse che il sistema è in esecuzione da "Sab 14 maggio 20:38" (o qualcosa del genere Quello)? Questo è esattamente ciò che fa uno qualsiasi dei seguenti tre metodi.

1. Ultimo comando

Utilizzare il comando "ultimo riavvio", che visualizzerà tutta la data e l'ora di riavvio precedenti per il sistema. Questo preleva le informazioni dal file /var/log/wtmp.

$ last reboot
reboot   system boot  2.6.32-100.28.5. Sat May 14 20:38 - 23:55 (137+06:16)
reboot   system boot  2.6.32-100.28.5. Sun Apr 24 21:28 - 23:37 (15+09:08)  

wtmp begins Thu Sun 24 17:28:47 2011

2. Chi comanda

Usa il comando 'who -b' che mostra la data e l'ora dell'ultimo riavvio del sistema.

$ who -b
system boot  2011-05-14 20:38

3. Usa lo snippet di codice perl

Se insisti nell'utilizzare l'output del tempo di attività per calcolare l'ultimo tempo di riavvio, puoi farlo manualmente o utilizzare il seguente frammento di codice perl.

uptime | \
perl -ne '/.*up +(?:(\d+) days?,? +)?(\d+):(\d+),.*/; $total=((($1*24+$2)*60+$3)*60);
$now=time(); $now-=$total; $now=localtime($now); print $now,"\n";'

In questo esempio, il frammento di codice precedente ha visualizzato il seguente output:

Sat May 14 20:38:39 2011

Non ricordo esattamente da dove ho ottenuto il frammento di codice perl sopra. Ma questo non mi ha impedito di cercare di capire cosa fa. Cogliamo l'occasione per imparare il piccolo perl. Questo è ciò che fa lo snippet di codice perl sopra:

  • -n è l'opzione della riga di comando di Perl. Fa sì che il programma perl esegua un ciclo sull'input
  • -e è l'opzione della riga di comando di Perl. Indica che è un perl one liner (cioè perl non si aspetta un nome di file, qualcosa come "perl filename.pl").

Di seguito sono riportate le espressioni regolari utilizzate e le relative spiegazioni:

  • .*up + – Abbina qualsiasi cosa fino alla stringa "up" e uno o più spazi, per abbinare quanto segue dall'output del tempo di attività.
  • (?:(\d+) giorni?,? +) – Gruppo singolo
  • (?:(\d+) giorni?,? +)? – Il punto interrogativo seguito da questo gruppo dice che questo gruppo è facoltativo

Questa parte dice, se c'è una parte di giorni nell'output di uptime, acquisiscila o ignorala. Quanto segue scompone in dettaglio il gruppo sopra.

  • (?:pattern) – Parentesi non catturante che viene utilizzata per raggruppare, ma non acquisisce la memoria abbinata che è $ 1, $ 2 ecc ..
  • (\d+) – Abbina una o più cifre e inseriscila in $1 (perché questo è il primo gruppo)
  • Giorni SPAZIALI? – Abbina lo spazio letterale seguito da giorno o giorni
  • ,? – la virgola è facoltativa
  • SPACE+ – uno o più spazi

Quanto segue scompone questo modello (\d+):(\d+),.*/

  • (\d+) – Cattura la parte dell'ora in $ 2
  • :– Seguito da due punti
  • (\d+) – Cattura la parte dei minuti in $ 3
  • , – Abbina la virgola
  • .* – Abbina tutto il resto

Di seguito è riportato il resto della funzione del tempo nel frammento di codice perl sopra.

  • $total=((($1*24+$2)*60+$3)*60) – Calcola la quantità totale di secondi in cui il sistema è attivo. cioè (((giorni*24+ore)*60+minuti)*60 che fornisce i secondi (come un calcolo di epoca)
  • $ora=tempo(); – Ottieni l'ora corrente in secondi ( epoch time )
  • $ora-=$totale; – Sottrarre il tempo di funzionamento totale del sistema dall'ora corrente. Quindi questo sta ottenendo l'ora esatta in secondi quando il sistema è stato avviato
  • $ora=ora locale($ora); – Converti il ​​tempo di epoch (tempo in secondi). localtime restituisce data epoch time in formato leggibile dall'uomo
  • print $now,”\n” – Infine, questo stampa l'ora.

Linux
  1. Come controllare il tempo di attività del sistema in Linux

  2. Comandi di riavvio e spegnimento di Linux

  3. 7 Esempi di comandi della data di Linux per visualizzare e impostare la data e l'ora del sistema

  4. Ottenere la data e l'ora dell'avvio del sistema in Linux

  5. Da quanto tempo è in esecuzione il mio sistema Linux?

Come trovare la data e l'ora di riavvio del sistema Ubuntu

Come installare e utilizzare Git nel sistema Linux

Come trovare la data e l'ora di installazione del sistema operativo Linux

Come controllare la cronologia di riavvio del sistema e il tempo di avvio in Linux

Come impostare data e ora su Linux

Come modificare data, ora e fuso orario in Linux Mint 20