Jak niezawodnie uzyskać znacznik czasu, w którym system został uruchomiony?


13

Zdaję sobie sprawę z uptimepolecenia, ale zwraca ono sekundy po uruchomieniu, więc jeśli odejmę tę liczbę od bieżącego znacznika czasu, teoretycznie mogę uzyskać inny wynik, jeśli sekunda zmieni się po przeczytaniu czasu działania i aktualnego znacznika czasu. uptime -sjest to, czego chcę, ale nie jest dostępne w centach (jak to jest obliczane btw?). Czy mogę dostać ctime z / proc dir? Wydaje mi się, że to daje mi odpowiednią liczbę, ale zastanawiam się, czy każdy system linuksowy ma / proc utworzony podczas rozruchu.


Jakiego formatu chcesz? HH:MM:SS? Coś innego?
terdon

1
@terdon, sygnatura czasowa UNIX
Fluffy

Odpowiedzi:


12

Przede wszystkim crtimejest trudny w Linuksie . To powiedziawszy, prowadzenie czegoś takiego

$ stat -c %z /proc/ 
2014-10-30 14:00:03.012000000 +0100

lub

$ stat -c %Z /proc/ 
1414674003

jest prawdopodobnie dokładnie tym, czego potrzebujesz. System /procplików jest zdefiniowany przez standard LFS i powinien być dostępny dla każdego systemu Linux, a także dla większości (wszystkich?) Systemów UNIXen.

Alternatywnie, zakładając, że tak naprawdę nie potrzebujesz precyzji sekund, ale potrzebujesz tylko znacznika czasu, możesz użyć who:

$ who -b
   system boot  2014-10-30 14:00

Od man who: -b, - czas rozruchu ostatniego uruchomienia systemu

Możesz to przekonwertować na sekundy od epoki za pomocą GNU date:

$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000

1
Drobne zastrzeżenie polega na tym, że czas rozruchu jest określany na podstawie RTC, lub niektórych domyślnych, jeśli brakuje RTC. Ten czas jest zapisywany jako utmp(przez init) jako pozycja „rozruchu systemu” i czytany przez who -b. Czas systemowy może być niepoprawny do momentu dobrego uruchomienia. who -bna moim rPi mówi, że uruchomił się w 1970 roku, a inny ARM bez RTC mówi 2008 ;-)
mr. spuratic

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.