Как (какой программой) завершить процесс в Windows, который неактивен в течение X секунд и выполняется в нескольких экземплярах

878
Lennart Menzel

У меня запущено несколько экземпляров программы, и время от времени она перестает отвечать. Мне нужно проверить, не реагировали ли процессы X на> X секунд, и если да, убить этот точный процесс - не все экземпляры X, но этот особый.

Программы мониторинга, такие как Kiwi или Process Explorer, могут завершить только процесс с PID X или ВСЕМ экземпляром процесса X.

Кто-нибудь может поделиться программой / скриптом, который дает мне возможность решить эту проблему?

Более подробная информация: это игра, которую я запускаю на разных учетных записях, и иногда игра не может войти в сеанс и просто перестает отвечать на запросы, приводя к тому, что учетная запись становится AFK-игрой, и просто ждет, пока сессия прекратится, а затем учетная запись снова встает в очередь - когда это происходит часто, возникают штрафы или даже запреты ... Если учетная запись входит в сессию, как правило, ни у кого ничего не получается.

1

2 ответа на вопрос

2
Fayssal Ozilf

Вы можете играть по сценарию с использованием :loop, goto loopи timeoutExemple:
:loop
taskkill /im "League of Legends.exe" /fi "STATUS eq NOT RESPONDING"
timeout /t 5 /NOBREAK
goto loop

«/ NOBREAK» заставляет его проверять, верно ли условие «не отвечает» в течение 5-секундного тайм-аута? Потому что я только хочу, чтобы он убил задачу, если он не отвечает в течение> 5 секунд - нет, если он не отвечает в течение 2 секунд и (будет) продолжать работу Lennart Menzel 8 лет назад 0
к сожалению, нет, скрипт продолжает цикл и повторяет одну и ту же команду, которая завершает процесс в любое время, когда он обнаруживает, что он «не отвечает», тайм-аут задерживается только при выполнении следующей команды, что происходит через 5 секунд; таким образом, я думаю, что вам нужно будет использовать операторы if и else ... я пока не знаю, как это сделать, я попытаюсь выяснить это завтра утром ___ спокойной ночи. Fayssal Ozilf 8 лет назад 0
0
Fayssal Ozilf

попробуйте process Hacker .... это почти как проводник процессов, но с гораздо более сложными опциями, я не уверен, в чем ваша ситуация, я надеюсь, вы предоставите больше информации, например: игра в браузере или что-то вроде origin и steam ... .ect

Это игра «Лига легенд», которая устанавливается как обычная программа, а затем обычно запускается с помощью запускающего приложения, которое обновляет игру и позволяет вам стоять в очереди за играми. Я использую консольную очередь, которая позволяет мне запускать несколько учетных записей одновременно. Когда сторонняя консоль запуска запускается и входит в учетную запись, запускается игра (League of Legends.exe). Теперь может случиться так, что «League of Legends.exe» не отвечает и просто зависает. Программа должна искать приложения «League of Legends.exe» и завершать работу тех, кто не отвечает более 5 секунд. Lennart Menzel 8 лет назад 0
Сэр, я думаю, вам следует попробовать пакетный скрипт `script.bat` или` script.cmd` с использованием в нем команды `taskkill`. Вот пример` taskkill / im "League of Legends.exe" / fi "STATUS eq NOT RESPONDING" ` Fayssal Ozilf 8 лет назад 0
Единственная проблема в том, что ИДК, как установить его подождать 5 секунд Fayssal Ozilf 8 лет назад 0