Wenn das System abrupt heruntergefahren wird. Kann man dann feststellen, wann es heruntergefahren wurde? Abrupt bedeutet aufgrund eines Stromausfalls oder aufgrund von Sysrq-Magic-Keys. Wenn ich alle paar Sekunden etwas protokolliere, habe ich eine Antwort, aber wenn nicht, gibt es dann eine andere Möglichkeit?
Ich verwende ein angepasstes konsolenbasiertes System. Kernel ist 5.3
Antwort1
Sie können anhand verschiedener Methoden feststellen, wann das System neu gestartet wurde: „Betriebszeit“, „letzter Neustart“ usw. Zu sagen, wann es heruntergefahren wurde, ist etwas schwieriger. Vorausgesetzt, Sie haben eine regelmäßige Systemprotokollierung über rsyslogd ausgeführt, können Sie das Modul immark als Ihre „alle paar Sekunden etwas protokollierende“ Routine verwenden, indem Sie Folgendes zu /etc/rsyslogd.conf hinzufügen:
$ModLoad immark
$MarkMessagePeriod <your time granularity here, in seconds>
$ActionWriteAllMarkMessages on
Sie können sich die Mühe auch sparen und stattdessen eines von zwei Dingen in der Nachrichtendatei ansehen. Wenn die Datei beim Systemstart rotiert wird, können Sie einfach mit „ls -l“ das Datum der vorherigen Version der Datei ansehen, um ziemlich genau zu erraten, wann das System aufgehört hat, in die Datei zu schreiben. Wenn Sie das Systemprotokoll nicht rotieren, können Sie die gleiche Genauigkeit erreichen, indem Sie sich den Zeitstempel der Zeile direkt vor der Zeile ansehen, die den Neustart anzeigt. Unsere Neustarts sehen ungefähr so aus:
2020-03-29T03:20:01.529437-04:00 [hostname] rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.2" x-pid="1615" x-info="h
ttp://www.rsyslog.com"] rsyslogd was HUPed
Wenn das Herunterfahren nicht unerwartet war, wird es einfacher, da der Systemlogger eine Nachricht in das Protokoll schreibt, bevor er beendet wird.
Wenn Sie die Systemprotokollierung deaktiviert haben, ist das alles natürlich hinfällig. Wenn Sie immer noch Dinge in Systemprotokollen protokollieren, können Sie die Statistiken einiger der dort vorhandenen Dateien abrufen und anhand der Änderungszeiten ungefähr herausfinden, wann das System nicht mehr funktionierte:
root# stat /var/log/messages-01.gz
File: '/var/log/messages-01.gz'
Size: 185529 Blocks: 368 IO Block: 4096 regular file
Device: fd06h/64774d Inode: 12689803 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: (658178/ mssgro)
Access: 2020-04-08 10:27:47.691311523 -0400
Modify: 2020-04-05 03:01:34.000000000 -0400 <=== that's what you're after ==
Change: 2020-04-07 18:16:40.252668164 -0400
Birth: -
Wählen Sie aus den ausgewählten Dateien die aktuellste aus, und Sie können ziemlich genau abschätzen, wann das System gestoppt wurde.
Nur ein paar Ideen, ich hoffe, sie helfen.