Ich möchte in gutem /proc/uptime
Format anzeigen als:
DD:HH:MM:SS
/proc/uptime
Gib mir die Systemzeit in Sekunden. Gibt es eine Standardlösung, die Sekunden in dieses Format konvertiert?
Hier ist ein Weg ohne perl
:
awk '{printf("%d:%02d:%02d:%02d\n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}' /proc/uptime
\n
für newline wäre gut!Sie können dies zum Beispiel mit Perl und einigen einfachen Berechnungen tun:
Wenn Sie die Sekunden nicht benötigen, können Sie den
uptime
Befehl einfach ausführen . Seine Ausgabe kann dann einfach in DD: HH: MM umgewandelt werden.Zum Beispiel mit (funktioniert nur so, wenn die Betriebszeit> 1 Stunde ist)
quelle
Nein, weil es kein wirklich schweres Problem ist. Teilen Sie die Anzahl der Sekunden durch 86400 mithilfe der Ganzzahldivision, um die Anzahl der Tage zu erhalten. Nehmen Sie den Rest und teilen Sie ihn durch 3600, um die Anzahl der Stunden zu erhalten. Teilen Sie den Rest durch 60, um die Anzahl der Minuten zu erhalten, und Sie haben die Anzahl der Sekunden übrig. All dies kann von der Shell aus mit dem
expr
Befehl ausgeführt werden, wenn Ihre Shell alt genug ist, um Arithmetik nicht nativ zu unterstützenEs ist ein schwieriges Problem, die Anzahl der Sekunden seit der Epoche zu nehmen und daraus ein von Menschen lesbares Datum zu machen. Daher gibt es Standardmethoden, um dies zu tun, z
date -r SECONDS
. B. von der Shell aus. Aber das ist ein anderes Problem.quelle
Anpassung des relevanten Teils dieser Antwort .
Solange Ihre Betriebszeit weniger als ein Jahr beträgt, können Sie den folgenden Befehl verwenden:
Ich extrahiere das erste Feld der Uptime-Datei, da zumindest unter Linux ein zweites Feld die gesamte Leerlaufzeit enthält. Ich behandle das als die Anzahl der Sekunden seit der Epoche und rechne das in den Tag des Jahres um, gefolgt von der Zeit in Stunden, Minuten und Sekunden. Da der Tag des Jahres um eins beginnt, subtrahiere ich bei meinem letzten
awk
Aufruf einen davon.quelle
Konvertieren von Sekunden seit der Epoche in Datum und Uhrzeit:
quelle