Причины перезагрузки устройства Linux могут быть разными. Это может быть штатная перезагрузки операционной системы пользователем, автоматическая установка обновлений, ошибки в ядре, ошибки физического оборудования сервера или программные ошибки, отключение электропитания.
Если ваш сервер Linux перезагрузился незапланированно, вы сможете узнать причину перезагрузки несколькими способами.
Вывести время загрузки операционной системы:
$ who -b
system boot 2023-10-26 09:07
Также можно вывести информацию о перезагрузках хоста с помощью команды last:
$ last -x | head | tac
Вывести список последних загрузок Linux из журнала:
$ journalctl --list-boots
Либо всю историю перезагрузок:
$ last reboot
Чтобы получить информацию о причинах конкретной перезагрузки, выполните команду:
$ journalctl -b {num}-n
Замените {num} на индекс записи в выводе команды journalctl —list-boots.
В моем примере видно, что перезагрузка хоста инициализирована заданием cron, которое выполняло обновление веб-панели HestiaCP
В некоторых случаях для получения информации о причине перезагрузке Linux нужно анализировать лог файлы.
- В CentOS/RHEL/Rocky/Oracle Linux –/var/log/message
- Ubuntu/Debian — /var/log/syslog
Следующий bash скрипт можно использовать для быстрого поиска причин перезагрузки в системных логах:
$ sudo grep -iv ‘: starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel’ \
/var/log/messages /var/log/syslog /var/log/apcupsd* \
| grep -iw ‘recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups’
В нашем примере в логе нашлась строка:
systemd[1]: Started Unattended Upgrades Shutdown.
Это означает, что на данном хосте Ubuntu включено автоматические обновление unattended upgrade (можете отключить его).