CMD/BAT - Закрытие процесса при перегрузке процессора

Ответить
Аватара пользователя
1S1N

CMD/BAT - Закрытие процесса при перегрузке процессора

Сообщение 1S1N »

Я в батниках ватник.. На просторах этого форума нашёл следующий код



Код:

Код: Выделить всё

@echo off
set file=%temp%\CPU.tmp
wmic cpu get LoadPercentage > %file%
sort /R %file% /O %file%
for /f "skip=1 tokens=1,*" %%q in (%file%) do set cpu=%%q
echo %cpu%
del %file% /Q

Данный код выводит загрузку процессора в процентах. Мне нужно, чтобы проверка процессора происходила раз в 10 секунд и при загрузке процессора больше чем на 80% происходило убийство определенного процесса (taskkill /f /im cmd.exe)
Аватара пользователя
alpap

Re: CMD/BAT - Закрытие процесса при перегрузке процессора

Сообщение alpap »

на загрузку процессора влияет очень много факторов и это не выход из положения, особенно в подобном случае, а именно:

-приведенный код написан на batch и запускается в окне процесса cmd.exe

-если будет перегрузка мы убьем этот процесс и более уже не сможем контролировать ситуацию - приехали

надо смотреть какой ИМЕННО процесс (возможно запускаемый из с помощью cmd.exe) грузит процессор и убивать его или несколько других тяжелых, не особо нужных сейчас, процессов, играть с приоритетами, чистить систему от мусора, особенно фоновые задачи и автозагрузка, может антивирус выключать или заменить, диск может уже почти весь занят или сильно фрагментирован - масса причин.

вот пара кодов на bat, но которые конечно не будут убивать себя. а нацелены на конкретное прожорливое приложение



Код:

Код: Выделить всё

:: Перезапуск процесса, если потребляет менее 20Мб памяти
@echo off
set "pr=programma.exe"
set "mb=20000"
cmd/c for /l %%# in () do tasklist /fi "imagename eq %pr%" /fi "memusage lt %mb%"^&^& (^>nul 2^>^&1 taskkill /f /im "%pr%"^& start "" "%pr%"^& exit/b)^& ^>nul timeout /t 1 /nobreak
pause

---



Код:

Код: Выделить всё

:: Завершить все одноименные процессы, если сумма занятой ими памяти превышает 120Мб
@echo off
set "spr=calc.exe"
set "sm=120000"
for /f "tokens=2 delims=:" %%a in ('tasklist /fi "imagename eq %spr%" /fo list') do set "m=%%a"
for /f "delims=" %%a in ('"(for %%a in (%m:~0,-3%) do @
Аватара пользователя
1S1N

Re: CMD/BAT - Закрытие процесса при перегрузке процессора

Сообщение 1S1N »

Скорее всего, я не корректно описал задачу. Мне нужно, чтобы при превышении порога загрузки процессора закрывалась определённая программа. В скобках taskkill cmd я написал для примера..



То есть мне нужно:

if загрузка процессора меньше 80%, else ждём 10 секунд и проверяем снова, но if загрузка процессора >80%, то taskkill /f /im %process% и exit
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - Закрытие процесса при перегрузке процессора

Сообщение DJ Mogarych »

Код:

Код: Выделить всё

powershell -command "while ((gcim Win32_Processor).LoadPercentage -le 80) {sleep 10}; (get-process calculator).Kill()"
Ответить

Вернуться в «Скриптовые языки администрирования Windows»