GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So zeigen Sie das Datum und die Uhrzeit des Neustarts des Linux-Systems an

Frage: Aus dem Uptime-Befehl weiß ich, wie viele Tage und Stunden das System betriebsbereit ist. Gibt es eine einfache Möglichkeit, das genaue Datum und die Uhrzeit des letzten Neustarts des Systems anzuzeigen? d.h. seit wann genau läuft das System?

Antwort: Uptime gibt diese Informationen indirekt weiter. Im folgenden Beispiel bedeutet dies, dass das System seit „137 Tagen, 6 Stunden und 13 Minuten“ in Betrieb ist. Sie können daraus jedoch nicht schnell das genaue Datum und die Uhrzeit des Neustarts berechnen.

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

Anstatt zu sagen, dass das System die letzten „137 Tage, 6 Stunden und 13 Minuten“ in Betrieb war, wäre es nicht schön, wenn es heißt, dass das System seit „Sa 14. Mai 20:38“ läuft (oder so ähnlich). das)? Genau das macht jede der folgenden drei Methoden.

1. Letzter Befehl

Verwenden Sie den Befehl „letzter Neustart“, der das Datum und die Uhrzeit des vorherigen Neustarts für das System anzeigt. Dies entnimmt die Informationen aus der Datei /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. Wer befehligt

Verwenden Sie den Befehl „who -b“, der Datum und Uhrzeit des letzten Systemneustarts anzeigt.

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

3. Verwenden Sie das Perl-Code-Snippet

Wenn Sie darauf bestehen, die Uptime-Ausgabe zu verwenden, um die letzte Neustartzeit zu berechnen, können Sie dies manuell tun oder das folgende Perl-Code-Snippet verwenden.

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 diesem Beispiel zeigte das obige Code-Snippet die folgende Ausgabe:

Sat May 14 20:38:39 2011

Ich weiß nicht mehr genau, woher ich das obige Perl-Code-Snippet habe. Aber das hat mich nicht davon abgehalten, herauszufinden, was es tut. Lassen Sie uns diese Gelegenheit nutzen, um etwas Perl zu lernen. Das macht das obige Perl-Code-Snippet:

  • -n ist eine Perl-Befehlszeilenoption. Veranlasst das Perl-Programm, die Eingabe zu durchlaufen
  • -e ist eine Perl-Befehlszeilenoption. Zeigt an, dass es sich um einen Perl-Einzeiler handelt (d. h. Perl erwartet keinen Dateinamen, etwa „perl filename.pl“).

Im Folgenden sind der verwendete Regex und seine Erläuterungen aufgeführt:

  • .*up + – Übereinstimmung mit allem bis zur Zeichenfolge „up“ und einem oder mehreren Leerzeichen, um Folgendes aus der Verfügbarkeitsausgabe abzugleichen.
  • (?:(\d+) Tage?,? +) – Einzelne Gruppe
  • (?:(\d+) Tage?,? +)? – Fragezeichen gefolgt von dieser Gruppe bedeutet, dass diese Gruppe optional ist

Dieser Teil sagt, wenn es einen Teil der Betriebszeit gibt, erfassen Sie ihn oder ignorieren Sie ihn. Im Folgenden wird die obige Gruppe im Detail aufgeschlüsselt.

  • (?:pattern) – Nicht erfassende Klammern, die zum Gruppieren verwendet werden, aber nicht den übereinstimmenden Speicher erfassen, der $1, $2 usw. ist.
  • (\d+) – Passen Sie eine oder mehrere Ziffern an und fügen Sie sie in $1 ein (weil dies die erste Gruppe ist)
  • Weltraumtage? – Übereinstimmung mit dem wörtlichen Leerzeichen, gefolgt von Tag oder Tagen
  • ,? – Komma ist optional
  • SPACE+ – ein oder mehrere Leerzeichen

Im Folgenden wird dieses Muster aufgeschlüsselt (\d+):(\d+),.*/

  • (\d+) – Erfasst den Stundenteil in $2
  • :– Gefolgt von einem Doppelpunkt
  • (\d+) – Erfassen Sie den Minutenteil in $3
  • , – Übereinstimmungskomma
  • .* – Passen Sie alles andere an

Es folgt der Rest der Zeitfunktion im obigen Perl-Code-Snippet.

  • $total=((($1*24+$2)*60+$3)*60) – Berechnen Sie die Gesamtzeit in Sekunden, in denen das System UP ist. d.h. (((Tage*24+Stunden)*60+Minuten)*60 was die Sekunden ergibt (wie eine Epochenberechnung)
  • $jetzt=Zeit(); – Holen Sie sich die aktuelle Zeit in Sekunden ( Epochenzeit )
  • $jetzt-=$gesamt; – Subtrahieren Sie die gesamte Systemlaufzeit von der aktuellen Uhrzeit. Das ist also die genaue Zeit in Sekunden, wann das System gestartet wurde
  • $jetzt=Ortszeit($jetzt); – Konvertieren Sie die Epochenzeit ( Zeit in Sekunden ). localtime gibt die gegebene Epochenzeit in menschenlesbarem Format zurück
  • print $now,”\n” – Schließlich wird die Zeit gedruckt.

Linux
  1. So deaktivieren Sie Befehle zum Herunterfahren und Neustarten in Linux

  2. So überprüfen Sie die Betriebssystem- und Linux-Version

  3. So überprüfen Sie die Systemverfügbarkeit in Linux

  4. Befehle zum Neustarten und Herunterfahren von Linux

  5. 7 Beispiele für Linux-Datumsbefehle zum Anzeigen und Einstellen der Uhrzeit des Systemdatums

So finden Sie das Datum und die Uhrzeit des Ubuntu-Systemneustarts

So installieren und verwenden Sie Git in einem Linux-System

So finden Sie das Installationsdatum und die Uhrzeit des Linux-Betriebssystems

So überprüfen Sie den Systemneustartverlauf und die Startzeit in Linux

So stellen Sie Datum und Uhrzeit unter Linux ein

So ändern Sie Datum, Uhrzeit und Zeitzone in Linux Mint 20