- Linux: получение даты и времени запуска системы
- 11 ответов 11
- Как в Linux узнать даты выключения и перезагрузки компьютера
- Последнее включение
- В какое время включался компьютер
- Последнее включение Linux
- Выключения
- Последнее выключение
- Время работы — аптайм (Uptime)
- Связанные статьи:
- Узнайте, сколько времени занимает загрузка вашей системы Linux
Linux: получение даты и времени запуска системы
Я знаю, что uptime печатает время, когда машина была запущена и работает, но есть ли более простой (надежный) способ получения даты запуска, чем обратный отсчет с этого вывода? Я попытался просмотреть /proc , но не нашел ничего актуального. На моем dmesg есть также строка, подобная этой: [ 0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812) , но мне интересно, является ли этот метод независимым от распространения и версии ядра.
11 ответов 11
Я нашел несколько команд здесь. Попробуйте who -b или last reboot | head -1 .
who дает числовые даты, а last reboot возвращает сокращенные названия дня / месяца.
date -d "`cut -f1 -d. /proc/uptime` seconds ago"
Будьте осторожны с другими вариантами. last команда перестанет работать, как только wtmp будет повернут. Команда who зависит от доступности и целостности utmp . И /proc/1 может иметь текущую дату вместо даты времени загрузки и даже может быть недоступна в защищенной системе. Редактировать: dmesg имеет только задний буфер фиксированной длины, так что это тоже нереально. Журналы ядра могут быть в /var/log но большинство дистрибутивов хранят их только 8 недель.
Я наткнулся на этот вопрос, когда искал способ получить согласованное, разбираемое время загрузки, а не время после загрузки, которое меняется при каждом вызове. Похоже, что uptime -s подойдет для большинства систем Linux.
cat /proc/stat | grep btime | awk '< print $2 >'
и после быстрого поиска я обнаружил эту страницу: /proc/stat объяснена, которая обрисовывает в общих чертах «Различные части информации о деятельности ядра, которые доступны в файле /proc/stat ».
- хорошо: uptime -s , who -b или парсинг /proc/uptime
- плохо: ls -ld /proc/1 и варианты.
Не используйте ls -ld /proc /1 для этой цели. Иногда обновляется после s2disk или s2ram.
В моем случае who -b сказал:
загрузка системы 2 мая 09:51
dr-xr-xr-x 7 root root 0 мая 3 13:09 /proc /1
ls -ld для /proc или /sys похоже, сохраняется после возобновления, но это зависит от реализации и может измениться в будущем, поэтому не используйте такие методы. И если ваши системные часы имеют местное время, а не UTC, они имеют отрицательное смещение.
(У меня пока нет права комментировать ответы, поэтому открыл новый ответ. Сожалею.)
РЕДАКТИРОВАТЬ: uptime -s впервые ответил в этом ответе mikegreiling
Самый простой способ — посмотреть, когда был запущен /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.
кажется, дает мне то, что мне нужно. Пост выше странный. /proc/uptime не содержит значения даты — оно должно быть вычтено из текущего времени. Может быть, он имел в виду:
date -d @$(( $(date +%s) - $(cut -f1 -d. /proc/uptime) ))
Под Bash, без труб и прочих процессов; просто текст:
(Просто повторно использовали переменную по умолчанию REPLY , но вы можете выбрать все, что вам нужно)
date -d @$(sed -n '/^btime /s///p' /proc/stat)
(еще один способ сделать это, который полезен в определенных обстоятельствах)
(echo ' Currently:' | tr "\n" ' ' ; date +"%Y-%m-%d %k:%M:%S" ; echo ' Up Since:' | tr '\n' ' ' ; uptime -s ; echo ' Duration:' | tr '\n' ' ' ; uptime -p)
Currently: 2016-05-09 9:06:29 Up Since: 2016-05-04 12:56:04 Duration: up 4 days, 20 hours, 10 minutes
# tuptime -t No. Startup Date Uptime Shutdown Date End Downtime 1 09:43:39 AM 08/08/2017 41 days, 0 hours, 51 minutes and 2 seconds 10:34:41 AM 09/18/2017 OK 10 seconds 2 10:34:51 AM 09/18/2017 1 minute and 16 seconds 10:36:07 AM 09/18/2017 OK 1 second 3 10:36:08 AM 09/18/2017 13 minutes and 20 seconds 10:49:28 AM 09/18/2017 OK 3 seconds 4 10:49:31 AM 09/18/2017 45 days, 0 hours, 1 minute and 20 seconds 09:50:51 AM 11/02/2017 OK 4 seconds 5 09:50:55 AM 11/02/2017 27 minutes and 25 seconds 10:18:20 AM 11/02/2017 OK 4 seconds 6 10:18:24 AM 11/02/2017 9 seconds 10:18:33 AM 11/02/2017 OK 9 seconds 7 10:18:42 AM 11/02/2017 4 days, 5 hours, 41 minutes and 47 seconds 04:00:29 PM 11/06/2017 OK 44 seconds 8 04:01:13 PM 11/06/2017 15 days, 17 hours, 33 minutes and 48 seconds 09:35:01 AM 11/22/2017 BAD 10 minutes and 40 seconds 9 09:45:41 AM 11/22/2017 8 hours, 9 minutes and 20 seconds 05:55:01 PM 11/22/2017 BAD 7 minutes and 8 seconds 10 06:02:09 PM 11/22/2017 1 hour, 7 minutes and 54 seconds 07:10:03 PM 11/22/2017 BAD 11 minutes and 30 seconds 11 07:21:33 PM 11/22/2017 1 hour, 58 minutes and 32 seconds 09:20:05 PM 11/22/2017 OK 5 seconds 12 09:20:10 PM 11/22/2017 14 minutes and 52 seconds 09:35:02 PM 11/22/2017 BAD 5 minutes and 52 seconds 13 09:40:54 PM 11/22/2017 4 minutes and 6 seconds 09:45:00 PM 11/22/2017 BAD 4 minutes and 51 seconds 14 09:49:51 PM 11/22/2017 11 hours, 15 minutes and 10 seconds 09:05:01 AM 11/23/2017 BAD 7 minutes and 20 seconds 15 09:12:21 AM 11/23/2017 3 days, 2 hours, 17 minutes and 40 seconds 11:30:01 AM 11/26/2017 BAD 27 minutes and 44 seconds 16 11:57:45 AM 11/26/2017 109 days, 19 hours, 12 minutes and 37 seconds 07:10:22 AM 03/16/2018 OK 17 seconds 17 07:10:39 AM 03/16/2018 25 days, 3 hours, 55 minutes and 59 seconds 12:06:38 PM 04/10/2018 OK 3 seconds 18 12:06:41 PM 04/10/2018 8 days, 19 hours, 3 minutes and 20 seconds 07:10:01 AM 04/19/2018 BAD 3 minutes and 52 seconds 19 07:13:53 AM 04/19/2018 77 days, 9 hours, 44 minutes and 39 seconds
Как в Linux узнать даты выключения и перезагрузки компьютера
Может быть множество причин, почему вы хотите узнать, когда ваш компьютер на Linux выключался, перезапускался и как долго он работает. Эта информация может пригодиться в поиске и устранении проблем, которые могли случиться, когда вы не наблюдали за системой. К счастью, Linux в большинстве дистрибутивов тщательно в автоматическом режиме ведёт журнал системных событий. Доступ к сохранённой информации из командной строки также очень простой.
Последнее включение
Как узнать, когда Linux последний раз был включён? Если вам нужно определить время и дату последнего включения, то вы можете использовать команду who с опцией -b. Эта команда выведет точное число и время включения. Для выполнения команды не нужны привилегии root:
В какое время включался компьютер
С помощью команды last вы можете получить список, когда система включалась или перезагружалась. Это необязательно время, когда использовалась команда reboot, или когда нажималась кнопка «Перезагрузить» на рабочем столе. Это журнал событий, когда система была загружена.
Последнее включение Linux
Если вам нужно узнать только время последнего включения компьютера с Linux, то вы можете использовать предыдущую команду, но передать её вывод по конвейеру команде head с опцией -1, чтобы она вывела только одну строку. Чтобы узнать также и время предпоследней загрузки, то замените опцию на -2 — будут выведены две строки.
Выключения
Команда last работает аналогичным образом и для выключений. Она перечисляет случаи, когда компьютер был полностью выключен. Эта команда выводит диапазоны, когда компьютер был отключён. Чтобы узнать время перезагрузки (если вам важно отделить эти случаи от включения), то вы можете проанализировать эти данные и данные от предыдущей команды, чтобы получить то, что вам нужно.
Последнее выключение
Как и с перезагрузками, если данных слишком много, то вы можете передать вывод по конвейеру команде head для получения только последнего времени отключения. Конечно, можно указывать разные опции, например, -3 для вывода трёх последний периодов простоя.
Время работы — аптайм (Uptime)
Наконец если вам нужно узнать, как долго ваш компьютер работает, вы можете использовать команду uptime, чтобы получить эту информацию. Дополните её с флагом -p, чтобы вывод был намного более читаемым. Вы получите значение в днях, часах и минутах, которое ваш компьютер включён начиная с последней загрузки.
Надеюсь эти команды помогут решить то, что вы хотите узнать о жизни вашей системы, когда вас нет рядом, о неожиданных перезагрузках и выключениях. Если в проблему вовлечены другие программы, то вы можете проверить определённые файлы журналов в «/var/log».
Связанные статьи:
Узнайте, сколько времени занимает загрузка вашей системы Linux
Когда вы включаете свой компьютер, у вас высвечивается производитель материнской платы, возможно сообщения на экране, меню загрузчика Grub , экран загрузки операционной системы и, наконец, экран входа в систему.
Вы проверяли, сколько времени прошло до входа в систему? Скорее всего нет. Если вам действительно не нужно знать, вы не будете беспокоиться о деталях времени загрузки.
Но что, если вам интересно узнать, как долго ваша Linux-система загружается? Запуск секундомера — это один из способов выяснить это, но в Linux у вас есть лучшие и более простые способы узнать время запуска вашей системы.
Чтобы получить общее представление о времени загрузки системы, мы можем запустить команду systemd-analysis.
Он будет содержать информацию о том, сколько времени потребовалось каждой службе для запуска, включая время, затраченное ядром, initrd и пользовательским пространством при загрузке.
Если вы запустите следующую команду в терминале:
На скриншоте выше видно что у меня на загрузку ядра ушло 9.057 сек + на загрузку пользователя со всеми службами ушло 23.666 сек, итого получилось 32.723 секунды. Довольно таки медленно если учитывать что у меня стоит SSD накопитель. Можно получить более детальную информацию о всех службах которые стоят в автозагрузке и время запуска каждой службы отдельно. Для этого надо ввести
Жмем ENTER и получаем результат, что-то вроде на скриншоте ниже:
Как видно из вышеприведенного вывода, что каждое устройство отсортировано по времени, вы можете просто узнать, какая служба занимает больше времени при загрузке, и проанализировать проблему.
Небольшой совет для ускорения времени загрузки
Отключаем сервис apt-daily-upgrade.service командами
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily-upgrade.service
она отвечает за автоматический поиск обновлений для операционной системы, лучше обновления запускать вручную командой
Также отключаем NetworkManager это сетевой менеджер, он отвечает за подключение к интернету. Если у вас WIFI можете смело выключать, после перезагрузки WIFI будет работать. Вводим команду:
sudo systemctl disable NetworkManager-wait-online.service
Если вы хотите отменить изменение, вы можете использовать эту команду:
sudo systemctl enable NetworkManager-wait-online.service
Теперь, пожалуйста, не отключайте различные службы самостоятельно, не зная, для чего они используются. Это может иметь опасные последствия.
Теперь, когда вы знаете, как проверить время загрузки вашей системы Linux, почему бы не поделиться временем загрузки вашей системы в разделе комментариев?