Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Мониторинг памяти занимаемой процессом (http://forum.oszone.net/showthread.php?t=353419)

Romano 16-04-2023 19:34 3007578

Мониторинг памяти занимаемой процессом
 
Приветствую!

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

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

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 3007583

на 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; 
  }



Время: 17:34.

Время: 17:34.
© OSzone.net 2001-