Войти

Показать полную графическую версию : Мониторинг памяти занимаемой процессом


Romano
16-04-2023, 19:34
Приветствую!

Необходимо при достижении порога занимаемой памяти процессом, перезапускать его.
Тема избитая, но тем не менее...

Нашли процесс, если его объем памяти больше заданного порога в килобайтах.

tasklist /FI "IMAGENAME eq Program.exe"" /FI "MEMUSAGE gt 90000"

Тогда нужно выполнить блок перезапуска..сначала попытаться остановить службу, если не получилось, то завершить задачу и запустить службу.
=========
net stop ProgramService
тут пауза дать время на остановку службы
ping 127.0.0.1 -n 180 >nul
снимаем задачу, если все-таки не удалось корректно остановить службу
taskkill /F /IM Program.exe
запускаем службу
net start ProgramService
=========

Вопрос. Как правильно отловить условие, что если нашелся процесс и занял памяти больше порогового, то выполнить блок перезапуска, иначе выйти.

Скрипт будет в планировщике запускаться раз в N минут.

Sham
16-04-2023, 20:46
на PS что-то такое видимо Get-Process 'Program.exe' |
Where-Object WorkingSet -gt 90000000 |
ForEach-Object {
$sc = Stop-Service 'ProgramService' -PassThru -Force;
Stop-Process $_.Id -Force;
$sc | Start-Service;
}




© OSzone.net 2001-2012