Незапланированная перезагрузка — это либо паника ядра, либо OOM, либо чьи-то руки. Различить можно по журналам.
Время работы
uptime -p
uptime -s
-p покажет «up 12 days, 4 hours», -s — точную дату последней загрузки.
История перезагрузок
last reboot | head -20
Аварийные завершения отдельной командой:
last -x shutdown reboot | head -20
Если в выводе видно crash вместо shutdown — система не завершалась штатно.
Список загрузок в systemd
journalctl --list-boots
Вывод покажет ID каждой загрузки и её временные границы. Посмотреть журнал предыдущей загрузки:
journalctl -b -1 --no-pager | tail -50
Именно последние строки перед обрывом обычно и содержат причину.
Поиск причины
Кто инициировал перезагрузку:
journalctl -b -1 | grep -i "shutdown\|reboot\|poweroff" | tail -20
Паника ядра или аппаратная ошибка:
journalctl -k -b -1 -p err --no-pager
OOM killer — если процесс съел всю память:
journalctl -k -b -1 | grep -i "out of memory\|oom_kill"
Автоматические обновления, которые могли перезагрузить систему:
grep -i "reboot" /var/log/unattended-upgrades/unattended-upgrades.log 2>/dev/null | tail
Совет. Файл /var/run/reboot-required означает, что система ждёт перезагрузки после обновления ядра. Посмотреть, какие пакеты её требуют: cat /var/run/reboot-required.pkgs.
Windows Server
Время последней загрузки:
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Неожиданные завершения — событие 6008:
Get-WinEvent -FilterHashtable @{ LogName='System'; Id=6008 } -MaxEvents 10 |
Select-Object TimeCreated, Message
Кто и почему перезагрузил — событие 1074:
Get-WinEvent -FilterHashtable @{ LogName='System'; Id=1074 } -MaxEvents 10 |
Select-Object TimeCreated, Message | Format-List
Событие 1074 содержит имя процесса, пользователя и указанную причину — это самый информативный источник в Windows.
Если журналы пусты
Отсутствие записей о завершении само по себе диагностично: это означает внезапную потерю питания, жёсткий сброс через IPMI или аварийное завершение гипервизора. У VPS-провайдера обычно есть собственный журнал событий в панели управления — проверьте там.
Предупреждение. По умолчанию systemd-журнал может не сохраняться между перезагрузками. Если journalctl --list-boots показывает только текущую загрузку, включите постоянное хранение: sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald.
Итог
Linux: uptime -s → last -x → journalctl -b -1. Windows: события 6008 и 1074 в журнале System. Пустые журналы означают внезапное отключение — ищите причину вне операционной системы.