31

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

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

Я использую Ubuntu 10.04. Спасибо!

8 ответов8

25

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

10

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

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

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

4

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

2

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

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

1

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

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

last -F reboot

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

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

1

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

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .