Для автоматизации перезапуска системной службы в Windows 10 Pro на основе условия, что загрузка процессора достигает 100% и не уменьшается в течение определенного периода времени, можно использовать **Task Scheduler** (Планировщик заданий) в сочетании с **Batch-файлом** и **встроенными инструментами Windows**. Вот пошаговая инструкция:
---
### 1. Создайте Batch-файл для перезапуска службы
Создайте текстовый файл с расширением `.bat`, например, `restart_service.bat`. Внутри файла добавьте команды для остановки и запуска службы. Например:
```batch
@echo off
net stop "Имя_службы"
timeout /t 5 /nobreak >nul
net start "Имя_службы"
```
Замените `"Имя_службы"` на имя службы, которую нужно перезапустить. Например, для службы `Spooler` (служба печати) команды будут выглядеть так:
```batch
@echo off
net stop "Spooler"
timeout /t 5 /nobreak >nul
net start "Spooler"
```
Сохраните файл, например, в `C:\Scripts\restart_service.bat`.
---
### 2. Создайте скрипт для мониторинга загрузки процессора
Создайте еще один Batch-файл, например, `monitor_cpu.bat`, который будет проверять загрузку процессора и вызывать `restart_service.bat`, если загрузка достигает 100% в течение определенного времени.
```batch
@echo off
set SERVICE_NAME=Имя_службы
set THRESHOLD=100
set DURATION=60
:CHECK_CPU
for /f "skip=1 tokens=2" %%p in ('wmic cpu get loadpercentage') do (
if %%p GEQ %THRESHOLD% (
set /a COUNTER+=1
if %COUNTER% GEQ %DURATION% (
call "C:\Scripts\restart_service.bat"
set COUNTER=0
)
) else (
set COUNTER=0
)
)
timeout /t 5 /nobreak >nul
goto CHECK_CPU
```
- `SERVICE_NAME` — имя службы.
- `THRESHOLD` — порог загрузки процессора (в данном случае 100%).
- `DURATION` — время (в секундах), в течение которого загрузка процессора должна оставаться на 100%, чтобы скрипт сработал.
- `COUNTER` — счетчик для отслеживания времени.
Сохраните файл, например, в `C:\Scripts\monitor_cpu.bat`.
---
### 3. Настройте Планировщик заданий (Task Scheduler)
1. Откройте Планировщик заданий (`taskschd.msc`).
2. Создайте новое задание:
- На вкладке **Общие** укажите имя задачи, например, `Monitor CPU and Restart Service`.
- Выберите **Запускать для всех пользователей**.
- Поставьте галочку **Выполнить с наивысшими правами**.
3. На вкладке **Триггеры** создайте новый триггер:
- Выберите **При запуске**.
- Поставьте галочку **Отложить задачу на** и укажите, например, 1 минуту.
4. На вкладке **Действия** создайте новое действие:
- Выберите **Запуск программы**.
- В поле **Программа или сценарий** укажите путь к `monitor_cpu.bat`, например, `C:\Scripts\monitor_cpu.bat`.
5. На вкладке **Условия** убедитесь, что галочки **Запускать только при питании от электросети** и **Пробуждать компьютер для выполнения задачи** сняты.
6. На вкладке **Параметры** поставьте галочку **Выполнять задачу сразу, если пропущен плановый запуск**.
---
### 4. Запустите задачу
1. Сохраните задачу и закройте Планировщик заданий.
2. Перезагрузите компьютер или запустите задачу вручную через Планировщик заданий.
---
### Примечания:
- Убедитесь, что у вас есть права администратора для выполнения этих действий.
- Если загрузка процессора часто достигает 100%, это может указывать на проблему с производительностью системы или конкретной службой. Рекомендуется провести диагностику.
- Для более сложных сценариев можно использовать сторонние инструменты мониторинга, такие как **Zabbix** или **Nagios**, но это выходит за рамки данного решения.
Теперь ваша система будет автоматически перезапускать указанную службу, если загрузка процессора достигает 100% и не уменьшается в течение заданного времени.