Действительно убивает процесс в Windows

Иногда программа на машине с Windows сходит с ума и просто зависает. Поэтому я вызываю диспетчер задач и нажимаю для него кнопку «Завершить процесс». Однако это не всегда работает; если я попробую это достаточно раз, то в конце концов он обычно умрет, но я бы очень хотел иметь возможность просто убить его немедленно. В Linux я мог бы просто kill -9, чтобы гарантировать, что процесс умрет.

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

Программа Есть ли или команда Windows, которая всегда убивает процесс? Бесплатное стороннее приложение было бы хорошо, хотя я бы предпочел иметь возможность делать это на машинах, за которые я сажусь впервые.

Блуждающие процессы - достаточно распространенная проблема в программировании, с которой я не согласен; это не вопрос не по теме.

Dan Moulding 03.09.2015 21:10

Я занимаюсь управлением процессами каждый день как разработчик. Это абсолютно актуально для меня!

John Fitzpatrick 05.10.2015 22:25

Я настоятельно не рекомендую удалять этот вопрос. +195, и это действительно ранний поиск Google по данному вопросу.

Joshua 26.04.2016 23:38

«если они напрямую не связаны с инструментами, используемыми в основном для программирования». Я столкнулся с этой проблемой в отношении того, что Visual Studio поддерживает запущенный процесс, и я не могу его убить. Закрытие Visual Studio помогло убить проблемный процесс.

Joakim 25.07.2016 17:18

Вы можете использовать Командлет PowerShell Stop-Process.

Rosberg Linhares 12.12.2016 19:36

Ааааааааа и он закрыт: /

Aaron Franke 04.12.2017 10:01

Если другая программа имеет ссылку на дескриптор процесса, программа не завершится, пока не будет выпущена. Она известна как зомби-программа - в программе ничего не осталось. Если бы он был завершен, это привело бы к сбою другой программы.

Noodles 11.04.2019 09:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
383
7
608 509
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

taskkill /im myprocess.exe /f

«/ F» означает «сила». Если вы знаете PID, вы можете указать это, как в:

taskkill /pid 1234 /f

Возможны и другие варианты, просто введите taskkill /? для всех. Параметр «/ t» убивает процесс и все дочерние процессы; это может быть вам полезно.

Просто примечание. Это особенно полезно, если вы пишете сценарии для управления сервером. kill.exe (из набора NT Res) приведет к завершению программы, но если у вас установлен обработчик сбоев (особенно windbg), это может вызвать проблемы, поскольку ОС будет видеть убитый процесс как сбойный и пытаться отладить Это. Taskkill не приведет к этой проблеме.

Aaron 02.10.2009 18:43

Я думаю, диспетчер задач вызывает Taskkill изнутри? они на самом деле одно и то же?

baye 17.10.2012 12:57

@lzprgmr - taskkill и "end task", вероятно, оба вызывают одну и ту же базовую функцию Windows "TerminateProcess" msdn.microsoft.com/en-us/library/windows/desktop/…

JosephStyons 17.10.2012 18:51

Это не более эффективно, чем «завершить процесс» из диспетчера задач.

Eddie 07.04.2013 16:58

Использование /T также уничтожит все процессы, запущенные этим процессом (например, использование «конечного дерева процессов» в диспетчере задач)

Kip 19.09.2013 16:58

Я пытался принудительно убить SugarSync.exe без перезагрузки (поскольку перезапуск SugarSync дважды, прежде чем он действительно заработает, заставляет его снова работать), но taskkill / T / F / IM SugarSync.exe не работает - хотя он утверждает "УСПЕХ"

Jon Coombs 03.04.2014 02:38

Основываясь на других ответах, которые я нашел в Интернете, я попробовал еще раз, на этот раз используя PsExec -sid cmd.exe, проверяя, с кем я действительно являюсь «nt Authority \ system», и запустил taskkill / T / F / IM SugarSync.exe . (Из Sysinternals.) Никаких кубиков. Он снова заявляет «УСПЕШНО», но процесс все еще отображается в диспетчере задач. То же самое, если я найду идентификатор процесса и запустил pskill -t 5652

Jon Coombs 03.04.2014 03:11

Прекрасно, я всегда искал эту команду (должен отметить, что я пришел сюда в поисках способа завершить процесс из командной строки, поэтому тот факт, что она не «более мощная», меня устраивает)

Jeff Davis 21.07.2014 19:01

Taskkill - это не общая команда Windows 7 (только в полной или профессиональной). Только гораздо более низкий tskill является частью всех последних версий Windows.

Lothar 27.12.2014 23:06

СПАСИБО! taskkill /pid 1234 /f работает, когда Завершить задачу отказывается работать! УХ ТЫ!

Hendy Irawan 28.04.2015 19:09

@Эдди. Это более эффективно, чем «завершить процесс» из диспетчера задач. Я просто убил им процесс, диспетчер задач убивать отказывался. Даже если он может запускать один и тот же код под капотом (я не говорю, что это так), у вас есть свобода запускать эту команду с разными уровнями привилегий.

Slava 28.09.2017 12:55

ERROR: The process "RMPARTUSB.exe" with PID 5224 could not be terminated. Reason: There is no running instance of the task Если нет работающего экземпляра, как у него PID?

Aaron Franke 02.01.2018 08:29

@AaronFranke Попробуйте «список задач» и обратите внимание на PID рядом с RMPARTUSB.exe в этом списке. Затем запустите taskkill / pid ### с правильным PID вместо ###.

JosephStyons 02.01.2018 08:46

Получите обозреватель процессов от sysinternals (теперь Microsoft)

Обозреватель процессов - Windows Sysinternals | Документы Microsoft

Это дает больше информации (и некоторую ограниченную возможность поиска дескрипторов блокировки), но я не добился большего успеха в уничтожении задач с его помощью, чем с базовым диспетчером задач. Некоторые процессы (например, антивирус и SugarSync.exe) просто отказываются умирать.

Jon Coombs 03.04.2014 02:39
Ответ принят как подходящий

«Завершить процесс» на вкладке «Процессы» вызывает TerminateProcess, который является наиболее эффективным способом, который Windows знает, чтобы убить процесс.

Если он не исчезнет, ​​он в настоящее время заблокирован в ожидании какого-либо ресурса ядра (вероятно, неисправного драйвера), и вы ничего не можете сделать (кроме перезагрузки), чтобы этот процесс ушел.

Взгляните на эту запись в блоге с сайта wayback, когда: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Системы на базе Unix, такие как Linux, также имеют ту проблему, когда процессы могут выжить после kill -9, если они находятся в так называемом «бесперебойном сне» (показано сверху и ps как состояние D), в этот момент процессы спят настолько хорошо, что не могут обрабатывать входящие сигналы (что и делает kill - отправляет сигналы).

Обычно непрерывный сон не должен длиться долго, но, как и в случае с Windows, сломанные драйверы или неработающие программы пользовательского пространства (vfork без exec) могут в конечном итоге спать в D навсегда.

Хотя я ненавижу, что это правильный ответ, я не сомневаюсь, что он более правильный, чем тасккилл ниже .... тупые глючные драйверы!

codetaku 23.07.2013 01:03

Немного менее раздражает, чем перезагрузка, выходить из системы / снова включаться. По-прежнему теряю работу, но, возможно, не так много времени.

awidgery 17.09.2013 17:19

Очевидно, это не самый лучший способ убить процесс. В Windows есть некоторые процессы, которые после того, как вы уничтожите их с помощью диспетчера задач, мгновенно возродятся, как будто ничего не произошло ...: /

rgajrawala 10.07.2014 07:22

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

pilif 11.07.2014 10:01

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

sliders_alpha 21.09.2014 18:28

Этот ответ нет вообще правильный. «Завершить процесс» - не самый лучший способ убить процессы, так как он не может убить служебные процессы (например). taskkill /f - самый совершенный.

user626528 14.01.2015 10:03

Это не должен быть принятым ответом. Эквивалент команды Linux «kill -9» - это команда «TaskKill / f». Очевидно, его нужно запускать в командной строке с повышенными привилегиями.

user2268788 24.03.2015 08:41

TaskKill / f вызывает только API TerminateProcess. Он делает то же самое, что и диспетчер задач (хотя вы правы, с повышенными привилегиями).

pilif 24.03.2015 15:31

Использование только диспетчера задач для попытки убить процесс эквивалентно вызову TaskKill без параметра / f.

user2268788 26.03.2015 05:27

@colacX это ошибка, а не функция. Он застрял в ожидании сигнала, поэтому не слышит никаких сигналов об окончании.

Mike 21.05.2015 22:36

В Windows 8 в диспетчере задач больше нет кнопки «Завершить процесс». У него есть только кнопка «Завершить задачу», которая пытается завершить процесс более мягким способом.

Throw Away Account 03.06.2015 16:50

@ ThrowawayAccount3Million Нет, он просто лучше его скрывает - вы найдете старый список процессов со знакомой кнопкой вызова TerminateProcess на вкладке Details :)

Luaan 22.10.2015 14:55

Я только что добился успеха, убив неубиваемый процесс java.exe, используя информацию здесь, которую он мог ожидать от драйвера устройства. Я отключил последовательное соединение, которое, как я знал, оно прослушивает, и процесс немедленно остановился.

Phil Goetz 23.08.2018 23:34

Кешированная версия мертвой ссылки: web.archive.org/web/20090530042534id_/http://blogs.technet.c‌ om /…

Vladimir Reshetnikov 12.06.2020 04:20

Один из приемов, который хорошо работает, - это подключить отладчик, а затем выйти из него.

В XP или Windows 2003 вы можете сделать это с помощью ntsd, который поставляется из коробки:

ntsd -pn myapp.exe

ntsd откроет новое окно. Просто введите «q» в окне, чтобы выйти из отладчика и завершить процесс.

Я знал, что это работает, даже когда диспетчер задач не может убить процесс.

К сожалению, ntsd был удален из Vista, и вам необходимо установить (бесплатный) инструменты отладки для windows, чтобы получить подходящий отладчик.

Спасибо вам большое за это. Добавьте "-c q" (без кавычек) к автозапуску, что сделает его идеальным убийцей процессов.

Joanis 11.05.2012 01:43

Когда Visual Studio и отлаживаемое приложение зависают, присоедините и уничтожьте старый экземпляр VS. Убийца может быть новым экземпляром VS, который затем может открыть старый проект и позволить вам продолжить работу.

Bruno Martinez 26.10.2013 03:30

Я не могу понять, как загрузить что-либо по этой ссылке, кроме winsdk_web.exe, который ничего не делает.

endolith 17.03.2014 23:57

Теперь вы можете получить его в Windows 10 SDK, запустив установщик и сняв все флажки, кроме «Инструменты отладки для Windows» (docs.microsoft.com/en-us/windows-hardware/drivers/debugger/‌…).

Coburn 24.05.2020 12:12

Когда доступ к ntsd запрещен, попробуйте:

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

ZeroWave также проста в использовании благодаря простой установке и очень дружелюбному графическому интерфейсу.

ZeroWave имеет три режима завершения, а в режиме «INSANE» может завершать любой процесс, который может выполняться в Windows.

Кажется, что ZeroWave не может убить avp.exe

настройте AT-команду для запуска диспетчера задач или проводника процессов как СИСТЕМУ.

AT 12:34 /interactive "C:/procexp.exe"

Если бы проводник процессов находился на вашем корневом диске C, это открыло бы его как SYSTEM, и вы могли бы убить любой процесс, не получая никаких ошибок доступа. Установите это примерно на минуту в будущем, тогда оно появится для вас.

Я получаю следующее предупреждение, когда пытаюсь это сделать, поэтому кажется, что оно больше не работает: «Предупреждение: из-за улучшений безопасности эта задача будет выполняться в ожидаемое время, но не в интерактивном режиме. Используйте утилиту schtasks.exe, если требуется интерактивная задача ('schtasks /? 'для подробностей) ".

WhiteKnight 03.01.2014 12:52

JosepStyons прав. Откройте cmd.exe и запустите

taskkill /im processname.exe /f

Если появляется сообщение об ошибке,

ERROR: The process "process.exe" with PID 1234 could not be terminated. Reason: Access is denied.

затем попробуйте запустить cmd.exe от имени администратора.

Запуск от имени администратора ошибка меняется. Теперь он говорит: ERROR: The process with PID 17888 (child process of PID 17880) could not be terminated. Reason: There is no instance of the task. и ссылается на родительский PID 17880. Поскольку он не может найти родителя, он не убьет осиротевшего ребенка. :(

Jesse Chisholm 07.06.2015 17:58

"вы также должны убить дочерний процесс, если какой-либо из них был создан, чтобы успешно убить ваш процесс" попробуйте этот stackoverflow.com/questions/12528963/…

Dhruv Chandhok 08.06.2015 13:26

В моем случае зомби-процесс, который я сказал ему убить, был дочерним Только и не было родителя, хотя зомби все еще думал, что у него есть родитель. В моем случае это решается с помощью пути к расширенной системе восстановления настроек Windows 8.1, но отменяется фактическая очистка любого диска и выполняется полная принудительная перезагрузка. Обычное выключение и перезагрузка - это действительно сон / гибернация (для экономии времени при запуске). Нетривиально заставить его выполнить выключение полный.

Jesse Chisholm 09.06.2015 16:12

«Доступ запрещен» означает, что процесс уже закрывается. Например, если вы просто пытались закрыть его ранее. Вам нужно подождать, пока он закроется.

Pacerier 21.07.2016 00:14

Результаты taskkill с правами администратора: Доступ запрещен.

amuliar 11.04.2018 14:12

Хакер процессов имеет множество способов убить процесс.

(Щелкните процесс правой кнопкой мыши, затем перейдите в Разное-> Терминатор.)

Не могу найти много подтверждений, так как поиск этого просто дает миллионы СКАЧАТЬ БЕСПЛАТНО !!! ссылки. Но он делает то, что обещает, с риском вирусов и всем остальным.

bwerks 20.06.2014 06:49

Эта программа у нас работала нормально. Мы убили две программы, которые нельзя было убить другими инструментами, упомянутыми в этой ветке.

Mr Ed 07.07.2014 20:48

@ Mehrdad Не могли бы вы объяснить, как вы попали на этот экран?

nuzzolilo 17.07.2014 10:03

@Nuzzolilo: Конечно! Щелкните правой кнопкой мыши процесс, перейдите в Разное-> Терминатор.

user541686 17.07.2014 10:04

Работает не на всех процессах, у меня был такой, который пережил все варианты.

Zitrax 23.03.2015 00:42

Тот работал там, где не удавались диспетчер задач, обозреватель процессов и тасккилл. Спасибо за совет!

sp00n 18.10.2015 22:38

@Zitrax: Я думаю, единственное, что вы можете попробовать в этот момент, - это выключить и снова включить. = P

user541686 18.12.2015 11:44

Самое смешное, что эта программа зависла, когда я пытался убить другой процесс. Поэтому мне пришлось использовать диспетчер задач, чтобы убить эту программу. :-)

Awais Umar 30.12.2015 21:23

Это заблокировало мой компьютер. Процесс ушел после перезагрузки. Молодец... -.-'

Pedro Oliveira 02.03.2016 17:24

У меня была эта проблема при закрытии приложения, запущенного из Visual Studio в режиме отладки, и я решил использовать ProcessHacker и «Разное-> Отсоединить от отладчика» в процессе ..

Francesco Argese 10.05.2016 16:36

@Mehrdad, когда мы выполняем нормальный процесс завершения из диспетчера задач, какой вариант он эквивалентен?

Pacerier 21.07.2016 00:12

@Pacerier: Первый.

user541686 21.07.2016 04:31

хакер процесса помог мне убить chrome.exe crashing process

Mobigital 12.09.2017 21:49

К сожалению, Терминатор удален в v2.39 :(

raymai97 16.11.2017 17:12

@ raymai97: О нет :(

user541686 16.11.2017 21:11

В Process Hacker 2 нет опции Терминатора.

Aaron Franke 02.01.2018 08:32

Используйте диспетчер задач, чтобы принудительно завершить работу программы. Для этого выполните следующие действия: - Откройте диспетчер задач с помощью сочетания клавиш CTRL + SHIFT + ESC. - Щелкните вкладку «Процессы» - выберите соответствующее имя изображения, которое вы ищете, для выхода - Нажмите кнопку «Завершить процесс». Спасибо.

Radadiya Nikunj 16.04.2018 18:57

К вашему сведению, иногда вы можете использовать SYSTEM или Trustedinstaller для завершения задач;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"

Другие вопросы по теме