Jak wyświetlić czas, jaki upłynął od ostatniego uruchomienia systemu przy użyciu „uptime”?

17

Chcę wyświetlić czas, jaki upłynął od ostatniego uruchomienia systemu uptime, ale nie chcę, aby wyświetlał wszystkie te informacje. Chcę tylko wiedzieć, ile godzin minęło od ostatniego uruchomienia systemu (tj .: 18:17:59)

Adrian George
źródło

Odpowiedzi:

31

Aby uzyskać czas, jaki upłynął od ostatniego uruchomienia systemu w hh:mm:ssformacie, możesz użyć:

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

/proc/uptime pseudoplik zawiera dwie liczby:

  • Pierwszą liczbą jest czas działania systemu w sekundach.
  • Druga liczba określa, ile czasu maszyna spędziła bezczynnie w kilka sekund.

Tak więc, używając awkmożesz wziąć numer jodły i przekonwertować go w hh:mm:ssformacie.

Radu Rădeanu
źródło
15

Aby uzyskać czas sprawności w ciągu kilku sekund:

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

Aby uzyskać czas bezczynności w kilka minut:

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

Aby uzyskać czas pracy w godzinach:

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

Aby uzyskać x cyfr dokładności, możesz dodać skalę = x, np. Dla x = 2

echo "scale=2; $(awk '{print $1}' /proc/uptime) / 3600" | bc
realmoonstruck
źródło
2

Spróbuj tego:

uptime | awk '{ print $3 }'

W rzeczywistości wypisuje trzecie słowo linii wyprodukowanej przez uptime.

Alen
źródło
3
To działa. Ale to nie wydaje się właściwym sposobem na zrobienie tego. Co jeśli trzecie słowo nie jest czasem, na przykład moje trzecie słowo to „4”, ponieważ moja maszyna działa przez 4 dni. Oto, co otrzymuję: „02:00:39 do 4 dni, 12:54, 2 użytkowników, średnia ładowanie: 0,03. 0,06, 0,06”.
Adrian George,
Och: DI nie wiedziałem o czasie dłużej niż 1 dzień!
Alen
W porządku: d teraz masz jakieś odpowiedzi na to pytanie?
Adrian George
Nie przepraszam uptimeWygląda na to, że nie mam opcji, ale nie mogłem znaleźć niczego w sieci.
Alen
2

Trywialna modyfikacja pokazująca dni:

awk '{print int($1/86400)"days "int($1%86400/3600)":"int(($1%3600)/60)":"int($1%60)}' /proc/uptime
kserostomus
źródło
0

Spowoduje to sformatowanie danych wyjściowych jako wypełnienie 2 zerami:

awk '{printf("%02d:%02d:%02d",int($1/3600),int($1/3600/60),int($1%60))}' /proc/uptime
D4NI3LS
źródło