Как узнать кто перезагрузил сервер 2018: Как узнать, кто перезагрузил (выключил) сервер Windows?
Содержание
Как узнать, кто перезагрузил (выключил) сервер Windows?
Если в вашей организации несколько системных администраторов, у вас периодически может возникать вопрос “Кто перезагрузил сервер?”. В этой статье я покажу как найти определения пользователя, который перезагрузил или выключил компьютер/сервер Windows.
Информация об учетной записи, которая отправила команду перезагрузки Windows сохраняется в журнал событий.
- Откройте консоль Event Viewer (
eventvwr.msc
) и перейдите в раздел Windows Logs -> System; - Включите фильтр журнала событий, выбрав в контекстном меню пункт Filter Current Log;
- В поле фильтра укажите EventID 1074 и нажмите OK;
- В журнале событий останутся только события выключения (перезагрузки), откройте любое из них;
- В событии от источника User32 будет указан пользователь, который инициировал перезагрузку Windows. В этом примере это пользователь a. novak.
The process C:\Windows\Explorer.EXE (MSK-DC03) has initiated the restart of computer MSK-DC03 on behalf of user WINITPRO\a.novak for the following reason: Other (Unplanned) Reason Code: 0x5000000 Shutdown Type: restart Comment:
С помощью GPO можно разрешить обычным пользователям (без прав администратора) перезагружать Windows Server.
Рассмотрим еще несколько примеров событий перезагрузки/выключения Windows. В качестве пользователя, запустившего перезагрузку операционную систему может быть указан NT AUTHORITY\SYSTEM.
Это означает, что перезагрузку инициировала одна из служб или программ Windows, запущенная от имени SYSTEM.. Например, это может быть процесс службы
wuauserv
, который закончил установку обновлений Windows и выполнил перезагрузку согласно настроенной политике Windows Update или с помощью задания модуля PSWindowsUpdate.
The process C:\Windows\uus\AMD64\MoUsoCoreWorker. exe (WKS-PC11S22) has initiated the restart of computer WKS-PC11S22 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Operating System: Service pack (Planned) Reason Code: 0x80020010 Shutdown Type: restart Comment:
Если ваша Windows запущена внутри виртуальной машины VMware, то если выполнить Restart Guest из консоли управления VMware, событие (выключения) будет выглядеть так:
The process C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (MSK-DC03) has initiated the shutdown of computer MSK-DC03 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown Reason Code: 0x80070000 Shutdown Type: shutdown
В этом случае выключение Windows также инициировано NT AUTHORITY\SYSTEM, т.к. службы интеграции VMware Tools запущены от имени системы.
Вы можете получить информацию о событиях перезагрузки с помощью PowerShell. Следующая команда выберет все события с EventID 1074:
Get-WinEvent -FilterHashtable @{logname=’System’;id=1074}|ft TimeCreated,Id,Message
Команда вернула описания всех событий перезагрузки и выключения Windows.
Можно использовать следующий скрипт PowerShell, который возвращает более короткий список с последними десятью событиями с именами пользователей, и процессами, которые инициировали перезагрузку/выключение сервера.
Get-EventLog -LogName System |
where {$_.EventId -eq 1074} |select-object -first 10 |
ForEach-Object {
$rv = New-Object PSObject | Select-Object Date, User, Action, process, Reason, ReasonCode
if ($_.ReplacementStrings[4]) {
$rv.Date = $_.TimeGenerated
$rv.User = $_.ReplacementStrings[6]
$rv.Process = $_.ReplacementStrings[0]
$rv.Action = $_.ReplacementStrings[4]
$rv.Reason = $_.ReplacementStrings[2]
$rv
}
} | Select-Object Date, Action, Reason, User, Process |ft
Также с помощью PowerShell можно быстро получить имя пользователя, который перезагрузил удаленный компьютер. Получить доступ к журналу событий на удаленном хосте можно с помощью формата Get-EventLog -ComputerName или вы можете подключиться к компьютеру через PSRemoting с помощью командлета Invoke-Command:
Invoke-Command -ComputerName rds2-12 -ScriptBlock {Get-WinEvent -FilterHashtable @{logname=’System’;id=1074} |select-object TimeCreated,Id,Message -first 1}
По событию 1074 можно найти только причины корректных (штатных) перезагрузок сервера. Если Windows была перезагружена не штатно (например, при потере электропитания, или появления BSOD), тогда нужно искать события с EventID 6008.
The previous system shutdown at 4:34:49 AM on 1/17/2022 was unexpected.
И конечно, вы не сможете понять, кто перезагрузил Windows, если журналы событий были очищены, или старые события перезатерты более новыми (в домене желательно настроить увеличенный размер журналов событий с помощью GPO).
Ubuntu Server — узнать причину перезагрузки
- 17 февраля 2023
Сервер с операционной системой Ubuntu Server 16 ушёл в перезагрузку. Да-да, не самая новая ОС. Анализ логов не дал понимания, что-же произошло. Как узнать причину перезагрузки?
Большая часть советов из Интернет не дала нужного результата, но потом, парочка статей подсказала где искать. В Oracle Linux есть сервис kdump, который в директорию /var/crash сохраняет аварийный дамп памяти и dmesg. В Ubuntu Server такой службы нет. Однако, где-то же Oracle Linux берёт dmesg даже после аварийного отключения питания сервера, где-то же эти данные есть…
Про pstore
Мы не первые у кого сервер не смог скинуть в файлы лога информацию об аварийном завершении работы. Ещё в доисторические времена у серверов выходили из строя диски, память, отключалось питание. Специально для нас в Linux была сделана такая штука как pstore — Persistent STORagE file system. Основная идея — сохранять лог ошибок где-то в энергонезависимой памяти. И отдельно от дисков. Для сохранения такой информации могут использоваться разные хранилища: — это ACPI ERST и UEFI.
https://lwn.net/Articles/434821
ERST (Error Record Serialization Table) — это механизм, указанный в спецификации ACPI (Advanced Configuration and Power Interface), который позволяет сохранять и извлекать информацию об аппаратных ошибках в энергонезависимое место (например, во флэш-память). Такой механизм обычно реализован в серверных платформах.
Не обычных старых компьютерах есть только одно место с энергонезависимой памятью — это часы реального времени, но там мало места, логи не сбросишь. Но более новые ПК (и сервера) могут иметь память в UEFI.
Выбор куда писать ошибки (ERST или UEFI) можно настроить при конфигурировании ядра. По умолчанию в Ubuntu Server используется ERST, но это не точно.
Ищем ошибки
В любом случае, если ваш сервер реализует механизм pstore, то хранилище в Debian-подобных системах после загрузки монтируется в /sys/fs/pstore.
При хранении дампов в ERST можно увидеть такую картину:
# ls -al /sys/fs/pstore total 0 drwxr-x--- 2 root root 0 Jul 28 11:35 . drwxr-xr-x 9 root root 0 Jul 28 11:35 .. -r--r--r-- 1 root root 17711 Jul 28 11:35 dmesg-erst-6990001317951307777 -r--r--r-- 1 root root 17755 Jul 28 11:35 dmesg-erst-6990001317951307778 -r--r--r-- 1 root root 17736 Jul 28 11:35 dmesg-erst-6990001317951307779 -r--r--r-- 1 root root 17746 Jul 28 11:35 dmesg-erst-6990001317951307780
При хранении дампов в UEFI картина немного другая:
# ls -al /sys/fs/pstore total 0 drwxr-x--- 2 root root 0 May 9 09:50 . drwxr-xr-x 7 root root 0 May 9 09:50 .. -r--r--r-- 1 root root 1610 May 9 09:49 dmesg-efi-155741337601001 -r--r--r-- 1 root root 1778 May 9 09:49 dmesg-efi-155741337602001 -r--r--r-- 1 root root 1726 May 9 09:49 dmesg-efi-155741337603001 -r--r--r-- 1 root root 1746 May 9 09:49 dmesg-efi-155741337604001
Вывод данных может и отличаться, здесь приведены примеры для Oracle Linux. В примере ниже он будет немного другой, для Ubuntu Server 16, но это и не принципиально.
Читаем dmesg
Итак, Ubuntu Server 16 аварийно перезагрузился. В логах ничего нет. Смотрим pstore.
ls -al /sys/fs/pstore
Есть один файл dmesg-erst-0. Дата создания файла говорит нам о том, что именно в это время произошёл сбой, как раз в этот период времени в логах ничего найти не удалось.
Копируем файл себе.
cp /sys/fs/pstore/dmesg-erst-0 /tmp
Теперь можно прочитать файл:
cat /tmp/dmesg-erst-0
Дата выводится в неудобном формате, можно исправить с помощью dmesg:
dmesg -T -F /tmp/dmesg-erst-0
Ориентироваться со временем стало проще. Следует понимать, что дата в dmesg живёт какой-то своей жизнью. Не стал разбираться, просто снизу отмотал до первого сбоя, ближе к времени последней записи:
------------[ cut here ]------------ kernel BUG at /build/linux-hwe-IBxGXO/linux-hwe-4.15.0/include/linux/fs.h:2804! invalid opcode: 0000 [#1] SMP PTI
Кто знает как преобразовать дату к удобоваримому виду — пишите в комментариях.
Статьи
https://blogs.oracle.com/linux/post/pstore-linux-kernel-persistent-storage-file-system
Теги
- Linux
Как узнать, кто перезапустил Windows Server
Средство просмотра журнала событий Windows Server
Если в вашей организации много системных администраторов, вам может понадобиться узнать, кто перезапускал сервер в определенное время. Этот пост покажет вам, как просматривать журналы выключения/перезагрузки/запуска на серверах Windows. В Windows есть отличное приложение под названием Windows Event Viewer, которое записывает все действия, происходящие на компьютере.
Служба журнала событий, являющаяся основной службой Windows, управляет средством просмотра событий Windows. Средство просмотра событий записывает историю запуска и завершения службы журнала событий. Он отслеживает активность каждого пользователя во время работы машины. На Windows Server/Desktop и ПК он регистрирует ошибки, информационные сообщения и предупреждения.
Вот другие связанные руководства по Windows Server: Как удалить Internet Explorer с вашего ПК с Windows или Windows Server, Как установить Windows Server 2022 на VirtualBox, Как установить IIS веб-сервера в Windows Server 2019, Сетевая файловая система: Как установить NFS Server на Windows Server и как перенести роли и компоненты на Windows Server 2022 с помощью WSMT.
Наиболее частые события запуска и завершения работы
Существует несколько событий, связанных с выключением и перезапуском ПК с Windows. Однако в этом посте мы покажем вам самые распространенные события:
- Идентификатор события 41: указывает, что ваш компьютер с Windows перезагрузился без полного выключения.
- Идентификатор события 6005: Этот код указывает на запуск службы журнала событий.
- Идентификатор события 1074: Ваш компьютер регистрирует это событие каждый раз, когда программа перезагружает или выключает ноутбук. Кроме того, это событие позволяет узнать, когда пользователь перезагрузил или выключил компьютер с помощью меню «Пуск» или сочетания клавиш CTRL+ALT+DEL.
- Идентификатор события 6006: Если ваш ПК с Windows выключается должным образом, это событие записывается.
- Идентификатор события 6008 : это событие иногда появляется в системном журнале, когда компьютер внезапно или неожиданно выключается.
- Идентификатор события 6009: Определяет название продукта Windows, версию, номер сборки, номер пакета обновления и тип операционной системы, обнаруженный во время загрузки.
- Идентификатор события 1076: Отслеживает первый раз, когда пользователь с разрешениями на завершение работы входит в компьютер после неожиданного перезапуска или завершения работы, а также причину этого события.
Как просмотреть журнал выключения и перезапуска из средства просмотра событий
Давайте рассмотрим весь процесс получения этих данных из средства просмотра событий Windows.
Чтобы открыть средство просмотра событий, нажмите Win + R , чтобы открыть диалоговое окно «Выполнить», и введите eventvwr .
Диалоговое окно «Выполнить»
На левой панели щелкните Журналы Windows и выберите Система . Вы увидите список событий, произошедших во время работы Windows, на центральной панели. Нажмите на Event ID Метка для сортировки данных по столбцу Event ID.
Средство просмотра событий
Если журнал событий большой, сортировка невозможна. Вы также можете создать фильтр, используя панель «Действия» справа. Просто выберите «Фильтровать текущий журнал».
Фильтрация журнала событий
В поле «Идентификаторы событий» введите 1074 или любой идентификатор события. В разделе «Зарегистрировано» вы также можете выбрать период времени.
Фильтр журнала событий
После выполнения всех процедур средство просмотра событий Windows будет отображать только события, связанные с завершением работы.
Как просмотреть журнал выключения и перезагрузки с помощью Windows PowerShell
Команду PowerShell Get-EventLog можно использовать для получения журналов выключения и перезагрузки в Windows из командной строки.
Введите следующую команду, например, для фильтрации 10 000 последних записей в журнале системных событий:
Get-EventLog System -Newest 10000 | ` Где EventId -in 41,1074,1076,6005,6006,6008,6009,6013 | ` Таблица форматов TimeGenerated, EventId, UserName, Message -AutoSize -wrap
Выполните следующую команду, чтобы просмотреть только события, связанные с выключением и перезапуском Windows:
Get-WinEvent -FilterHashtable @{logname = 'System'; идентификатор = 1074} | Format-Table -wrap
Надеюсь, вы найдете этот пост полезным. Если у вас есть какие-либо вопросы, не стесняйтесь оставлять их в разделе комментариев ниже.
Как узнать, кто или когда выполнил событие перезагрузки Windows Server
Все о средстве миграции SharePoint (SPMT)
Веб-части редактора сценариев/содержимого отсутствуют в SharePoint
ноябрь
26
Иногда событие перезагрузки сервера может произойти неожиданно. Независимо от того, являетесь ли вы системным администратором, владельцем приложения или просто ИТ-специалистом, вы несете ответственность за некоторые действия, происходящие на ваших серверах.
Информация о том, кто, где и когда очень важна для получения полной информации о действиях, происходящих на серверах. Это помогает определить любую желаемую/нежелательную активность. одним из таких действий является перезагрузка сервера.
Если вы ищете способ захвата
- Кто перезагружал сервер
- Когда перезагружался сервер информация все, что вам нужно.
Записывается событие, когда приложение вызывает перезагрузку системы или когда пользователь инициирует перезагрузку или завершение работы, щелкнув Пуск или нажав CTRL+ALT+DELETE, а затем нажав Завершение работы.
Кто перезагружал сервер
Чтобы узнать, кто перезагружал сервер Windows
Войдите в Windows Server.
Запустите средство просмотра событий (введите eventvwr в run).
В консоли просмотра событий разверните Журналы Windows.
Нажмите «Система» и на правой панели нажмите «Фильтровать текущий журнал».Событие перезагрузки сервера
В поле Фильтр текущего журнала введите 1074 в качестве идентификатора события. Это отфильтрует события, и вы увидите события только с идентификатором 1074.
Событие перезагрузки сервера с идентификатором
Теперь мы можем увидеть событие с идентификатором 1074.
Сведения о событии перезагрузки сервера
Дважды щелкните недавнее событие. В окне свойств события вы можете увидеть человека, инициировавшего перезагрузку сервера.
Нажмите Закрыть .
Событие перезагрузки сервера Подробнее
Когда сервер был перезагружен
Если вы являетесь пользователем Windows и хотите знать, когда ваш компьютер/сервер перезагружался в последний раз, то с помощью простой команды вы можете получить подробности.
Использовать системную информацию команда для получения информации о системе
Она называется systeminfo и, когда вы запускаете ее, она показывает вам длинный список информации о вашем компьютере, который также содержит информацию о том, когда система была перезагружена в последний раз, и она называется время загрузки системы.
Вы также можете отфильтровать время загрузки напрямую, используя следующую команду
systeminfo | find «Время загрузки системы»
Systeminfo CommandSystem Время загрузки
Получить предупреждение о перезагрузке сервера
Если вы хотите получать уведомления о перезагрузке сервера, вам необходимо выполнить следующие шаги.
Напишите сценарий powershell, чтобы при запуске сценария он проверял время работы сервера и, если время работы недавнее, скажем, менее последних 30 минут, затем отправляло уведомление по электронной почте.
Затем настройте планировщик задач с помощью сценария и запланируйте запуск задачи каждые 30 минут.
Эту конфигурацию необходимо выполнить на серверах, для которых требуется уведомление.
$Компьютер = $env:ИМЯ КОМПЬЮТЕРА
$Date = Get-Date -Format "дд-мм-гггг ЧЧ:мм:сс"
$os = Get-WmiObject -Класс win32_operatingsystem
$Boottime = $os.ConvertToDateTime($os.LastBootUpTime)
$uptime = (получить дату) - $os.ConvertToDateTime($os.LastBootUpTime)
$UptimeMin = [math]::Round($Uptime.TotalMinutes)
$FromAddress = $Компьютер +"@domain.com"
$eMailSubject = "***Предупреждение о перезагрузке системы*** Система:$Компьютер перезагружен $UptimeMin минут назад"
$eMailBody = "Компьютер $Computer недавно был перезагружен"
$recipients = ("[email protected]")
$eMailServer = "BW-EXCAS.