Убить все процессы с именем

  $ ps -u username  

  $ pkill -u username  

pkill command

Просмотр процессов

Остановка процессов

Подробная информация

Потребление ресурсов

How to kill a background process?

In one of our examples in the previous section, we put our tesh.sh script to run in the background. Most background processes, especially simple commands, will terminate without any hassle.

  $ kill 2383  

In the screenshot, though, you’ll notice that the script has ignored our kill command:

Process killing ignored

As we’ve learned already, kill -9 is the best way to kill a process that is hung up or refusing to terminate.

Force killing

Kill a process

As you can see, we’ve killed a process with the ID of 1813.

  • List running processes

  • Kill a process by PID

  • Default signal sent by the kill command

  • How to kill all processes by name?

  • How to kill a nohup process?

  • How to run a process in the background?

  • How to kill a background process?

  • How to kill stopped processes?

  • Kill operation not permitted

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

Команда TSKILL
похожа на команду TASKKILL
но более адаптирована для использования на сервере терминалов Microsoft. При большом количестве удаленных пользователей, данная команда удобнее, чем TASKKILL поскольку имеет параметры командной строки для использования по отношению к сеансам удаленного рабочего стола.

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

Параметры командной строки:

id процесса
– уникальный идентификатор процесса.

имя процесса
– имя процесса, как правило – имя исполняемого файла без расширения, например – Firefox
.

/SERVER:сервер терминалов
– имя или адрес сервера терминалов.

id сеанса
– идентификатор сеанса, уникальный для каждого подключения к удаленному рабочему стола по протоколу RDP
(Remote Desktop Protocol).

/A
– Прекратить процесс, выполняемый во всех сеансах.

/V
– Отображение информации о выполненных действиях.

Идентификаторы сеансов пользователей можно определить с помощью команды QUERY
:

query session
– отобразить сведения о пользовательских сеансах. Пример отображаемой информации:


СЕАНС             ПОЛЬЗОВАТЕЛЬ        ID         СТАТУС        ТИП

Для получения списка сеансов пользователей на удаленном сервере терминалов используется команда:

query session /server:winsrv2016
– получить информацию о сеансах пользователей с сервера winsrv2016
.

Для выполнения данной команды требуются права администратора по отношению к удаленной системе и некоторые настройки безопасности, приведенные на странице с описанием команды QUERY.

Примеры использования TSKILL:

tskill.exe 2425
– уничтожить процесс с идентификатором 2425
. Идентификаторы процессов можно получить с помощью команды TASKLIST

tskill.exe Firefox
– завершить процесс с именем Firefox. Процесс с указанным именем будет завершен только для сеанса текущего пользователя. Все прочие процессы с таким же именем, существующие в сеансах других пользователей сервера терминалов не будут затронуты. При использовании команды TSKKILL для завершения процесса по имени, при наличии соответствующих прав, локальный администратор завершит процесс не только для себя, но и для всех пользователей удаленного рабочего стола.

tskill firefox /server:win10 /A
– завершить процесс firefox
для всех сеансов пользователей на сервере win10
Процесс будет завершен не только в среде сеансов пользователей удаленного рабочего стола, но и в среде локального пользователя.


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

How to run a process in the background?

The kill command is an efficient way to terminate processes you have running in the background. You’ve already learned how to kill processes in this tutorial, but knowing how to run a process in the background is an effective combination for use with the kill command.

You can append an ampersand (&) to your command in order to have it executed in the background. This is useful for commands or scripts that will take a while to execute, and you wish to do other tasks in the meantime.

Run a process in background using ampersand

Here we have put a simple ‘ls’ command into the background. Since it’s the type of command which takes very little time to execute, we’re given more output about it finishing its job directly after.

The output in our screenshot says “Done”, meaning that the job in the background has completed successfully. If you were to kill the job instead, it would show “terminated” in the output.

You can also move a job to the background by pressing Ctrl+Z on your keyboard. The ^Z in this screenshot indicates that we pressed Ctrl+Z and the test.sh script moved into the background.

Run a process in background using CTRL+Z

You can see test.sh continuing to run in the background by issuing a ps command.

  $ ps -e | grep test.sh  

List background processes

Using screen command

Another way to run a process in the background is to use the ‘screen’ command. This works by creating what basically amounts to a separate terminal window (or screen and hence the name).

Each screen that you create has its process ID, which means that it’s an efficient way of creating background processes that can be later terminate using the kill command.

Screen command doesn’t come with all Linux installs by default, so you may have to install it.

  $ sudo apt-get install screen  

Once you installed the screen command, you can create a new session by just typing ‘screen’.:

  $ screen  

But, before you do that, it’s good to get in the habit of specifying names for your screens. That way, they are easy to look up and identify later. All you need in order to specify a name is the -S switch.

  $ screen -S my-screen-name  

Let’s make a screen called “testing” and then try to terminate it with the ‘kill’ command. We start like this:

Screen command

After typing this command and pressing enter, we’re instantly taken to our newly created screen. This is where you could start the process that you wish to have running in the background.

This is especially handy if you are SSH’d into a server and need a process to continue running even after you disconnect.

Disconnect from screen

As you can see, the screen command has listed the process ID as soon as we detached the screen. Of course, we can terminate this screen (and the command/script running inside of it), by using the kill command.

You can easily look up the process ID of your screen sessions by using this command:

  $ screen -ls  

List screen sessions

If we hadn’t named our screen session by using the -S switch, only the process ID itself would be listed. To reattach to the any of the screens listed, you can use the -r switch:

  $ screen -r name-of-screen  
  $ screen -r PID  

Reattach screen process

In the screenshot below, we are killing the screen session we created (along with whatever is being run inside of it), and then issuing another screen -ls command in order to verify that the process has indeed ended.

Kill screen session

Команда taskkill позволяет завершить вышедший из под контроля процесс в Windows 7
, если Диспетчер задач Windows 7 (Task Manager)
не справляется с этой задачей.

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

Завершение процессов в Windows командой taskkill

Рисунок A. Откройте окно командной строки.

Использование команды taskkill

Общий синтаксис команды выглядит следующим образом:

   taskkill [ОПЦИИ] [ИДЕНТИФИКАТОР ПРОЦЕССА]  
  

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

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

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

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

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

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

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

Ну и разумеется, одна из самых полезных опций — переключатель для вызова справки (рис. В):

   taskkill /?  
  

Завершение процессов в Windows командой taskkill

Рисунок B. Вывод справочной информации по команде taskkill при использовании переключателя справки.

Завершение процесса по имени приложения

Проще всего завершить вышедший из-под контроля процесс, воспользовавшись командой taskkill с использованием опции /IM. Выглядеть это будет так:

   taskkill /IM ИМЯ_ПРИЛОЖЕНИЯ  
  

Здесь ИМЯ_ПРИЛОЖЕНИЯ — это имя процесса, который требуется завершить. К примеру, если Outlook не удается закрыть, можно воспользоваться следующей командой:

   taskkill /IM outlook.exe  
  

Завершение процесса по идентификатора

Если вы не знаете имени процесса, но знаете его идентификатор (PID) — например, 572 — можно воспользоваться следующей командой:

   taskkill /PID 572  
  

Завершение всех процессов для определенной учетной записи

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

   taskkill /F /FI “USERNAME eq имя_пользователя”  
  

Завершение процессов на удаленном компьютере

Еще одна удобная возможность — завершение процессов в удаленном режиме. Допустим, вы точно знаете, что система не отвечает из-за определенного процесса (возьмем для примера все тот же Outlook). В таком случае можно воспользоваться другим компьютером и выполнить следующую команду:

   taskkill /s IP-АДРЕС /u ДОМЕН\ПОЛЬЗОВАТЕЛЬ /IM Outlook.exe  
  

Команда taskkill — весьма мощный и функциональный инструмент, способный избавить от необходимости принудительной перезагрузки компьютера. Умелое использование этой команды в сочетании с Диспетчером задач продлевает время безотказной работы системы и даже позволяет бороться с вирусами, руткитами или троянцами.

Kill operation not permitted

If you are getting an “operation not permitted” error when trying to kill a process, it’s because you don’t have the proper permissions. Either log in to the root account or use ‘sudo’ (on Debian distributions) before your kill command.

  $ sudo kill PID  

sudo kill permission

Mokhtar Ebrahim

Kill a process by PID

Now that we know the PID of the SSH daemon, we can kill the process with the kill command.

  $ sudo kill 1963  

Kill process by ID

You can issue a final ‘ps’ command, just to ensure that the process was indeed killed.

  $ ps -e | grep ssh  

The results come up empty, meaning that the process was shut down successfully. If you notice that the process is continuing to run – which should not normally happen – you can try sending a different kill signal to the process, as covered in the next session.

How to kill a nohup process?

You can kill the nohup process the same way as any other running process. Note that you can’t grep for “nohup” in the ps command, so you’ll need to search for the running process using the same methods as shown above.

In this example, we find a script titled ‘test.sh’ which has been executed with the nohup command. As you’ll see, finding and ending it is much the same as the examples above.

Kill nohup process

The only difference with the output is that the shell notifies us that the process was terminated. That’s not part of kill, but rather a result from running the script in the background (the ampersand in this example) and being connected to the same tty from which the script was initiated.

  $ nohup ./test.sh &  

How to kill all processes by name?

You can also use the name of a running process, rather than the PID, with the pkill command. But beware, this will terminate all
the processes running the under the specified name, since kill won’t know which specific process you are trying to terminate.

  $ pkill name-of-process  

Check out the example below, where we terminate five processes with a single pkill command.

Kill a process using pkill

В этом примере мы хотели завершить только один из этих экранных сеансов; было бы необходимо указать PID и использовать обычную команду kill. В противном случае невозможно однозначно указать процесс, который мы хотим завершить.

Сигнал по умолчанию, отправляемый командой kill

По умолчанию команда kill отправит сигнал SIGTERM
к указанному вами процессу.

Это должно позволить процессу корректно завершиться, поскольку SIGTERM сообщит процессу выполнить обычные процедуры завершения работы — другими словами, это не приведет к резкому завершению процесса.

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

Однако иногда сигнала SIGTERM недостаточно, чтобы завершить процесс. Если вы запустите команду kill и заметите, что процесс все еще работает, возможно, процесс все еще находится в процессе завершения работы или он полностью завис.

Чтобы принудительно закрыть процесс и отказаться от его нормального завершения, вы можете отправить сигнал SIGKILL с ключом -9, как показано здесь:

 $ kill -9 идентификатор процесса 

Force process killing

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

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

Помимо сигналов SIGTERM и SIGKILL, существует множество других сигналов, которые kill может отправлять процессам, и все они можно увидеть с помощью ключа -l.

Kill signals

Цифры рядом с именами — это то, что вы бы указали в своей команде «убить». Например, kill -9 — это SIGKILL, как вы видите на скриншоте выше.

Для повседневных операций SIGTERM и SIGKILL, вероятно, единственные сигналы, которые вам никогда не понадобятся. Просто помните о других на случай, если у вас возникнут странные обстоятельства, когда процесс рекомендует завершить его другим сигналом.

Список запущенных процессов

Команда «ps -e» выведет список всего, что работает в вашей системе. Даже при минимальной установке команда, вероятно, выдаст более 80 результатов, поэтому гораздо проще передать команду в « grep ».
‘ или больше’.

 пс -е | grep имя процесса 

На скриншоте ниже мы проверяем, работает ли SSH в системе.

Check if process is running

Это также дает нам PID демона SSH, который равен 1963.

Перейдите к «больше», если вы хотите просмотреть запущенные процессы вашей системы
по одному.

List running processes

Вы также можете использовать команду «top», чтобы увидеть список запущенных процессов. Это полезно, поскольку показывает, сколько системных ресурсов использует каждый процесс.

List processes using top command

Обратите внимание на столбцы %CPU и %MEM, потому что, если вы заметите неважный процесс, потребляющий ценные системные ресурсы, возможно, его лучше убить!

Еще одним очень эффективным способом получения соответствующего идентификатора процесса является использование команды «pgrep». Единственный аргумент, который вам нужно предоставить, — это имя (или часть имени) запущенного процесса.

Вот как это выглядит, когда мы ищем SSH. Как видите, он возвращает идентификатор процесса 2506.

Using pgrep

Подробная информация о процессе

Для каждого процесса производства каталог по пути /proc/
, в чем подозреваются папки и файлы с описанием процесса.

Примеры использования /proc/

Подробный вывод статуса:

Адрес в ячейках оперативной памяти, которые занял процесс:

Команда, которая была запущена:

Символическая ссылка на каталог рабочего процесса:

Символическая ссылка на исполняемый файл, запустивший процесс:

Увидеть ссылки на дескрипторы файлов, которые проникают в процесс:

Подробное описание на сайте  man7.org
.

Убить процесс

Останавливаем процесс по его PID:

Если процесс не завершается, убиваем его принудительно:

kill -9 <PID>

Остановить все процессы с именем nginx:

Как и в случае с kill, можно это сделать принудительно:

killall -9 nginx

Можно остановить все процессы конкретного пользователя:

killall -u oleg

Ищем процесс по имени, извлекаем его PID и завершаем его:

* обратите внимание, что запрос может вывести несколько процессов, которые будут попадать под критерии поиска — в таком случае, они будут завершены все.

Потребление ресурсов процессами

Для просмотра статистики потребления ресурсов используем утилиту top:

  • PID —
    идентификатор процесса.
  • USER —
    имя учетной записи, от которой запущен процесс.
  • PR —
    приоритет процесса.
  • NI —
     приоритет, выставленной командой nice.
  • VIRT —
     объем виртуальной памяти, потребляемый процессом.
  • RES —
     объем используемой оперативной памяти.
  • SHR —
     количество разделяемой памяти, которое используется процессом.
  • S —
     состояние процесса.
  • %CPU —
     процент использования процессорного времени.
  • %MEM —
     потребление оперативной памяти в процентах.
  • TIME —
     использование процессорного времени в секундах.
  • COMMAND —
     команда, которая запустила процесс.

Дмитрий Моск — частный мастер

Была ли полезна вам эта инструкция?

How to kill stopped processes?

It can be useful to kill all your stopped background jobs at once if they have accumulated and are no longer useful to you. For the sake of example, we’re running three instances of our test.sh script in the background and they’ve been stopped:

  $ ./test.sh &  

Stop a process

You can see these processes with the ps command:

  $ ps -e | grep test.sh  

List processes

Or, to just get a list of all the stopped jobs on the system, you can run the jobs command:

  $ jobs  

List stopped processes

  $ kill `jobs -ps`  

Or use the -9 switch to make sure the jobs terminate immediately:

  $ kill -9 `jobs -ps`  

Kill stopped processes

The `jobs -ps` command will list all jobs’ PIDs running in the background, which is why we’re able to combine its output with the kill command in order to end all the stopped processes.

Список процессов

Вывести на экран список текущих процессов, запущенных пользователем, можно командой:

Чтобы посмотреть список всех процессов с дополнительной информацией, вводим:

Мы увидим, примерно, следующее:

Ключи

Примеры

Поиск процесса с помощью grep:

:/>  Как разблокировать Huawei MateBook, если вы забыли пароль?

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