2010-07-24 20:12:11 +0000 2010-07-24 20:12:11 +0000
40
40

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

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

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

Ответы (8)

29
29
29
2010-07-29 09:30:27 +0000

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

16
16
16
2010-07-24 21:43:43 +0000

В файле /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 или эквивалент, чтобы убедиться, что журналы в них идут. Скорее всего, вам понадобятся права root'а для чтения файлов журнала.

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

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

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

/proc/acpi/battery/BAT0/

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

5
5
5
2015-03-26 14:50:50 +0000

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

Во-вторых, обратите внимание, что следующая команда является плохой практикой и попадает в категорию “бесполезное использование кошки” (google search for it)…

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) - это просто пустая трата времени и ресурсов.

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

Пример:

last -5 reboot shutdown root

Это даст вам последние 5 записей о перезагрузке, выключении и выходе из системы (консольное выключение включено) в 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

Надеюсь, это поможет всем, кто наткнется на этот поток. :-)

4
4
4
2010-07-24 20:16:46 +0000

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

2
2
2
2010-07-25 01:22:07 +0000

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

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

1
1
1
2017-01-19 18:02:30 +0000

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

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

last -F reboot

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

Спасибо https://unix.stackexchange.com/a/97597/174520

1
1
1
2014-05-07 13:52:00 +0000

Здесь есть один лайнер, чтобы перечислить все сообщения текущего дня:

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

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

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

0
0
0
2010-07-24 21:15:36 +0000

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

или,также есть способ без необходимости выполнения previlage:

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

и запишите мой блог на следующую сессию.

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

6
10
5
37
4