- Завершить процесс из командной строки
- Windows: TaskKill — Убить Процесс по PID, Имени, Порту — CMD
- Убить Процесс по Имени
- Убить Процесс по PID
- Убить Процесс на Порту
- Возможные Ошибки
- Команда TASKKILL — завершить процесс.
- Примеры использования TASKKILL.
- Как принудительно завершить процесс зависшей службы в Windows?
- Завершение зависшей службы с помощью TaskKill
- Принудительное завершение зависшей службы из PowerShell
- Анализ зависших процессов с помощью Resmon
- Process Explorer: Завершение зависшего процесса из-под SYSTEM
Завершить процесс из командной строки
Вы наверняка знакомы с традиционным способом завершить процесс в Windows с помощью диспетчера задач. Этот способ эффективен, но способ с использованием командной строки дает больше контроля и возможность завершить несколько процессов за раз.
Возможность завершить процесс из командной строки дает нам команда TaskKill. Вы можете убить процесс из командной строки по его идентификатору (PID) или по имени образа (имени exe файла). Запустите консоль от имени администратора и введите команду tasklist, чтобы просмотреть все запущенные процессы.
В приведенном выше примере можно увидеть имя образа и PID для каждого процесса. Если вы хотите убить процесс Notepad? то нужно ввести:
Флаг /F – нужен для принудительного завершения процесса. Если его не использовать, то в некоторых случаях ничего не произойдет, приложение продолжит свою работу. Как пример попытка завершения процесса explorer.exe без этого флага ни к чему не приведет.
Если у вас есть несколько экземпляров приложений, как например chrome, то выполнение команды taskkill /IM. chrome.exe завершит их все. При указании PID можно завершить только конкретные процессы Chrome.
В taskkill есть варианты фильтрации, которые позволяют использовать следующие переменные и операторы:
- STATUS (статус)
- IMAGENAME (имя образа)
- PID (значение)
- SESSION (номер сессии)
- CPUTIME (время CPU)
- MEMUSAGE (использование памяти в кб)
- USERNAME (имя пользователя)
- MODULES (имя DLL)
- SERVICES (имя службы)
- WINDOWTITLE (заголовок окна)
- eq (равно)
- ne (не равно)
- gt (больше чем)
- lt (меньше чем)
- ge (больше или равно)
- le (меньше или равно)
- * (любые символы)
Вы можете использовать переменные и операторы с флагом /FI.
Например, допустим вы хотите, завершить все процессы, у которых заголовок окна начинается с “Интернет”, то команда будет следующей:
taskkill /FI “WINDOWTITLE eq Internet*” /F
Чтобы завершить все процессы запущенные от имени Marina:
taskkill /FI “USERNAME eq Marina” /F
Таким же образом можно завершить процесс запущенный на другом компьютере из командной строки. Например имя компьютера OperatorPC, необходимо ввести:
taskkill /S OperatorPC /U Имя_пользователя_на_удаленной_машине /P Пароль_от_удаленной_машины /IM notepad.exe /F
Подробную информацию вы всегда можете получить запустив taskkill с ключом /?
Windows: TaskKill — Убить Процесс по PID, Имени, Порту — CMD
Иногда приложение в Windows зависает и перестает отвечать, и тогда единственный способ его завершить — «убить» процесс из командной строки
Команда taskkill в Windows служит для завершения задач по имени или по идентификатору процесса (PID).
В этой заметке я показываю, как найти и убить процесс по его имени или по PID, а также как узнать какой процесс слушает порт.
Я также показываю, что делать в случае ошибок «Процесс не может быть прерван» и «Доступ запрещен».
Дельный Совет: Узнать код завершения команды/приложения! Читать далее →
Убить Процесс по Имени
Вывести список всех процессов в Windows и узнать полное имя процесса, который нужно убить (без учета регистра):
Убить процесс по имени:
Убить Процесс по PID
Вывести список всех процессов в Windows и узнать PID процесса, который нужно убить (без учета регистра):
Убить процесс по PID:
Убить Процесс на Порту
Вывести список всех процессов в Windows, слушающих TCP и UDP порты и узнать PID процесса, который слушает определенный порт:
Узнать имя процесса по его PID:
Убить процесс по имени или PID:
Дельный Совет: Аналог grep для CMD и PowerShell в Windows! Читать далее →
Возможные Ошибки
В случае появления следующей ошибки убейте процесс принудительно:
ОШИБКА: процесс с PID XXX не может быть прерван.
Причина: Данный процесс может быть прерван только насильственно с параметром /F.
При получении ошибки «Доступ запрещен», запустите командную строку от имени администратора:
ОШИБКА: процесс с PID XXX не может быть прерван.
Причина: Доступ запрещен.
Чтобы запустить CMD с правами администратора, нажмите клавишу Win , чтобы открыть меню «Пуск», наберите cmd , чтобы найти командную строку и нажмите комбинацию Ctrl + Shift + Enter , чтобы запустить командную строку от имени администратора.
Команда TASKKILL — завершить процесс.
Команда TASKKILL используется для завершения процессов по идентификаторам или именам исполняемых файлов на локальной или удаленной системе. Используется в операционных системах Windows XP и старше.
Формат командной строки:
Описание параметров командной строки :
/S система — Имя или IP-адрес удаленного компьютера.
/U [домен\]пользователь — Пользовательский контекст, в котором должна выполняться эта команда.
/P пароль — Пароль для этого пользовательского контекста. Запрашивается, если он не задан.
/FI фильтр — Применение фильтра для выбора набора задач. Разрешение использовать «*». Пример, imagename eq acme*
/PID процесс — Идентификатор процесса, который требуется завершить. Используйте TaskList, чтобы получить PID.
/IM образ — Имя образа процесса, который требуется завершить. Знак подстановки «*» может быть использован для указания всех заданий или имен образов.
/T — Завершение указанного процесса и всех его дочерних процессов.
/F — Принудительное завершение процесса.
/? — Вывод справки по использованию.
Имя фильтра ———— STATUS IMAGENAME MODULES | Допустимые операторы ————— eq, ne eq, ne eq, ne, gt, lt, ge, le eq, ne | Допустимые значения ————————- RUNNING | NOT RESPONDING | UNKNOWN Имя образа Значение PID Номер сессии Время CPU в формате hh:mm:ss. hh — часы, mm — минуты, ss — секунды Использование памяти в КБ Имя пользователя в формате [домен\]пользователь Имя DLL Имя службы Заголовок окна |
  Примечание:
1) Символ ‘*’ для параметра /IM применим только совместно с фильтрами.
2) Завершение удаленных процессов всегда будет принудительным (/F).
3) Фильтры «WINDOWTITLE» и «STATUS» не принимаются во внимание, когда компьютер является удаленным.
Примеры использования TASKKILL.
taskkill /? > taskkill.txt — выдать справку по использованию команды в текстовый файл taskill.txt
TASKKILL /IM notepad.exe — завершить процесс, исполняемым образом которого является notepad.exe . Если таких процессов более одного — то будут завершены все.
taskkill /PID 1234 /T — завершить процесс с идентификатором 1234 и все его дочерние процессы ( /T ) . Одной командой можно завершить несколько процессов, задавая их PID — taskkill /PID 1234 /PID 2345 /PID 800 . Для определения идентификатора процессов используется команда tasklist :
tasklist | find /I «notepad» — отобразить информацию для процессов с именем, содержащим строку notepad . В ответ будет выдано сообщение, например:
notepad.exe        824 Console       1       3 916 КБ
notepad.exe      3004 Console       1      18 812 КБ
Где 824 и 3004 — это идентификаторы процессов PID
TASKKILL /F /FI «PID ge 2000» /FI «WINDOWTITLE eq Arc*» — принудительно (/F) завершить процесс, идентификатор которого больше или равен 2000 и заголовок окна которого , начинается с текста Arc
TASKKILL /F /FI «USERNAME eq NT AUTHORITY\SYSTEM» /IM notepad.exe — принудительно завершить процесс, выполняющийся в контексте учетной записи NT AUTHORITY\SYSTEM и исполняемый файл которого имеет имя notepad.exe
TASKKILL /S 192.168.0.243 /U MyDomain\user /FI «USERNAME ne NT*» /IM * — завершить все процессы, выполняющиеся в контекстах учетных записей, не начинающихся со строки NT на компьютере с IP-адресом 192.168.0.243. При подключении к удаленной системе используется имя пользователя user в домене Mydomain . Пароль не задан и будет запрошен при выполнении команды.
TASKKILL /S SERVER /U Mydomain\User /P UserPass /FI «IMAGENAME eq note*» — завершить все процессы, имя исполняемого файла которых начинается со строки note на удаленном компьютере с именем SERVER .
При завершении процессов как локально, так и удаленно, результат выполнения команды TASKKILL зависит от прав пользователя, в контексте учетной записи которого выполняется команда.
Для использования в многопользовательской конфигурации системы, например на сервере терминалов, вместо команды TASKKILL, удобнее и безопаснее использовать команду TSKILL, адаптированную для завершения процессов в среде конкретных пользователей удаленного рабочего стола (RDP).
Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»
Как принудительно завершить процесс зависшей службы в Windows?
Как завершить процесс службы Windows, зависшей в статусе stopping (остановка)? Думаю, большинство администраторов Windows, встречалось с ситуациями, когда при попытке остановить (перезапустить) службу из графического интерфейса консоли управления службами (Services.msc), служба зависает намертво и висит в статусе Stopping. После этого вы не можете остановить службу в консоли, т.к. кнопки действий службы становятся недоступными. Самый простой способ – перезагрузить сервер, но это не всегда допустимо. Рассмотрим альтернативный способ, позволяющий принудительно завершить зависшую службу или процесс без необходимости перезагрузки.
Если в течении 30 секунд после попытки остановки службы, она не останавливается, Windows выводит сообщение:
При попытке остановить такую службу командой: net stop wuauserv, появляется сообщение:
The service is starting or stopping. Please try again letter.
Завершение зависшей службы с помощью TaskKill
Наиболее простой способ завершить зависшую служу – воспользоваться утилитой taskkill. В первую очередь нужно определить PID (идентификатор процесса) нашей службы. В качестве примера возьмем службу Windows Update, ее системное имя wuauserv (имя можно посмотреть в свойствах службы в консоли services.msc).
В командной строке с правами администратора (это важно, иначе будет ошибка access denied):
sc queryex wuauserv
В данном случае PID процесса — 816.
Чтобы принудительно завершить зависший процесс с PID 816:
taskkill /PID 816 /F
SUCCESS: The process with PID 816 has been terminated.
Данная команда принудительно завершит процесс службы. В дельнейшем можно вернуться в консоль управления службами и вручную стартовать службу (или совсем удалить эту службу, если она не нужна).
«Выстрел в голову» зависшей службы можно выполнить и более элегантно, не выполняя ручное определение PID процесса. У утилиты taskkill есть параметр /FI, позволяющий использовать фильтр для выбора необходимых служб или процессов. Вы можете остановить конкретную службу командой:
TASKKILL /F /FI “SERVICES eq wuauserv”
Или можно вообще не указывать имя, службы, завершив все сервисы в зависшем состоянии с помощью команды:
taskkill /F /FI “status eq not responding”
После этого служба, зависшая в статусе Stopping должна остановиться.
Принудительное завершение зависшей службы из PowerShell
Также вы можете использовать PowerShell для принудительной остановки службы. С помощью следующей команды можно получить список служб, находящихся в состоянии Stopping:
Get-WmiObject -Class win32_service | Where-Object
Завершить процесс для всех найденных служб поможет командлет Stop-Process. Объединив обе операции в цикл, получим скрипт, автоматически завершающий все процессы подвисших служб в системе:
$Services = Get-WmiObject -Class win32_service -Filter «state = ‘stop pending'»
if ($Services) <
foreach ($service in $Services) <
try <
Stop-Process -Id $service.processid -Force -PassThru -ErrorAction Stop
>
catch <
Write-Warning -Message » Error. Error details: $_.Exception.Message»
>
>
>
else <
Write-Output «No services with ‘Stopping’.status»
>
Анализ зависших процессов с помощью Resmon
Вы можете определить процесс, из-за которого зависла служба с помощью монитора ресурсов resmon.
- В окне Монитора ресурсов перейдите на вкладку ЦП (CPU) и найдите процесс зависшей службы;
- Выберите пункт Анализ цепочки ожидания (AnalyzeWaitChain);
- В новом окне скорее всего вы увидите, что вам процесс ожидает другой процесс. Завершите его. Если выполняется ожидание системного процесса svchost.exe, завершать его не нужно. Попробуйте проанализировать цепочку ожидания для этого процесса. Найдите PID процесса, которого ожидает ваш svchost.exe и завершите его.
Process Explorer: Завершение зависшего процесса из-под SYSTEM
Некоторые процессы, запущенные из-под SYSTEM, не может завершить даже локальный администратора сервера. Дело в том, что у него просто может не быть прав на некоторые процессы или службы. Чтобы завершить такие процесс (службы), вам необходимо предоставить локальной группе Administrators права на службу (процесс), а потом завершить их. Для этого нам понадобятся две утилиты: psexec.exe и ProcessExplorer (доступны на сайте Microsoft).
- Для запуска ProcessExplorer с правами системы (SYSTEM), его нужно стартовать таким образом: PSExec -s -i ProcExp.exe
- В списке процессов Process Explorer найдите процесс зависшей службы и откройте ее свойства;
- Перейдите на вкладку Services, найдите свою службу и нажмите кнопку Permissions;
- В разрешения службы предоставьте права FullControl для группы администраторов (Administrators). Сохраните изменения;
- Теперь попробуйте завершить процесс службы.