Taskkill / f не убивает процесс


140

Когда я запускаю экспериментальный экземпляр VS из VS для отладки и прекращаю отладку (иногда непосредственно из родительского VS), остается запущенный процесс devenv.exe, который я не могу уничтожить. Это касается многих моих библиотек.

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

I tried (from Administrator command prompt):

End Task from Task Manager.
TASKKILL /F /IM devenv.exe
PSKILL devenv.exe

Никто не возвращает никаких ошибок и TASKKILLи PSKILLвозвращает сообщения об успешном завершении / убийстве процесса. Но devenv.exe все еще работает, он не запускается заново, так как PIDостается постоянным. Он исчезает только при перезапуске системы, что не является хорошим решением.

Заметка. LockHunter показывает, что у devenv есть блокировка. И это не может разблокировать это.

Process Monitor показывает, что devenv находится в каком-то цикле «Профилирование процесса»

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

Есть идеи, как убить такой процесс в Windows?


Не знаю, почему вы не получаете сообщение об ошибке, но для проверки одного: вы вызывали эти команды из командной строки с повышенными правами? В противном случае команды не будут выполняться с правами администратора, даже если они есть в вашей учетной записи. (Это не должно позволить им вернуть успех, когда они явно потерпели неудачу;))
SvenS

1
да, все команды были запущены из командной строки администратора.
Душанпт

3
Этот вопрос больше подходит для superuser.com . Да, у них есть довольно хорошие объяснения там. Этот помог мне.
Ярекчек

Ответы:


81

Вы также должны убить дочерний процесс, если он возник, чтобы успешно завершить ваш процесс

taskkill /IM "process_name" /T /F

/T = kills child process

/F = forceful termination of your process

25
Он печатает два сообщения об успехе в моем случае, но процесс все еще там. Какого черта?
CodeManX

3
если бы это было так просто :) нет, это не поможет. Я думаю, что его проблема в том, что неубиваемый процесс находится в каком-то цикле (сокет, ввод / вывод, каналы ...), где основным процессом является системный процесс, и его уничтожение сделает систему нестабильной. В этом случае я бы рекомендовал сначала понять, в каком цикле находится процесс. Затем, если этот цикл является сетевым обменом с другой конечной точкой, просто отключите сетевой кабель или отключите уже установленное соединение.

75
Я получаю, There is no running instance of the task что процесс действительно не хочет умирать!
демонголем

1
все еще помогите мне сегодня, хотя я должен убить и «ребенка от ребенка»: taskkill / f / T / PID 4172 ==> ОШИБКА: процесс с PID 4172 (дочерний процесс с PID 4724) не может быть завершен. ==> taskkill / f / T / PID 4724 ==> Готово
Hoàng Long

1
Yay для упомянутого /Tвыключателя!
kayleeFrye_onDeck

34

Методы taskkill и powershell (kill) у меня не сработали; он все еще сказал «Доступ запрещен».

Мне повезло больше с этим:

wmic process where "name='myprocessname.exe'" delete

6
ОШИБКА: Описание = Неверный запрос
user1133275

51
Окна-10. Также: ERROR: Description = Access denied(с помощью консоли администратора между прочим)
FractalSpace

1
Спасибо! Это сработало как заклинание для моего застрявшего нпм
Эдуардо Элиас Сале

1
Удивительно, спасибо большое. Потратил час на убийство, прежде чем я нашел это
Дерек MC

2
Это все еще не работает в моем случае. Застрял Visual Studio в процессах, запустил команду и выдает команду Удаление экземпляра \\ MyMachine \ ROOT \ CIMV2: Win32_Process.Handle = "6420", удаление экземпляра прошло успешно. Но через 5 минут я все еще вижу процесс VS devenv.exe в списке диспетчера задач. Я думаю, только перезагрузка - единственное решение для меня.
wctiger

30

Просто была такая же проблема на Windows Server 2008 R2, и ничего не помогло, не TaskManager или TaskKill. Но Windows PowerShell запускается как администратор работал с "kill -id PID"


3
Это сработало для меня ... хотя казалось, что до того, как процесс фактически закончился, задержка составила около 30 секунд, поэтому сначала это казалось неудачным. В моем случае это был процесс, который процедурно создавался другим приложением, когда в системе было мало ресурсов. Process Explorer, kill process tree и некоторые другие вещи не работали, но это помогло.
Дж. Полдинг

4
Не работает для меня, дал мне ошибку неспособный убить процесс и т.д. и т.п.
rboy

@rboy. Я знаю, что он старый, но на тот случай, если кто-то другой увидит, что он делает то, что сделал я. Откройте powershell от имени администратора и запустите его. Сначала я запустил его не как администратор, и мне сказали, что я не могу этого сделать. Итак, я запустил его как администратор, и он работал.
Крис Джонс

Это работало для меня на Windows 10 с плохо работающей службой Windows. Уже пробовал CMD, в этом случае PowerShell - подходящий инструмент
ThetaSinner

5
Не повезло мне даже после ожидания более 2-3 минут. Ни одна из команд не работает для меня в настоящее время
Тарун Гупта

28

Перезагрузка - единственное решение, которое работало для меня (пока).

Всегда превосходный Марк Руссонович имеет хорошее объяснение неубиваемым процессам.

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

http://blogs.technet.com/b/markrussinovich/archive/2005/08/17/unkillable-processes.aspx


1
Что я сделал, так это выключил и перезапустил его.
Гелли Энн

10

Я знаю, что уже поздно, но taskkill /im devenv.exe /t /fдолжно работать. /tубивает дочерние процессы тоже.


12
Это не похоже на работу для меня. Он говорит, что это успешно, но процесс все еще обнаруживается.
Скотт Уитлок

2
Я тоже сталкиваюсь с подобной проблемой, но с Microsoft ftp service, говорит, что прекращено, но продолжает работать, не могу понять
rboy

1
Если вместо того, чтобы /IM devenv.exeиспользовать, /PID 17888то ошибка в основном говорит о том, что 17888 - это ребенок 17880, а 17880 не работает и поэтому не может быть убит.
Джесси Чисхолм

это работает, но убедитесь, что вы используете cmd из режима администратора.
Каран

У меня не получилось, пытаясь удалить процесс Защитника Windows, который использует почти 100% доступа к диску ..
Дэвид Спектор

7

В моем случае, после нескольких дней борьбы с этой проблемой (это происходило с процессами VirtualBox и µTorrent), я обнаружил, что это было вызвано проблемой сетевого драйвера, спровоцированной обновлением Windows Update KB4338818 (Windows 7 x64). После удаления этого патча все вернулось на круги своя. Я просто подумал, что это может быть полезно для других.


Как вы узнали, что обновление вызвало это? Я думаю, что никогда бы не открыл это. ^^ '
дас Кекс

1
Я понял, что единственное, что изменилось на моей машине до того, как проблема стала очевидной, это обновления, поэтому я проверил, какое было последнее обновление, и прочитал примечания к выпуску. Это показалось подозрительным, и я откатился назад, чтобы посмотреть, была ли проблема решена. Затем я прочитал на некоторых форумах Apache, не помню, какое это обновление доставило им проблемы. Кстати: последнее обновление Windows от 2018 / август 10 устраняет проблему с KB4338818, поэтому ее можно установить снова.
Данита

6

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


1
Я попытался убить и перезапустить explorer.exe, и это не сработало.
Скотт Уитлок

Когда я сделал это, taskkill /IM "process_name" /T /Fчасть ответа была (child process of PID xxxx)такой : я проверил этот PID, и это был explorer.exe, перезапуск решил мою проблему.
Факундо Коломбье

5

Я видел это несколько раз, и моим единственным решением была перезагрузка.

Вы можете попробовать использовать PowerShell: Get-Process devenv | убийство

Но если другие методы потерпели неудачу, это, вероятно, тоже будет. :-(


К сожалению, да! Для меня это тоже так. Вы когда-нибудь получали какое-либо решение?
manocha_ak

У меня не работает на win10: PS D: \ work \ Projects \ libtiff.net_bin-2.4.560.0> Get-Process NSPRip | убить PS D: \ work \ Projects \ libtiff.net_bin-2.4.560.0> echo $? Истинный PS D: \ work \ Projects \ libtiff.net_bin-2.4.560.0> Get-Process NSPRip обрабатывает NPM (K) PM (K) WS (K) Идентификатор ЦП (ов) SI Имя процесса ------- - ---- ----- ----- ------ - - ----------- 0 0 56 20 0,00 41236 1 NSPRip
zhaorufei

4

Родной tskill <pid>(или tskill.exe <pid>) у меня работал на Windows 10, где не было другого родного ответа.

В моем случае у меня было несколько процессов chrome.exe, для которых работала «Конечная задача» диспетчера задач, но не работала taskkill /F /T /PID <pid>ни PowerShell kill -id <pid>(даже если обе оболочки запускались с правами администратора).

Это очень странно, так как taskkillпредполагается, что это версия с лучшими характеристиками tskill.

В моем случае, чтобы убить все экземпляры определенной задачи, которую я использовал FOR /F "usebackq tokens=2 skip=2" %i IN (`TASKLIST /FI "IMAGENAME eq name_of_task.exe"`) DO tskill %i


1
Это сработало для меня, когда никто из остальных не сделал. Спасибо: D
jk1990

3
Не работал для меня ПолучилEnd Process failed for 10576:Access is denied.
twasbrillig

Случилось то же самое для меня. Что я не могу понять, почему? taskkill должен быть таким же, как tskill [скорее, в документации и т. д.]. Если кто-то может ответить?
dvlper

1
Кажется, в Windows 10 нет цкилла
raffaem

У меня не получилось, пытаясь удалить процесс Защитника Windows, который использует почти 100% доступа к диску ..
Дэвид Спектор

3

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

ОШИБКА: процесс с PID 23908 не может быть прерван. Причина: нет запущенного экземпляра задачи.

используя командную строку. Power shell тоже не помог. он просто будет выполнять команды, а ответ не будет запущен.

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

Это определенно стоит попробовать, если ни одно из решений не сработает.


3

Я получил следующие результаты с taskkill

>taskkill /im "MyApp.exe" /t /f
ERROR: The process with PID 32040 (child process of PID 54176) could not be terminated.
Reason: There is no running instance of the task.

>taskkill /pid 54176  /t /f
ERROR: The process "54176" not found.

То, что работало для меня, было sysinternal's pskill

>pskill.exe -t 32040

PsKill v1.15 - Terminates processes on local or remote systems
Copyright (C) 1999-2012  Mark Russinovich
Sysinternals - www.sysinternals.com

Process 32040 killed.

Вы можете получить pskillс живого сайта sysinternal


2
Не работал для меня Получил:Unable to kill process 10576: Access is denied.
twasbrillig

1
Вам может понадобиться сделать это из командной оболочки с правами администратора?
BenV136

2

Некоторые из файлов Exe зависят от некоторых служб,

Так что вам нужно найти соответствующую услугу и остановиться в первую очередь.


4
какие-либо советы о том, как это решить? На TaskManager он не показывает ни одного сервиса, соответствующего devenv.exe. Сейчас я пытаюсь воссоздать проблему, после этого я использую Process Explorer для поиска сервисов, которые могут его удерживать.
Душанп

2

Та же проблема произошла со мной в VirtualBox в отношении процессов Java.

В моем случае это было связано с ошибкой в ​​обновлении Windows Update KB4338818 (Windows 7 x64).

Я решил это, сделав следующее:

  • Удаление обновления Windows Update KB4338818
  • Установите обновление Windows Update KB4338821

2

Запуск в качестве администратора работает для меня:

1. поиск cmdв окнах

2. щелкните правой кнопкой мыши и cmdвыберите «Запуск от имени администратора».

3.netstat -ano | findstr :8080

4.taskkill/pid (your number) /F

Мой результат


Если вы получаете сообщение об ошибке, например: «nestat» не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. вам может потребоваться запустить команду как C: \ Windows \ system32 \ netstat.exe вместо просто
nestat

2

Для меня способ, которым это работало, - я должен убить родительский процесс. Разберись с родительским процессом и убей его

taskkill /IM "parent_process_name.exe" /T /F

1

У меня есть проблема с отлаженными процессами с GDB в Code :: Blocks. Как только он зависает, случайно входя в инструкции вне области ваших источников (как библиотеки без источников или системных функций), вы не можете выйти из отладки ни из Code :: Blocks, ни из Task-Manager.

Я думаю, что это ошибка в реализации GDB в Code :: Blocks, но также может быть в GDB;)

Мое решение:

taskkill /F /IM process.exe /T

Это показывает PID родительского процесса. Теперь убейте родителя:

taskkill /PID yyyy

Оба ушли.

Готово.


1
Возможно, родительский PID не существует.
user1133275

Пожалуйста, укажите, что такое gdb и Code :: Blocks;)
голубоватое

3
Предупреждение: если родительский процесс services.exeубивает родительский процесс, это может привести к BSOD
MM

1

если taskkill /F /T /PID <pid>не работает. Попробуйте открыть терминал через Run as Administrator.

cmdВыполните поиск в меню Windows и щелкните правой кнопкой мыши Run as Administrator, затем снова введите команду. Это сработало для меня.


1

Если вы загружаете бесплатный пакет sysinternals, у него есть приложение pskill.exe, которое хорошо работает для задач следующих типов: pskill.exe "имя_процесса". Оно работает с этими процессами даже без использования опции -t.


1

Я сделал следующее на повышенном PowerShell:

PS C:\Windows\system32> wmic.exe /interactive:off process where "name like `'java%'`" call terminate

Вывод команды:

Executing (\\SRV\ROOT\CIMV2:Win32_Process.Handle="3064")->terminate()
Method execution successful.

Выходные параметры:

instance of __PARAMETERS
{ReturnValue = 0; };

Я получил некоторую информацию о синтаксисе на: https://community.spiceworks.com/topic/871561-wmic-error-like-invalid-alias-verb


Это действительно сработало, должен быть принят ответ. Спасибо
Джон Ньюман

0

NirSmd от NirSoft сделал всю работу за меня:

nircmd killprocess "process name.exe"

Страница руководства killprocess находится здесь .


0

Я столкнулся с той же проблемой, когда запустил приложение узла в порту 3000, и оно не закрылось правильно, и процесс продолжал работать даже после перезапуска.

Ни одна из команд taskkill или powershell, работающих в режиме администратора, не работала для меня.

Я использовал MS Process Expoler> Свойства> Изображение> Текущий каталог (который должен был быть моим каталогом проекта).

Наконец мне пришлось перезагрузиться в SafeMode, переименовать папку проекта и перезапустить. Процессы узла, которые потребляли порт 3000, убили себя.


0

У меня была точно такая же проблема, я нашел это исправление на другом сайте: powershell.exe «Get-Process processname | Stop-Process», он работал для меня, и я был в той же лодке, где мне пришлось перезапустить, / T не будет работать ,


0

Как отметил Фрэнсис, некоторые процессы не могут быть прекращены из-за

«необработанные запросы ввода / вывода»

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

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

Это, конечно, не рекомендуется, но иногда вам больше нечего терять.


0

У меня была такая же проблема, и, как многие другие здесь говорили, ни одна из нормальных команд Kill не сработала. Моим проблемным файлом был исполняемый файл, который запускался из сетевой папки пользователем на сервере удаленных рабочих столов. С несколькими общими пользователями не легко перезапустить в течение рабочего дня. Даже когда пользователь вышел из exe-файла, он все еще был в диспетчере задач. Я отправил на сервер, где папка была открыта для общего доступа, и в меню «Управление компьютером» -> «Сеансы» нашел пользователя, у которого сеанс все еще открыт с этого сервера RDP, даже если он вышел из системы. Щелкните правой кнопкой мыши -> Закрыть сеанс, и блокировка файла была снята.

Бьет меня, почему я не мог покончить с таксом. Сообщение об ошибке, которое я получал при попытке удалить файл, было «Действие не может быть завершено, потому что файл открыт в системе»

Надеюсь, это поможет кому-то еще.


0

В моем случае ни одно из решений здесь не сработало. В конце концов я обнаружил, что рассматриваемая программа была заморожена при попытке опроса аудиоинтерфейсов USB. Поэтому я отключил USB-ЦАП, к которому я подключился, и, к моему удивлению, приложение мгновенно завершило работу. В ответе Фрэнсиса упоминается, что это может быть результатом «необработанных запросов ввода-вывода, которые не были обработаны должным образом (драйвером устройства, к которому ваша программа, возможно, обратилась)», что может объяснить, почему это исправило это.

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



-8
  1. открыть диспетчер задач
  2. выберите вкладку услуги
  3. выберите процесс (devenv.exe), который вы хотите убить, и нажмите кнопку службы
  4. прямо в процессе, выберите свойства и отключите его ...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.