Як надійно отримати позначку часу, під час завантаження якої система?


13

Я знаю про uptimeкоманду, але вона повертається секунди з моменту завантаження, тому, якщо я просто субстратую це число з поточної мітки часу, теоретично я можу отримати інший результат, якщо секунда зміниться після того, як я прочитав часову позначку часу і часу. uptime -sце те, що я хочу, але воно не доступне в центсах (як це обчислюється доктриною?). Чи можу я просто отримати ctime від / proc dir? Це, здається, дає мені належне число, але мені цікаво, чи кожна система Linux / proc створена під час завантаження.


Який формат ви хочете? HH:MM:SS? Щось ще?
тердон

1
@terdon, UNIX часова мітка
Fluffy

Відповіді:


12

Перш за все, crtimeце складно на Linux . Це сказав, запускаючи щось подібне

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

або

$ stat -c %Z /proc/ 
1414674003

це, мабуть, саме те, що вам потрібно. /procФайлова система визначається LFS стандартного і повинна бути там для будь-якої системи Linux, а також для більшості (всі?) UNIXen.

Крім того, якщо припустити, що вам не потрібні точні секунди, а потрібна лише правильна часова марка, ви можете використовувати who:

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

From man who: -b, --boot час останнього завантаження системи

Ви можете конвертувати це в секунди з епохи за допомогою GNU date:

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

1
Невеликим застереженням є те, що час завантаження визначається з RTC, або деякий за замовчуванням, якщо немає RTC. Цей час записується в utmp(за допомогою init) як запис "завантаження системи" і читається за допомогою who -b. Системний час може бути невірним до моменту запуску. who -bна моєму rPi сказано, що він завантажився в 1970 році, а інший ARM без програмного забезпечення говорить про 2008 рік ;-)
mr.spuratic

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.