Servers Lifehack

Когда перезагружался сервер и почему

Сервер перезагрузился ночью, никто не признаётся. Как узнать точное время, причину и кто инициировал.

Проверено: Ubuntu 24.04, Debian 12, Windows Server 2022
Когда перезагружался сервер и почему

Незапланированная перезагрузка — это либо паника ядра, либо 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 -slast -xjournalctl -b -1. Windows: события 6008 и 1074 в журнале System. Пустые журналы означают внезапное отключение — ищите причину вне операционной системы.