Wie kann ich die seit dem letzten Systemstart verstrichene Zeit mit "Uptime" anzeigen?

17

Ich möchte die seit dem letzten Systemstart verstrichene Zeit mit anzeigen, möchte uptimeaber nicht, dass alle Informationen angezeigt werden. Ich möchte nur wissen, wie viele Stunden seit dem letzten Systemstart vergangen sind (dh: 18:17:59)

Adrian George
quelle

Antworten:

31

Um die seit dem letzten Systemstart verstrichene Zeit im hh:mm:ssFormat zu ermitteln, können Sie Folgendes verwenden:

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

/proc/uptime Pseudodatei enthält zwei Zahlen:

  • Die erste Zahl gibt an, wie lange das System in Sekunden aktiv war.
  • Die zweite Zahl gibt an, wie viel Zeit die Maschine in Sekunden im Leerlauf verbracht hat.

Wenn awkSie also verwenden, können Sie die erste Zahl nehmen und in ein hh:mm:ssFormat konvertieren .

Radu Rădeanu
quelle
15

So erreichen Sie die Betriebszeit in Sekunden:

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

So erreichen Sie die Betriebszeit in Minuten:

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

So erreichen Sie die Betriebszeit in Stunden:

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

Um x Stellen mit Genauigkeit zu erhalten, können Sie scale = x hinzufügen, z. B. für x = 2

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

Probier diese:

uptime | awk '{ print $3 }'

Tatsächlich wird das dritte Wort der von erzeugten Zeile gedruckt uptime.

Alen
quelle
3
Es klappt. Aber es scheint nicht der richtige Weg zu sein. Was ist, wenn das dritte Wort nicht die Uhrzeit ist? Mein drittes Wort ist beispielsweise "4", da meine Maschine 4 Tage lang läuft. Folgendes erhalte ich: "02:00:39 bis 4 Tage, 12:54, 2 Benutzer, Lastdurchschnitt: 0,03. 0,06, 0,06".
Adrian George
Oh: DI wusste nicht mehr als 1 Tag über die Zeit!
Alen
Ist es in Ordnung: Hast du jetzt einige Antworten darauf?
Adrian George
Nein Entschuldigung. uptimescheint keine Optionen zu haben, aber ich konnte auch nichts im Netz finden.
Alen
2

Eine triviale Modifikation, um Tage anzuzeigen:

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

Dies formatiert Ihre Ausgabe als 2-Null-Auffüllung:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
D4NI3LS
quelle