Иногда программа на машине с Windows сходит с ума и просто зависает. Поэтому я вызываю диспетчер задач и нажимаю для него кнопку «Завершить процесс». Однако это не всегда работает; если я попробую это достаточно раз, то в конце концов он обычно умрет, но я бы очень хотел иметь возможность просто убить его немедленно. В Linux я мог бы просто kill -9, чтобы гарантировать, что процесс умрет.
Это также может быть использовано для написания пакетных сценариев, а написание пакетных сценариев - это программирование.
Программа Есть ли или команда Windows, которая всегда убивает процесс? Бесплатное стороннее приложение было бы хорошо, хотя я бы предпочел иметь возможность делать это на машинах, за которые я сажусь впервые.
Я занимаюсь управлением процессами каждый день как разработчик. Это абсолютно актуально для меня!
Я настоятельно не рекомендую удалять этот вопрос. +195, и это действительно ранний поиск Google по данному вопросу.
«если они напрямую не связаны с инструментами, используемыми в основном для программирования». Я столкнулся с этой проблемой в отношении того, что Visual Studio поддерживает запущенный процесс, и я не могу его убить. Закрытие Visual Studio помогло убить проблемный процесс.
Вы можете использовать Командлет PowerShell Stop-Process.
Ааааааааа и он закрыт: /
Если другая программа имеет ссылку на дескриптор процесса, программа не завершится, пока не будет выпущена. Она известна как зомби-программа - в программе ничего не осталось. Если бы он был завершен, это привело бы к сбою другой программы.





taskkill /im myprocess.exe /f
«/ F» означает «сила». Если вы знаете PID, вы можете указать это, как в:
taskkill /pid 1234 /f
Возможны и другие варианты, просто введите taskkill /? для всех. Параметр «/ t» убивает процесс и все дочерние процессы; это может быть вам полезно.
Просто примечание. Это особенно полезно, если вы пишете сценарии для управления сервером. kill.exe (из набора NT Res) приведет к завершению программы, но если у вас установлен обработчик сбоев (особенно windbg), это может вызвать проблемы, поскольку ОС будет видеть убитый процесс как сбойный и пытаться отладить Это. Taskkill не приведет к этой проблеме.
Я думаю, диспетчер задач вызывает Taskkill изнутри? они на самом деле одно и то же?
@lzprgmr - taskkill и "end task", вероятно, оба вызывают одну и ту же базовую функцию Windows "TerminateProcess" msdn.microsoft.com/en-us/library/windows/desktop/…
Это не более эффективно, чем «завершить процесс» из диспетчера задач.
Использование /T также уничтожит все процессы, запущенные этим процессом (например, использование «конечного дерева процессов» в диспетчере задач)
Я пытался принудительно убить SugarSync.exe без перезагрузки (поскольку перезапуск SugarSync дважды, прежде чем он действительно заработает, заставляет его снова работать), но taskkill / T / F / IM SugarSync.exe не работает - хотя он утверждает "УСПЕХ"
Основываясь на других ответах, которые я нашел в Интернете, я попробовал еще раз, на этот раз используя PsExec -sid cmd.exe, проверяя, с кем я действительно являюсь «nt Authority \ system», и запустил taskkill / T / F / IM SugarSync.exe . (Из Sysinternals.) Никаких кубиков. Он снова заявляет «УСПЕШНО», но процесс все еще отображается в диспетчере задач. То же самое, если я найду идентификатор процесса и запустил pskill -t 5652
Прекрасно, я всегда искал эту команду (должен отметить, что я пришел сюда в поисках способа завершить процесс из командной строки, поэтому тот факт, что она не «более мощная», меня устраивает)
Taskkill - это не общая команда Windows 7 (только в полной или профессиональной). Только гораздо более низкий tskill является частью всех последних версий Windows.
СПАСИБО! taskkill /pid 1234 /f работает, когда Завершить задачу отказывается работать! УХ ТЫ!
@Эдди. Это более эффективно, чем «завершить процесс» из диспетчера задач. Я просто убил им процесс, диспетчер задач убивать отказывался. Даже если он может запускать один и тот же код под капотом (я не говорю, что это так), у вас есть свобода запускать эту команду с разными уровнями привилегий.
ERROR: The process "RMPARTUSB.exe" with PID 5224 could not be terminated. Reason: There is no running instance of the task Если нет работающего экземпляра, как у него PID?
@AaronFranke Попробуйте «список задач» и обратите внимание на PID рядом с RMPARTUSB.exe в этом списке. Затем запустите taskkill / pid ### с правильным PID вместо ###.
Получите обозреватель процессов от sysinternals (теперь Microsoft)
Обозреватель процессов - Windows Sysinternals | Документы Microsoft
Это дает больше информации (и некоторую ограниченную возможность поиска дескрипторов блокировки), но я не добился большего успеха в уничтожении задач с его помощью, чем с базовым диспетчером задач. Некоторые процессы (например, антивирус и SugarSync.exe) просто отказываются умирать.
«Завершить процесс» на вкладке «Процессы» вызывает 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 навсегда.
Хотя я ненавижу, что это правильный ответ, я не сомневаюсь, что он более правильный, чем тасккилл ниже .... тупые глючные драйверы!
Немного менее раздражает, чем перезагрузка, выходить из системы / снова включаться. По-прежнему теряю работу, но, возможно, не так много времени.
Очевидно, это не самый лучший способ убить процесс. В Windows есть некоторые процессы, которые после того, как вы уничтожите их с помощью диспетчера задач, мгновенно возродятся, как будто ничего не произошло ...: /
это вызвано каким-то другим процессом, гарантирующим, что начальный процесс всегда запущен. Вы убили свой старый экземпляр, и сторожевой таймер запустил новый.
Как я могу узнать, что заставляет этот процесс переходить в непрерывный сон?
Этот ответ нет вообще правильный. «Завершить процесс» - не самый лучший способ убить процессы, так как он не может убить служебные процессы (например). taskkill /f - самый совершенный.
Это не должен быть принятым ответом. Эквивалент команды Linux «kill -9» - это команда «TaskKill / f». Очевидно, его нужно запускать в командной строке с повышенными привилегиями.
TaskKill / f вызывает только API TerminateProcess. Он делает то же самое, что и диспетчер задач (хотя вы правы, с повышенными привилегиями).
Использование только диспетчера задач для попытки убить процесс эквивалентно вызову TaskKill без параметра / f.
@colacX это ошибка, а не функция. Он застрял в ожидании сигнала, поэтому не слышит никаких сигналов об окончании.
В Windows 8 в диспетчере задач больше нет кнопки «Завершить процесс». У него есть только кнопка «Завершить задачу», которая пытается завершить процесс более мягким способом.
@ ThrowawayAccount3Million Нет, он просто лучше его скрывает - вы найдете старый список процессов со знакомой кнопкой вызова TerminateProcess на вкладке Details :)
Я только что добился успеха, убив неубиваемый процесс java.exe, используя информацию здесь, которую он мог ожидать от драйвера устройства. Я отключил последовательное соединение, которое, как я знал, оно прослушивает, и процесс немедленно остановился.
Кешированная версия мертвой ссылки: web.archive.org/web/20090530042534id_/http://blogs.technet.c om /…
Один из приемов, который хорошо работает, - это подключить отладчик, а затем выйти из него.
В XP или Windows 2003 вы можете сделать это с помощью ntsd, который поставляется из коробки:
ntsd -pn myapp.exe
ntsd откроет новое окно. Просто введите «q» в окне, чтобы выйти из отладчика и завершить процесс.
Я знал, что это работает, даже когда диспетчер задач не может убить процесс.
К сожалению, ntsd был удален из Vista, и вам необходимо установить (бесплатный) инструменты отладки для windows, чтобы получить подходящий отладчик.
Спасибо вам большое за это. Добавьте "-c q" (без кавычек) к автозапуску, что сделает его идеальным убийцей процессов.
Когда Visual Studio и отлаживаемое приложение зависают, присоедините и уничтожьте старый экземпляр VS. Убийца может быть новым экземпляром VS, который затем может открыть старый проект и позволить вам продолжить работу.
Я не могу понять, как загрузить что-либо по этой ссылке, кроме winsdk_web.exe, который ничего не делает.
Теперь вы можете получить его в Windows 10 SDK, запустив установщик и сняв все флажки, кроме «Инструменты отладки для Windows» (docs.microsoft.com/en-us/windows-hardware/drivers/debugger/…).
Когда доступ к ntsd запрещен, попробуйте:
ZeroWave был разработан как простой инструмент, который обеспечит многоуровневое завершение любого процесса.
ZeroWave также проста в использовании благодаря простой установке и очень дружелюбному графическому интерфейсу.
ZeroWave имеет три режима завершения, а в режиме «INSANE» может завершать любой процесс, который может выполняться в Windows.
Кажется, что ZeroWave не может убить avp.exe
настройте AT-команду для запуска диспетчера задач или проводника процессов как СИСТЕМУ.
AT 12:34 /interactive "C:/procexp.exe"
Если бы проводник процессов находился на вашем корневом диске C, это открыло бы его как SYSTEM, и вы могли бы убить любой процесс, не получая никаких ошибок доступа. Установите это примерно на минуту в будущем, тогда оно появится для вас.
Я получаю следующее предупреждение, когда пытаюсь это сделать, поэтому кажется, что оно больше не работает: «Предупреждение: из-за улучшений безопасности эта задача будет выполняться в ожидаемое время, но не в интерактивном режиме. Используйте утилиту schtasks.exe, если требуется интерактивная задача ('schtasks /? 'для подробностей) ".
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. Поскольку он не может найти родителя, он не убьет осиротевшего ребенка. :(
"вы также должны убить дочерний процесс, если какой-либо из них был создан, чтобы успешно убить ваш процесс" попробуйте этот stackoverflow.com/questions/12528963/…
В моем случае зомби-процесс, который я сказал ему убить, был дочерним Только и не было родителя, хотя зомби все еще думал, что у него есть родитель. В моем случае это решается с помощью пути к расширенной системе восстановления настроек Windows 8.1, но отменяется фактическая очистка любого диска и выполняется полная принудительная перезагрузка. Обычное выключение и перезагрузка - это действительно сон / гибернация (для экономии времени при запуске). Нетривиально заставить его выполнить выключение полный.
«Доступ запрещен» означает, что процесс уже закрывается. Например, если вы просто пытались закрыть его ранее. Вам нужно подождать, пока он закроется.
Результаты taskkill с правами администратора: Доступ запрещен.
Хакер процессов имеет множество способов убить процесс.

(Щелкните процесс правой кнопкой мыши, затем перейдите в Разное-> Терминатор.)
Не могу найти много подтверждений, так как поиск этого просто дает миллионы СКАЧАТЬ БЕСПЛАТНО !!! ссылки. Но он делает то, что обещает, с риском вирусов и всем остальным.
Эта программа у нас работала нормально. Мы убили две программы, которые нельзя было убить другими инструментами, упомянутыми в этой ветке.
@ Mehrdad Не могли бы вы объяснить, как вы попали на этот экран?
@Nuzzolilo: Конечно! Щелкните правой кнопкой мыши процесс, перейдите в Разное-> Терминатор.
Работает не на всех процессах, у меня был такой, который пережил все варианты.
Тот работал там, где не удавались диспетчер задач, обозреватель процессов и тасккилл. Спасибо за совет!
@Zitrax: Я думаю, единственное, что вы можете попробовать в этот момент, - это выключить и снова включить. = P
Самое смешное, что эта программа зависла, когда я пытался убить другой процесс. Поэтому мне пришлось использовать диспетчер задач, чтобы убить эту программу. :-)
Это заблокировало мой компьютер. Процесс ушел после перезагрузки. Молодец... -.-'
У меня была эта проблема при закрытии приложения, запущенного из Visual Studio в режиме отладки, и я решил использовать ProcessHacker и «Разное-> Отсоединить от отладчика» в процессе ..
@Mehrdad, когда мы выполняем нормальный процесс завершения из диспетчера задач, какой вариант он эквивалентен?
@Pacerier: Первый.
хакер процесса помог мне убить chrome.exe crashing process
К сожалению, Терминатор удален в v2.39 :(
@ raymai97: О нет :(
В Process Hacker 2 нет опции Терминатора.
Используйте диспетчер задач, чтобы принудительно завершить работу программы. Для этого выполните следующие действия: - Откройте диспетчер задач с помощью сочетания клавиш CTRL + SHIFT + ESC. - Щелкните вкладку «Процессы» - выберите соответствующее имя изображения, которое вы ищете, для выхода - Нажмите кнопку «Завершить процесс». Спасибо.
К вашему сведению, иногда вы можете использовать SYSTEM или Trustedinstaller для завершения задач;)
google quickkill_3_0.bat
sc config TrustedInstaller binPath= "cmd /c TASKKILL /F /IM notepad.exe
sc start "TrustedInstaller"
Блуждающие процессы - достаточно распространенная проблема в программировании, с которой я не согласен; это не вопрос не по теме.