Убиваем процессы в Linux — команды ps, kill и killall

TASKKILL

Формат командной строки:

Описание параметров командной строки :

/P пароль – Пароль для этого пользовательского контекста. Запрашивается, если он не задан.

/FI фильтр – Применение фильтра для выбора набора задач. Разрешение использовать “*”. Пример, imagename eq acme*

/PID процесс – Идентификатор процесса, который требуется завершить. Используйте TaskList, чтобы получить PID.

/IM образ – Имя образа процесса, который требуется завершить. Знак подстановки “*” может быть использован для указания всех заданий или имен образов.

/T – Завершение указанного процесса и всех его дочерних процессов.

/F – Принудительное завершение процесса.

/? – Вывод справки по использованию.

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 :


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 зависит от прав пользователя,
в контексте учетной записи которого выполняется команда.

Для использования в многопользовательской конфигурации системы, например на сервере терминалов, вместо команды TASKKILL, удобнее и безопаснее
использовать команду TSKILL, адаптированную для завершения процессов в среде конкретных пользователей удаленного рабочего стола (RDP).


Весь список команд CMD Windows

Убиваем процессы в Linux — команды ps, kill и killall

Здравствуйте, друзья сайта . Уверен, что в вашей практике бывали случаи, когда какой-либо процесс негативно сказывался на производительности компьютера. И даже зная имя, не всегда получается прекратить его работу стандартными способами, например, через диспетчер задач. Ещё одна распространённая ситуация – некое приложение неожиданно зависло и закрываться никак не желает. На помощь придёт cmd – это внутреннее средство Windows, позволяющее управлять процессами в операционной системе посредством ввода в специальное окно текстовых команд. Давайте я вам расскажу, как закрыть программу через командную строку. Это совсем несложно.

Убиваем процессы в Linux — команды ps, kill и killall

Запустить cmd и отобразить все процессы

Запустить cmd можно несколькими способами:

  1. Нажмите на клавиатуре Win (кнопочка с плывущим окошком) и R (языковой регистр не имеет значения). В появившееся окно «Выполнить» впишите cmd и нажмите ОК.

Убиваем процессы в Linux — команды ps, kill и killall

  1. Нажмите Win и X, запустите нужное средство от имени администратора.

Убиваем процессы в Linux — команды ps, kill и killall

  1. Напишите в поисковой строке Пуска cmd и запустите приложение cmd.exe двумя быстрыми щелчками.

Убиваем процессы в Linux — команды ps, kill и killall

  1. Или же начните писать в поисковой строке Пуска «команды…» и запустите первое приложение из результатов поиска двумя быстрыми щелчками.

Убиваем процессы в Linux — команды ps, kill и killall

Друзья, если вы справились с запуском cmd, значит, точно сможете найти через неё и убить тот самый злополучный процесс.

Увидеть программу, которая зависла, поможет команда tasklist. Её нужно написать в появившемся чёрном окошке (там, где мигает курсор), после чего нажать клавишу Enter. Способ одинаково актуален для всех версий Windows – 7, 8 и 10. Результатом этого действия будет появление списка всех запущенных на ПК процессов.

Убиваем процессы в Linux — команды ps, kill и killall

Закрыть программу

Вам остаётся только отыскать в появившемся перечне программу, создающую проблемы, и запомнить её PID (цифровой идентификатор). Чтобы было более понятно, рассмотрим пример. Я запущу в Windows 10 приложение для проведения видеоконференций, найду Zoom в перечне процессов через командную строку и покажу, как его завершить.

Убиваем процессы в Linux — команды ps, kill и killall

Кроме имени программы, вы увидите несколько столбиков значений. Соседний с названием столбец (цифры) — это PID (идентификатор), а последний – количество килобайт, которое он, работая, отнимает у системы.

Убиваем процессы в Linux — команды ps, kill и killall

В моём случае Zoom обозначился двумя процессами, завершение которых из командной строки возможно и по отдельности, и одновременно посредством команды taskkill. Кроме самой команды, понадобится ещё ввести ключ /f, а также:

  1. Атрибут IM, если мы будем использовать имя программы, тогда завершатся оба процесса. Вот как это выглядит в данном примере: taskkill /f /IM Zoom.exe (после ввода команды нужно нажать Enter).

Убиваем процессы в Linux — команды ps, kill и killall

  1. Атрибут PID, если мы будем вводить не имя, а идентификатор, чтобы убить один конкретный процесс: taskkill /f /PID.
:/>  Using Cmd w/ Sencha Touch | Cmd

Убиваем процессы в Linux — команды ps, kill и killall

Если вы не знаете, что именно тормозит вашу систему, то можете попробовать с помощью командной строки завершить все процессы и закрыть все окна, которые зависли. Для этого используйте атрибут /fi (установка фильтра) и статус «не отвечает». Команда будет выглядеть так: taskkill /f /fi «status eq not responding».

Убиваем процессы в Linux — команды ps, kill и killall

Используем «батник»

Друзья, если некая программа порядком подпортила вам нервы, постоянно запускаясь и тормозя систему, то вы можете в момент необходимости быстро закрыть её через bat-файл (в простонародье «батник»), который нужно предварительно создать. В таком случае вам не придётся постоянно обращаться к cmd и вписывать одну и ту же команду по десять раз на дню.

Батник сооружается следующим образом:

  1. Создайте новый текстовый документ («Блокнот»), для чего сделайте правый щелчок на пустом пространстве рабочего стола, обратитесь к инструменту «Создать» и выберите соответствующий пункт.

Убиваем процессы в Linux — команды ps, kill и killall

  1. Откройте полученный документ двумя быстрыми щелчками впишите в него команду taskkill /F /IM zoom.exe (у меня имя zoom.exe, вы вписываете название своей проблемной утилиты).

Убиваем процессы в Linux — команды ps, kill и killall

  1. Через «Файл» перейдите к инструменту «Сохранить как…», задайте любое имя (я написал «Закрыть»), после него поставьте точку и напишите расширение bat (смотрите фото).

Убиваем процессы в Linux — команды ps, kill и killall

  1. Нажмите «Сохранить» и на рабочем столе появится батник.

Убиваем процессы в Linux — команды ps, kill и killall

Когда злополучная программа вновь запустится и загрузит ПК, дважды быстро щёлкните по подготовленному bat-файлу, чтобы её закрыть.

Команды для терминала в Линукс

Убиваем процессы в Linux — команды ps, kill и killall

Друзья, на этом я заканчиваю статью. Надеюсь, в ней вы найдёте что-то полезное для себя. Жду ваших вопросов и оценок моей работы в комментариях. До свидания.

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

Как убить процесс с помощью командной строки в Windows 10 1

Используя командную строку

Работа диспетчера задач может быть реализована с помощью инструментов командной строки: Tasklist (список задач) и Taskkill (утилита Taskkill).

  • Во-первых, нам нужно найти идентификатор процесса с помощью Tasklist
  • Во-вторых, мы убиваем программу, используя Taskskill.
Task List Memory Usage

Откройте командную строку с правами администратора, введя cmd в строке Выполнить (Win + R) и нажав Shift + Enter.

Для просмотра процессов введите следующую команду и нажмите Enter:

Taskview /fo table

Обратите внимание на идентификатор процесса, указанный в колонке Process ID.

Вы можете также прибить программу, используя точное имя.

Чтобы убить процесс по его имени, введите команду:

TASKKILL /IM "process name" /F

Так для Chrome у программы будет имя chrome.exe.

Введите команду и нажмите Enter, чтобы убить Chrome.

Taskkill /IM chrome.exe /F

Ключ /F используется для принудительной остановки процесса.

Kill a Process using Command Line

Чтобы убить процесс по его PID, введите команду:

TASKKILL /F /PID pid_number

Чтобы убить несколько процессов одновременно, запустите вышеприведенную команду с PID всех процессов через пробел.

TASKKILL /PID 2536 /PID 3316 /F

Используя PowerShell

Чтобы просмотреть список запущенных процессов, выполните следующую команду:

Get-Process

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

Stop-Process -Name "ProcessName" -Force

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

Stop-Process -ID PID -Force


Спасибо, что читаете! На данный момент большинство моих заметок, статей и подборок выходит в telegram канале «Левашов». Обязательно подписывайтесь, чтобы не пропустить новости мира ИТ, полезные инструкции и нужные сервисы.


Респект за пост! Спасибо за работу!

Хотите больше постов в блоге? Подборок софта и сервисов, а также обзоры на гаджеты? Сейчас, чтобы писать регулярно и радовать вас большими обзорами, мне требуется помощь. Чтобы поддерживать сайт на регулярной основе, вы можете оформить подписку на российском сервисе Boosty. Или воспользоваться ЮMoney (бывшие Яндекс Деньги) для разовой поддержки:


Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.

Не смотря на свою стабильность, некоторые приложения в Linux иногда виснут. Иногда приложения перестают отзываться или просто работают так медленно, что корректно закрыть их не получается. Один из способов «убить», запущенное приложение в Linux, это использование таких команд, как kill или killall. Рассмотрим, как использовать эти команды, находить PID процесса и посылать сигнал SIGKILL.

Под процессом мы будем понимать запущенную в системе копию программы. Например, если вы открыли три окна калькулятора (например, gcalctool), это значит, что вы запустили три процесса.

Находим PID зависшего процесса

Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:

ps axu

 Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:

ps axu | grep gcalctool
$ ps axu | grep gcalctool
yuriy 25587 0.0 0.0 10636 884 pts/2 S+ 10:20 0:00 grep --color=auto gcalctool

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

:/>  KMSAuto Net 1.5.4 (2021) (рабочий активатор Windows 10, 8.1, 8, 7, Office) »

Если процесс gcalctool запущен, то мы получим:

yuriy@yuriy-NIX:~$ ps axu | grep gcalctool
yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool
yuriy 25624 0.0 0.0 10640 884 pts/2 S+ 10:21 0:00 grep --color=auto gcalctool

Здесь нас интересует строка: «yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool». Число 25609 и есть идентификатор (PID) процесса gcalctool.

Есть еще один более простой способ узнать PID процесса — это команда pidof, которая принимает в качестве параметра название процесса и выводит его PID. Пример выполнения команды pidof:

$ pidof gcalctool
25609

«Убиваем» процесс командой kill

Когда известен PID процесса, мы можем убить его командой kill. Команда kill принимает в качестве параметра PID процесса. Например, убьем процесс с номером 25609:

kill 25609

Вообще команда kill предназначена для посылки сигнала процессу. По умолчанию, если мы не указываем какой сигнал посылать, посылается сигнал SIGTERM (от слова termination — завершение). SIGTERM указывает процессу на то, что необходимо завершиться. Каждый сигнал имеет свой номер. SIGTERM имеет номер 15. Список всех сигналов (и их номеров), которые может послать команда kill, можно вывести, выполнив kill -l. Чтобы послать сигнал SIGKILL (он имеет номер 9) процессу 25609, выполните в командой строке:

kill -9 25609

Сигнал SIGTERM может и не остановить процесс (например, при перехвате или блокировке сигнала), SIGKILL же выполняет уничтожение процесса всегда, так как его нельзя перехватить или проигнорировать.

Убиваем процессы командой killall

Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем gcalctool. Выполните в терминале:

killall gcalctool

Команда killall, также как и kill, по умолчанию шлет сигнал SIGTERM. Чтобы послать другой сигнал нужно воспользоваться опцией -s. Например:

killall -s 9 gcalctool

Заключение

Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):

sudo kill 123

Справку по использованию любой команды можно получить командой man:

man ps
man grep
man pidof
man kill
man killall

This tutorial discusses a few PowerShell scripts that allow you to query and kill a process on a remote computer using WMI (Windows Management Instrumentation).

Убиваем процессы в Linux — команды ps, kill и killall

Sitaram Pamarthi is working as a Windows Engineer and his special fields of interest are PowerShell, Active Directory, Exchange, and virtualization.

Убиваем процессы в Linux — команды ps, kill и killall

Query process information

Get-Process -Name notepad.exe

You will get information about the process, if it is running. You can use the -ComputerName parameter with the command to check if the process is running on a given remote computer. For example:

Get-Process -ComputerName PC1 -Name notepad.exe

You can get similar information with other scripting languages like VBScript and Perl. So what is so special about PowerShell? The answer is that it helps you to get granular information about processes you are querying, such as process creation time, the owner of a given process (with which account it is started), command line information about the process, the title of the application, and much more.

Below are a few example code snippets.

Process creation time

[cmdletbinding()]
param(
	$ComputerName=$env:COMPUTERNAME,
	[parameter(Mandatory=$true)]
	$ProcessName
)
$Processes = Get-WmiObject -Class Win32_Process -ComputerName $ComputerName -Filter "name='$ProcessName'"
if($Processes) {
	foreach ($process in $processes) {
	$processid = $process.handle
	$processcreationtime = $Process.Converttodatetime($Process.creationdate)
	write-host "`nThe $ProcessName `($processid`) process creation time is $processcreationtime"
}
} else {
	write-host "`nNo Process found with name $ProcessName"
}
write-host ""

The above script takes computer name and process name as arguments. The computer name is optional and defaults to the local computer if not provided. The process name is mandatory, and the script will throw an error if you don’t provide it. After reading the arguments, a WMI query gets the list of processes using the names in the argument and iterates through each process to get its creation date.

Process creation time

Process creation time

Process owner

[cmdletbinding()]
param(
  $ComputerName=$env:COMPUTERNAME,
  [parameter(Mandatory=$true)]
  $ProcessName
)
$Processes = Get-WmiObject -Class Win32_Process -ComputerName $ComputerName -Filter "name='$ProcessName'"

foreach ($process in $processes) {
  $UserName = $process.getowner().user
  $DomainName = $process.getowner().domain
  $processid = $process.handle

  write-host "The owner of $ProcessName `($processid`) process is $domainname`\$username"
}

This script executes in the same way as the Process creation time script.

:/>  Cool and funniest browser cursors - use our large free collection or upload your own.

Process owner

Process path

[cmdletbinding()]
param(
  $ComputerName=$env:COMPUTERNAME,
  [parameter(Mandatory=$true)]
  $ProcessName
)
$Processes = Get-WmiObject -Class Win32_Process -ComputerName $ComputerName -Filter "name='$ProcessName'"

foreach ($process in $processes) {
  $Executablepath = $process.ExecutablePath
  $Commandline = $process.Commandline
  $processid = $process.handle

  Write-Host ""
  Write-Host "Process Name = $ProcessName"
  Write-Host "Process ID = $Processid"
  Write-Host "Executable Path = $Executablepath"
  Write-Host "Command Line = $Commandline"
  Write-Host ""
}

This Powershell script displays the process path.

Process path

Though PowerShell has a built-in cmdlet (Get-Process) to retrieve process information, in all of the above examples I have used a WMI query to get process information from the Win32_Process class. The reason I did so is because Get-Process will not provide the owner, process path, and other values.

Kill a process

To terminate a process using PowerShell, you can either use the WMI interface or use the Stop-Process cmdlet, which comes by default with PowerShell.

[cmdletbinding()]
param(
  $ComputerName=$env:COMPUTERNAME,
  [parameter(Mandatory=$true)]
  $ProcessName
)
$Processes = Get-WmiObject -Class Win32_Process -ComputerName $ComputerName -Filter "name='$ProcessName'"

foreach ($process in $processes) {
  $returnval = $process.terminate()
  $processid = $process.handle

if($returnval.returnvalue -eq 0) {
  write-host "The process $ProcessName `($processid`) terminated successfully"
}
else {
  write-host "The process $ProcessName `($processid`) termination has some problems"
}
}

Kill process

Kill a process

This script first queries the computer for a list of running processes and then terminates them using the terminate () method. This method will return a value of 0 if the termination is successful. Any non-zero value indicates some issues.

The second method terminates a process using the Stop-Process cmdlet. Below are some usage examples:

Get-Process -Name notepad | stop-Process
Stop-Process -Name notepad

Conclusion

Querying process information using PowerShell is pretty easy. You can use PowerShell for a variety of purposes, such as reporting application usage, querying the age or the start time of a process, or maximizing, minimizing, or restoring an application window.

FlasherX, спасибо, но vbs потом может быть.

В общем, после нескольких бессонных ночей родила гора мышь )))

Что эта “мышь” делает? Сначала (секция checking1) проверяет запущен ли процесс proga.exe. Если не запущен, то завершает свою работу (уходит в секцию pause). Если запущен, то пытается выяснить и сопоставить PID proga.exe и PID dw20.exe (dw20.exe как дочернего по отношению к proga.exe). В секции checking2 проверяется действительно ли запущен этот дочерний dw20.exe. Если не запущен, то с самого начала повторяет проверку (уходит в секцию setvalues) через 1 минуту (секция tmt1) (таким образом мониторит появление дочернего dw20.exe у proga.exe). Если такой dw20.exe запущен, то завершает и его работу, и работу родительского proga.exe (секции killchild и killparent). После этого сразу с самого начала повторяет проверку (уходит в секцию setvalues).

Работает, как ни странно ))) Проверено на Windows 10 x64.

Если строку 47 (goto killparent) изменить на goto setvalues, то будет мониторить и завершать только дочерние dw20.exe без завершения их родительского proga.exe, что больше соответствует теме.

Кликните здесь для просмотра всего текста

@echo off
color 1F
title Killing of child and parent processes
setlocal enabledelayedexpansion
:setvalues
set "parent=proga.exe"
set "child=dw20.exe"
set "parentpid="
set "childpid1="
set "childpid2="
goto checking1
:checking1
for /f "tokens=2 skip=1" %%a in ('tasklist /fi "imagename eq %parent%" /nh') do (
  set "parentpid=%%a"
  echo %date% %time:~,-3% - The %parent% is running
  for /f "tokens=2 skip=1" %%b in ('wmic.exe path win32_Process where "Name='%child%' and ParentProcessID=!parentpid!" get ProcessID') do (
    set "childpid2=%%b"
    for /f "tokens=1 skip=1" %%c in ('wmic.exe path win32_Process where "Name='%child%' and ParentProcessID=!parentpid!" get ProcessID') do (
      set "childpid1=%%c"
      goto checking2
    )
  )
)
if !parentpid! equ !0! (
  echo %date% %time:~,-3% - The %parent% is not running
  goto pause
)
:checking2
if !childpid2! equ !0! (
  echo %date% %time:~,-3% - The %child% is not running
  goto tmt1
)
if !childpid2! gtr !0! (
  echo %date% %time:~,-3% - The %child% is running
  @echo.
  goto killchild
)
:tmt1
timeout /t 60 /nobreak>nul
cls
goto setvalues
:killchild
echo %date% %time:~,-3% - Killing of %child% and its child processes
@echo.
taskkill /pid !childpid1! /f /t
@echo.
goto killparent
@echo.
:killparent
echo %date% %time:~,-3% - Killing of %parent% and its child processes
@echo.
taskkill /pid !parentpid! /f /t
@echo.
goto setvalues
:pause
@echo.
@pause
exit

In all these below examples, “myremote” is my remote machine name against which I am performing these operations.

To query all processes in remote machine use below command..

wmic /node:myremote process
wmic /node:myremote process where name="outlook.exe"
wmic /node:myremote process where "name like '%outlo%'" get name
wmic /node:myremote process where name="outlook.exe"  call terminate
wmic /node:myremote process where name="outlook.exe"  call getowner

If you want a command for any specific requirement, please leave a note below in comments section. I will get back to you ASAP.

Happy Learning..,
Sitaram Pamarthi

Оставьте комментарий