Ich weiß, dass uptime
die Zeit gedruckt wird, zu der eine Maschine in Betrieb war, aber gibt es einen einfacheren (zuverlässigen) Weg, um das Datum des Starts zu ermitteln, als von dieser Ausgabe herunterzuzählen?
Ich habe versucht, mich umzusehen /proc
, aber nichts Relevantes gefunden. Es gibt auch eine Zeile wie diese auf meinem dmesg
:
[ 0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)
Aber ich frage mich, ob diese Methode Distributions- und Kernelversion-unabhängig ist?
unreliable or hard
Um was geht esuptime
?uptime
Gibt einen String wie "up 13 days, 21:01" zurück, und Sie müssen ihn danach zählen./proc/uptime
.Antworten:
Ich habe hier einige Befehle gefunden . Versuchen Sie
who -b
oderlast reboot | head -1
.who
gibt numerische Daten an, währendlast reboot
abgekürzte Tag- / Monatsnamen zurückgegeben werden.quelle
who -b | cut -d' ' -f13
gibt nur das Datum zurück (-f14 gibt die Zeit zurück)last reboot
habe nicht das richtige Datum angegeben!who -b
tat.last reboot
gab mir auch ein falsches datum, wtmp schien am ersten tag desDies fragt die Betriebszeit vom Kernel ab und zeigt sie in der lokalen Zeitzone an:
Seien Sie vorsichtig mit anderen Optionen. Der
last
Befehl funktioniert nicht mehr, sobaldwtmp
er gedreht wurde. Derwho
Befehl hängt von der Verfügbarkeit und Integrität von abutmp
. Und hat/proc/1
möglicherweise das aktuelle Datum anstelle des Startzeitdatums und ist auf einem gehärteten System möglicherweise sogar nicht verfügbar. Bearbeiten :dmesg
Hat nur einen Backbuffer mit fester Länge, ist also auch nicht realisierbar. Die Kernel-Protokolle befinden sich möglicherweise in,/var/log
aber die meisten Distributionen behalten nur 8 Wochen davon bei.quelle
who -b
ein oder zwei Minuten bei meinem 210-Tage-System überein . Sieht so auswho -b
, als würde ein Zeitstempel gemeldet, während diese Zählung in gewisser Weise von Zeitverschiebungen beeinflusst wird, auch wenn diese regelmäßig durch einen Lauf korrigiert werdenntpd
.date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u
(mit Uhrzeit / Datum in UTC)Ich stolperte über diese Frage , während nach einer Möglichkeit, eine konsistente, parseable zu erhalten Boot - Zeit , im Gegensatz zu , da Boot - Zeit , die bei jedem Aufruf ändert.
Es sieht so aus,
uptime -s
als würde dies auf den meisten Linux-Systemen funktionieren.quelle
uptime -s
Ausgänge zB2017-08-09 01:23:45
. Das ist am besten, indem man am einfachsten ist. Dieser Befehl ist im Paket "procps" enthalten.uptime
in CentOS 6 (procps version 3.2.8
) scheint dies leider nicht zu unterstützen.uptime -s
nicht immer konstant Ergebnisse zurück: superuser.com/q/1247713/71144Ich habe die
btime
Zeile/proc/stat
beim Stöbern gefundenund nach einer kurzen Suche fand ich diese Seite: / proc / stat explicit , auf der die "verschiedenen Informationen zur Kernelaktivität, die in der
/proc/stat
Datei verfügbar sind " aufgeführt sind.quelle
awk '/btime/{print $2}' /proc/stat
uptime -s
,who -b
oder Parsing/proc/uptime
ls -ld /proc/1
und Varianten.Verwenden Sie für diesen Zweck nicht ls -ld / proc / 1. Es wird manchmal nach s2disk oder s2ram aktualisiert .
In meinem Fall
who -b
sagte:Systemstart 2. Mai 09:51
Während
ls -ld /proc/1
:dr-xr-xr-x 7 root root 0 3. Mai 13:09 / proc / 1
ls -ld
für/proc
oder/sys
scheinen nach der Wiederaufnahme fortzufahren, aber es hängt von der Implementierung ab und kann sich in Zukunft ändern. Wenden Sie daher solche Methoden nicht an. Und wenn Ihre Systemuhr nicht UTC , sondern Ortszeit ist , haben sie einen negativen Versatz.(Ich habe noch keine Berechtigung zum Kommentieren von Antworten. Deshalb habe ich eine neue Antwort geöffnet. Entschuldigung.)
EDIT:
uptime -s
wurde in dieser Antwort zuerst von mikegreiling beantwortetquelle
Am einfachsten ist es, nachzusehen, wann / sbin / init gestartet wurde (dies ist immer der erste Prozess, der nach dem Laden des Kernels gestartet wird):
So kann ich sehen, dass meine Maschine am 27. März 2011 um 6 Minuten vor Mitternacht hochgefahren wurde.
Wenn Sie es in Skripten verwenden möchten, können Sie
stat
stattdessen den folgenden Befehl verwenden:Das
%Y
gibt die Zeit seit der letzten Änderung des Verzeichnisses (Prozesserstellungszeit) in Sekunden seit der Epoche (1.1./70) an und ist ein Standard-Unix-Zeitstempel.quelle
Unter Linux
scheint mir zu geben was ich brauche. Der obige Beitrag ist ungerade.
/proc/uptime
enthält keinen Datumswert - er müsste von der aktuellen Uhrzeit abgezogen werden. Vielleicht meinte er:quelle
uptime -s
liefert einen DatumswertUnter Bash, ohne Pfeifen oder andere Prozesse; nur text:
(Nur die
REPLY
Standardvariable wiederverwenden , aber Sie können wählen, was Sie brauchen.)quelle
Dies scheint robust zu sein und wird Ihnen im UTC- und ISO8601-Format angezeigt. (Entfernen Sie die letzten beiden Optionen, um sie jeweils zu deaktivieren.)
quelle
(Ein weiterer Weg, dies zu tun, der unter bestimmten Umständen nützlich ist.)
quelle
Befehl:
Ausgabe:
quelle
Klar und prägnant mit dem Befehl tuptime :
quelle