Есть ли журнал, который записывает выключения в Linux?

38

Мне было интересно, есть ли в Linux файл журнала, который записывает каждый раз, когда компьютер выключается?

Причина, по которой я спрашиваю, состоит в том, что я провожу некоторые тесты, касающиеся того, как долго батарея моего ноутбука работает при определенных условиях. Мой ноутбук настроен на автоматическое отключение, когда осталось около 10 минут заряда батареи, поэтому, если где-то есть файл журнала, который записывает, когда компьютер выключен, это значительно облегчит мне тестирование.

Я использую Ubuntu 10.04. Благодарность!

Майкл
источник

Ответы:

15

В /var/log/messagesфайле действительно должно быть что-то, касающееся выключений, например, у моего (CentOS 5) есть такие строки:

Jul 18 23:00:13 nero shutdown[2649]: shutting down for system halt
...
Jul 18 23:00:27 nero kernel: Kernel logging (proc) stopped.
Jul 18 23:00:27 nero kernel: Kernel log daemon terminating.

Проверьте свой /etc/syslog.confили /etc/rsyslog.confили его эквивалент, чтобы убедиться, что журналы идут туда. Вам, вероятно, понадобятся права суперпользователя для чтения файлов журнала.

Кроме того, хотя это и не выключения как таковые, «последняя» команда должна сообщать о перезагрузках.

Действительно ли в журналах вообще ничего нет во время вашего последнего закрытия?

При тестировании помните, что ваш компьютер знает, что ему осталось только 10 минут из-за информации, которую сообщает аккумулятор, которая может быть точной или неточной. Вместо ожидания выключений вы можете посмотреть информацию ACPI напрямую. На моем ноутбуке это здесь:

/proc/acpi/battery/BAT0/

Там файлы "state" и "info" выглядят интересно. Вы можете наблюдать за оставшейся емкостью в файле состояния, пока вы используете ноутбук в различных условиях, чтобы увидеть, как быстро он падает.

Другой
источник
3
Если я не пропустил это, я не вижу никаких сообщений о закрытии в / var / log / messages. Иногда появляется сообщение «Запись ядра (proc) остановлена», но не всегда. Однако работает last -xработает. Эта команда отображает строку, которая выглядит следующим образом: shutdown system down 2.6.32-23-generi Sun Jul 25 09:12 - 19:00 (-14815+-13: Спасибо за информацию о батарее. Моя система также имеет это, так что мне придется проверить это! Кажется, обновлять эти файлы каждые 5 секунд или около того. Благодарность!
Майкл
Еще раз спасибо. Мои результаты здесь: mangstacular.blogspot.com/2010/07/…
Майкл
28

Как насчет команды last -x shutdown?

Янне Пиккарайнен
источник
5

Сначала позвольте мне сказать, что я знаю, что это старая ветка. Я только комментирую, чтобы у других, которые находят это, пока копаются в сети (как я сделал сегодня), будет четкий ответ.

Во-вторых, обратите внимание, что следующая команда является плохой практикой и относится к категории «бесполезное использование cat» (поиск в Google) ...

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

Эта строка должна быть изменена на:

grep "`LC_ALL=en_en.utf8 date +"%b %e"`" /var/log/messages

grep, и большинство команд unix / linux (sed, awk и т. д.) в этом отношении не требуют, чтобы cat читал содержимое файлов. Достаточно указать путь к файлу и имя после команды, чтобы передать его в качестве аргумента. Добавление канала и другой внешней команды (cat) - это просто напрасная трата времени и ресурсов.

Наконец, что касается того, где найти запись о выключениях и / или перезагрузках системы, используйте последнюю команду, так как это именно то, для чего она предназначена. Он читает файл журнала / var / log / wtmp для всех записей входа / выхода. Поскольку выключения и перезагрузки на самом деле являются событиями входа / выхода из системы, они записываются здесь. То же самое относится и к выключению корневой консоли, это событие выхода из системы.

Пример:

last -5 reboot shutdown root

Это даст вам последние 5 записей перезагрузки, выключения и root (включая отключение консоли) в журнале wtmp.

Результат:

reboot    ~                         Mon Mar 23 14:51
shutdown  ~                         Mon Mar 23 14:49
root      console                   Mon Mar 23 14:49 - shutdown  (00:00)
reboot    ~                         Mon Mar 16 09:54
shutdown  ~                         Thu Mar 12 17:41

Я надеюсь, что это поможет любому, кто наткнется на эту тему. :-)

Дэвид Дреггорс
источник
В качестве альтернативы просто last -xили last -F -R -x runlevel. Для целей мониторинга батареи под Ubuntu grep hooks /var/log/pm-suspend.logтакже может быть полезно показать приостановку и возобновление работы. К сожалению, pm-powersave.log не хранит данные о временном подключении к сети переменного тока (если только вы не добавили свой собственный хук). help.ubuntu.com/community/PowerManagement/ReducedPower, возможно, стоит прочитать.
Седрик Найт
Что касается UUoC, $ CPU time << $ Brain time ...
MikeP
1
Каждый, кто упоминает «бесполезное использование кошки», вероятно, тратит больше времени, чтобы указать на этот факт, чем общее время процессора, затрачиваемое на бесполезное использование кошки всеми компьютерами на Земле (и иногда они бесполезно раздувают свой в противном случае хороший ответ как побочный эффект - - как этот)
ndemou
4

Файл / var / log / messages должен содержать эту информацию

ennuikiller
источник
В этом файле я ничего не видел, связанного с выключением. :( Я попытался очистить все остальные файлы в этом каталоге, используя временную метку времени, когда я выключал компьютер, но не повезло:grep -r "Jul 24 14:" /var/log/*
Майкл
Файл не существует на linux mint mate 17.
Eric Wang
2

если вы хотите отслеживать, как долго ваш компьютер работал в прошлом, вы можете использовать что-то вроде uptimed.

он поставляется с программой uprecords, которая показывает, как долго работает ваш компьютер.

user43856
источник
1

Вот однострочный список всех сообщений за текущий день:

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

Это было проверено на CentOS так YMMV.

И, конечно, есть last rebootи last shutdown(как уже упоминалось), но это слишком просто для моих нужд (предоставляет только даты).

Nux
источник
1

last reboot у меня работал на CentOS 6.7.

Чтобы показать год в выходных данных, чтобы это имело смысл, если у вас есть записи на сумму более одного года, сделайте

last -F reboot

Хотя я понимаю, что ключ -F не ​​работает в некоторых системах, таких как Solaris. Это очевидно часть последнего GNU, хотя.

Благодаря https://unix.stackexchange.com/a/97597/174520

Аарон Уоллентин
источник
0

если нет никакого журнала, вы можете попробовать добавить 'date >> mylog' в скрипт выключения (в некоторых случаях это называется rc.shutdown)

или есть способ без необходимости превалирования. бег:

while [ 1 ];do sleep 5;date>mylog;sync;done

и оставьте свой лог на следующей сессии.

шутник
источник