Контакты

Как завершить процессы в командной строке - TASKKILL. Быстрое завершение зависших процессов на компьютере с помощью специального ярлыка Как завершить все процессы на компьютере

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

Прежде всего, стоит попробовать закрыть программу через стандартный диспетчер задач. Нажмите Alt+Ctrl+Del, во вкладке «Приложения» найдите зависшую программу и нажмите «Снять» задачу.

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

Там, где стандартный диспетчер задач не справляется, поможет более продвинутая программа - Process Explorer. Она выпущена сторонним разработчиком, но распространяется Microsoft, доступна бесплатно, не требует установки и работает на Windows XP, 7 и 8.

Зайдите на сайт Microsoft , скачайте архив Process Explorer, распакуйте его и запустите с правами администратора файл procexp.exe. Вы увидите список всех запущенных программ. Выполняемые ими процессы показаны в древовидной форме. Вполне вероятно, что закрытию проблемной программы диспетчером задач мешало то, что доступ к зависшему процессу блокировал процесс более высокой иерархии. В первом столбике показано, сколько процессорного времени потребляет каждый процесс. У зависшего это значение будет близко к ста процентам. Обнаружить зависшее приложение можно, отсортировав процессы по величине нагрузки на процессор или потребления оперативной памяти.


Чтобы убить зависший процесс, нажмите на него правой кнопкой мыши и выберите опцию Kill Process или нажмите кнопку Del.



Если программа по-прежнему «висит», потребуется убить дерево процессов: выделите его и выберите опцию Kill Process Tree или нажмите сочетание клавиш Shift+Del.

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

Возможность завершить процесс из командной строки дает нам команда TaskKill . Вы можете убить процесс из командной строки по его идентификатору (PID) или по имени образа (имени exe файла). Запустите консоль от имени администратора и введите команду tasklist , чтобы просмотреть все запущенные процессы.

C:\tasklist Имя образа PID Имя сессии № сеанса Память ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 24 КБ System 4 Services 0 1 256 КБ conhost.exe 5944 Console 2 2 888 КБ notepad.exe 3100 Console 2 7 400 КБ tasklist.exe 8892 Console 2 6 100 КБ WmiPrvSE.exe 7340 Services 0 6 864 КБ smss.exe 372 Services 0 544 КБ csrss.exe 536 Services 0 3 336 КБ wininit.exe 812 Services 0 436 КБ

В приведенном выше примере можно увидеть имя образа и PID для каждого процесса. Если вы хотите убить процесс Notepad? то нужно ввести:

taskkill /IM notepad.exe /F

Флаг /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 не без изъянов, как и программы, которые под нее выпускают разработчики. Конфликт приложения с операционной системой или «железом» компьютера приводит к тому, что оно зависает. Всем хорошо известно, что когда зависает процесс на Windows, следует нажать одновременно клавиши ctrl+alt+del, чтобы вызвать «Диспетчер задач», а после закрыть программу, которая не отвечает. Однако имеется куда более удобный способ, чтобы завершить зависший процесс на компьютере, или несколько процессов, если в том имеется необходимость.

Почему зависают процессы на компьютере?

Если приложение на компьютере зависло, произошло это из-за конфликтного состояния на уровне «железа» или программного обеспечения. Перезапуск программы часто помогает вернуть ее в работоспособное состояние, но он не устраняет саму причину зависания приложения, и это может повторить снова.

Можно выделить следующие основные причины зависания программ на Windows:


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

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

Ярлык для завершения всех зависших процессов создается следующим образом:


%windir%\system32\taskkill.exe /f /fi "status eq not responding"

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

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

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

В основном, данная команда используется системными администраторами и лично я сталкивался со следующими ситуациями:

1) Обновление программ на терминальном сервере – при администрировании терминального сервера большое количество людей может запустить одно и тоже приложение. Но, в большинстве случаев, при обновлении программы её необходимо сначала закрыть, т.е. завершить её процесс. Если клиентов не много, то, можно воспользоваться диспетчером задач, а если их порядка 100, то это уже проблематично. А команда Taskkill позволяет убить все процессы для определенного приложения.

2) Автоматический перезапуск программы – как вы знаете не все программы работают идеально и бывает, что они подвисают. А если данная программа должна работать 24 часа в сутки и 7 дней в неделю, то приходится периодически проверять её работоспособность.

Лично я сталкивался со следующей ситуацией: есть интернет магазин, в который данные о товарах выгружаются из 1С-ки. Но, обработчик написан как-то криво, в результате чего обмен подвисает раз в сутки, а то и через каждые 2-3 часа. По этому, появилась необходимость каждый час принудительно перезапускать обработчик, не зависимо от того, подвисла программа или нет.

И так, перейдем к практике.

Запустим браузер Google Chrome и попробуем завершить его процесс (Пуск \ Стандартные \ Выполнить \ cmd \ taskkill /? - чтобы посмотреть синтаксис команды)

/s КОМПЬЮТЕР, где КОМПЬЮТЕР - это IP или адрес удаленного компьютера. По умолчанию, операция выполняется в локальной системе. Если именно это вас и интересует, данную опцию можно не использовать.

/u ДОМЕН\ПОЛЬЗОВАТЕЛЬ , где ДОМЕН - это имя домена, а ПОЛЬЗОВАТЕЛЬ - имя пользователя, для которого нужно выполнить команду. Данная опция позволяет запускать taskkill с правами определенной учетной записи или домена.

/p - обязательно используется в сочетании с опцией /u для указания пароля к учетной записи пользователя.

/fi - позволяет выполнять команду taskkill с определенными фильтрами.

/f - принудительно завершает выполнение команды.

/IM - позволяет использовать имя приложения вместо идентификатора процесса.

/T - завершение дерева процессов.

Теперь нам нужно узнать имя приложения, которое использует данный процесс. Это можно сделать через диспетчер задач (Ctrl + Alt + Del \ Запустить диспетчер задач \ Процессы \ chrome . exe ).

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

Taskkill / f / im chrome . exe – принудительно завершить приложение с именем chrome.exe

Chrome завершил работу, но появились ошибки «Не удалось завершить процесс, ни один из экземпляров задания не запущен». Данное сообщение появляется из-за того, что эти процессы были связанными и когда завершил работу основной, остальные автоматически завершились.

Теперь запустим Chrome под разными пользователями, чтобы сымитировать работу терминального сервера, для этого запустим под обычным пользователем и под пользователем XP (Chrome \ Shift \ ПКМ \ Запустить от имени другого пользователя \ ОК ). Теперь мы видим, что одно и тоже приложение запущено под разными пользователями, повторим команду Taskkill / f / im chrome . exe , чтобы проверить, для всех ли пользователей будет завершен процесс.

Теперь попробуем сделать автоматический перезапуск приложения, в этом нам поможет планировщик задач (Пуск \ Все программы \ Стандартные \ Служебные \ Планировщик заданий \ Библиотека планировщика \ ПКМ \ Создать папку \ Перезапуск Chrome – в зависимости от вашей цели )

Создаем задачу на запуск (Создать новую задачу \ Запуск \ Выполнять с наивысшими правами \ Триггер: по расписанию, ежедневно, начиная с 11:00, повторять каждый час бесконечно, включено \ Действия: запуск программы, chrome \ ОК )

Создадим задачу на завершение процесса (Создать новую задачу \ Завершение \ Выполнять с наивысшими правами \ Триггер: по расписанию, ежедневно, начиная с 10:59:50, повторять каждый час бесконечно, включено \ Действия: запуск программы, Taskkill , дополнительные аргументы: / f / im chrome . exe \ ОК )

Теперь запустим Chrome и подведем часы к более близкому времени, чтобы увидеть, как Хром завершит работу, а потом запустится заново.

Однако, порой требуется запретить только процесс запущенный под определенным пользователем. Именно такая ситуация у меня возникла с обработчиком 1С, который выгружал данные о товарах на сайт.

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

Для этого в дополнительные аргументы добавим следующую строчку / fi username eq station -4-7” данная команда фильтрует по имени пользователя и завершает процесс только того, чье имя совпадает с указанным в фильтре.

Запустим Chrome под другим пользователем и посмотрим, сработал ли фильтр.

Как завершить процесс службы Windows, зависшей в статусе stopping (остановка)? Думаю, большинство администраторов Windows, встречалось с ситуациями, когда при попытке остановить (перезапустить) службу из графического интерфейса консоли управления службами (Services.msc), служба зависает намертво и висит в статусе Stopping . После этого вы не можете остановить службу в консоли, т.к. кнопки действий службы становятся недоступными. Самый простой способ – перезагрузить сервер, но это не всегда допустимо. Рассмотрим альтернативный способ, позволяющий принудительно завершить зависшую службу или процесс без необходимости перезагрузки.

Если в течении 30 секунд после попытки остановки службы, она не останавливается, Windows выводит сообщение:

Не удалось остановить службу xxxxxxx Windows на локальном компьютере.
Ошибка 1053. Служба не ответила на запрос своевременно.

Windows Could not stop the xxxxxx service on Local Computer
Error 1053: The service did not respond in a timely fashion.

При попытке остановить такую службу командой: net stop wuauserv, появляется сообщение:

The service is starting or stopping. Please try again letter.

Завершение зависшей службы с помощью TaskKill

Наиболее простой способ завершить зависшую служу – воспользоваться утилитой taskkill . В первую очередь нужно определить PID (идентификатор процесса) нашей службы. В качестве примера возьмем службу Windows Update, ее системное имя wuauserv (имя можно посмотреть в свойствах службы в консоли services.msc).

Довольно часто эта проблема случается , особенно после установки обновлений на Windows Server 2012 R2 / 2008 R2.

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

В командной строке с правами администратора (это важно, иначе будет ошибка 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 {$_.state -eq "stop pending"}

Завершить процесс для всех найденных служб поможет командлет 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.


Process Explorer: Завершение зависшего процесса из-под SYSTEM

Некоторые процессы, запущенные из-под SYSTEM, не может завершить даже локальный администратора сервера. Дело в том, что у него просто может не быть прав на некоторые процессы или службы. Чтобы завершить такие процесс (службы), вам необходимо предоставить локальной группе Administrators права на службу (процесс), а потом завершить их. Для этого нам понадобятся две утилиты: psexec.exe и ProcessExplorer (доступны на сайте Microsoft).


Понравилась статья? Поделитесь ей