Получение даты и времени системы запускается в Linux

Я знаю это uptime печатает время, машина была в порядке, но является там более легким (надежным) способом получить дату запуска, чем считание в обратном порядке от этого вывода?

Я пытался озираться /proc, но не нашел ничего уместности. Существует также строка как это на моем dmesg:

[    0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)

Но я задаюсь вопросом, является ли этот метод распределением и агностиком версии ядра?

44
задан 25.04.2019, 03:47

3 ответа

Я нашел некоторые команды здесь. Попробовать who -b или last reboot | head -1.
who дает числовые даты, в то время как last reboot возвраты сократили день / имена месяца.

40
ответ дан 07.12.2019, 08:37

Это запрашивает время работы от ядра и отображает его в локальном часовом поясе:

date -d "`cut -f1 -d. /proc/uptime` seconds ago"

Будьте осторожны относительно других опций. last команда прекратит работать как только wtmp был повернут. who команда зависит от доступности и целостности utmp. И /proc/1 мог бы иметь текущую дату вместо даты времени начальной загрузки и мог даже быть недоступным в укрепленной системе.Править: dmesg только имеет фиксированную длину, назад буферизуют, таким образом, это unrealiable, также. Журналы ядра могут быть в /var/log но большинство дистрибутивов только сохраняет 8 недель их.

23
ответ дан 07.12.2019, 08:37

Самый простой путь состоит в том, чтобы надеяться видеть, когда/sbin/init запустился (это всегда - первый процесс, который будет запущен после загрузок ядра):

# ls -ld /proc/1
dr-xr-xr-x 7 root root 0 2011-03-27 23:54 /proc/1

Таким образом, я вижу что моя машина, загруженная без 6 минут полночь 27-го марта 2011.

Если Вы хотите использовать его в сценариях, можно использовать stat команда вместо этого:

# stat --printf='%Y' /proc/1
1301266491

%Y указывает время, так как каталог был в последний раз изменен (время создания процесса) в секундах с эпохи (1/1/70) и является стандартной меткой времени Unix.

2
ответ дан 07.12.2019, 08:37

В Linux,

ls -ld /proc

кажется, дает мне, в чем я нуждаюсь. Сообщение выше нечетно. /proc/uptime не содержит значение даты – оно должно было бы быть вычтено с текущего времени. Возможно, он имел в виду:

date -d @$(( $(date +%s) - $(cut -f1 -d. /proc/uptime) ))
1
ответ дан 07.12.2019, 08:37

Теги

Похожие вопросы