Wiem, że uptime
drukuje czas, w którym maszyna była uruchomiona, ale czy istnieje łatwiejszy (niezawodny) sposób na ustalenie daty uruchomienia niż odliczanie od tego wyniku?
Próbowałem się rozejrzeć /proc
, ale nie znalazłem nic istotnego. Na moim jest też taka linia dmesg
:
[ 0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)
Ale zastanawiam się, czy ta metoda jest niezależna od dystrybucji i wersji jądra?
unreliable or hard
okołouptime
?uptime
zwraca ciąg „up 13 dni, 21:01” i od tego trzeba go policzyć./proc/uptime
.Odpowiedzi:
Znalazłem tu kilka poleceń . Spróbuj
who -b
lublast reboot | head -1
.who
podaje daty numeryczne, alast reboot
zwraca skrócone nazwy dni / miesięcy.źródło
who -b | cut -d' ' -f13
zwraca tylko datę (-f14 zwraca czas)last reboot
nie podałem prawidłowej daty!who -b
zrobił.last reboot
podał mi również niepoprawną datę, wtmp wyglądało na obróconą pierwszego dnia miesiącaTo wysyła zapytanie o czas pracy z jądra i wyświetla go w lokalnej strefie czasowej:
Uważaj na inne opcje.
last
Komenda przestanie działać tak szybko, jakwtmp
został obrócony.who
Komenda zależy od dostępności i integralnościutmp
. I/proc/1
może mieć bieżącą datę zamiast daty rozruchu, a nawet może być niedostępny w zahartowanym systemie. Edycja :dmesg
ma tylko bufor tylny o stałej długości, więc nie można go również wykonać. Dzienniki jądra mogą być włączone,/var/log
ale większość dystrybucji zachowuje tylko 8 tygodni.źródło
who -b
minutą lub dwiema w moim systemie dostępności przez 210 dni. Wygląda jakwho -b
zgłoszenie znacznika czasu, podczas gdy na to liczenie wpływają dryfy zegara, nawet jeśli są one okresowo korygowane przez biegntpd
.date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u
ustalono na: (który ma czas / datę w UTC)Natknąłem się na to pytanie, szukając sposobu na uzyskanie spójnego, możliwego do przeanalizowania czasu rozruchu , w przeciwieństwie do czasu od rozruchu, który zmienia się przy każdym wywołaniu.
Wygląda na to
uptime -s
, że sprawdzi się w większości systemów Linux.źródło
uptime -s
wyjścia np2017-08-09 01:23:45
. Najlepiej jest być najprostszym. To polecenie jest zawarte w pakiecie „procps”.uptime
W CentOS 6 (procps version 3.2.8
) nie wydają się potwierdzać to, niestety.uptime -s
nie zawsze zwraca stałe wyniki: superuser.com/q/1247713/71144Znalazłem
btime
linię,/proc/stat
gdy trochę się rozglądałemi po szybkim wyszukiwaniu znalazłem tę stronę: / proc / stat , która opisuje „Różne informacje o aktywności jądra dostępne w
/proc/stat
pliku”.źródło
awk '/btime/{print $2}' /proc/stat
uptime -s
,who -b
lub parsowanie/proc/uptime
ls -ld /proc/1
i warianty.Nie używaj do tego celu ls -ld / proc / 1. Czasami jest aktualizowany po s2disk lub s2ram.
W moim przypadku
who -b
powiedział:uruchomienie systemu 2 maja 09:51
Podczas gdy
ls -ld /proc/1
:dr-xr-xr-x 7 root root 0 maja 3 13:09 / proc / 1
ls -ld
do/proc
lub/sys
wydają się utrzymywać po wznowieniu, ale jest zależna od implementacji i może się zmienić w przyszłości, więc nie stosują takich metod. A jeśli zegar systemowy jest w czasie lokalnym, a nie UTC , mają ujemne przesunięcie.(Nie mam jeszcze prawa komentować odpowiedzi, więc otworzyłem nową odpowiedź. Przepraszam.)
EDIT:
uptime -s
po raz pierwszy odpowiedział w tej odpowiedzi przez mikegreilingźródło
Najprostszym sposobem jest sprawdzenie, kiedy uruchomiono / sbin / init (zawsze jest to pierwszy proces uruchamiany po załadowaniu jądra):
Widzę więc, że mój komputer uruchomił się od 6 minut do północy 27 marca 2011 r.
Jeśli chcesz użyć go w skryptach, możesz
stat
zamiast tego użyć polecenia:Te
%Y
określa czas, ponieważ katalog Ostatnia zmiana (czas tworzenia proces) w ciągu kilku sekund od początku epoki (1/1/70) i jest standardowym unix timestamp.źródło
W systemie Linux
wydaje mi się, że potrzebuję. Powyższy post jest dziwny.
/proc/uptime
nie zawiera wartości daty - należy ją odjąć od bieżącej godziny. Może miał na myśli:źródło
uptime -s
podaje wartość datyPod Bash, bez rur ani innych procesów; sam tekst:
(Po prostu ponownie użyłem
REPLY
domyślnej zmiennej, ale możesz wybrać cokolwiek potrzebujesz)źródło
To wydaje się solidne i da ci je w formacie UTC i ISO8601. (Usuń dwie ostatnie opcje, aby odpowiednio wyłączyć):
źródło
(jeszcze inny sposób na zrobienie tego, co jest przydatne w pewnych okolicznościach)
źródło
Komenda:
Wynik:
źródło
Jasne i zwięzłe za pomocą polecenia tuptime :
źródło