$ ps -u username
$ pkill -u username
Просмотр процессов
Остановка процессов
Подробная информация
Потребление ресурсов
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:
As we’ve learned already, kill -9 is the best way to kill a process that is hung up or refusing to terminate.
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.
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.
You can see test.sh continuing to run in the background by issuing a ps command.
$ ps -e | grep test.sh
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:
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.
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
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
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.
Команда taskkill позволяет завершить вышедший из под контроля процесс в Windows 7
, если Диспетчер задач Windows 7 (Task Manager)
не справляется с этой задачей.
Иногда возникает необходимость вручную завершить процесс, который не отвечает. В большинстве случаев это можно сделать с помощью Диспетчера задач Windows, однако порой ему не удается справиться с вышедшим из под контроля приложением. Мне часто приходилось сталкиваться с этим при попытке завершить процесс Acronis. В такой ситуации я обычно использую более мощный инструмент — команду taskkill.
Рисунок A. Откройте окно командной строки.
Использование команды taskkill
Общий синтаксис команды выглядит следующим образом:
taskkill [ОПЦИИ] [ИДЕНТИФИКАТОР ПРОЦЕССА]
Разумеется, для taskkill доступен широкий выбор опций. Перечислю лишь наиболее полезные из них:
• /s КОМПЬЮТЕР, где КОМПЬЮТЕР
— это IP или адрес удаленного компьютера. По умолчанию, операция выполняется в локальной системе. Если именно это вас и интересует, данную опцию можно не использовать.
• /u ДОМЕН\ПОЛЬЗОВАТЕЛЬ
, где ДОМЕН — это имя домена, а ПОЛЬЗОВАТЕЛЬ — имя пользователя, для которого нужно выполнить команду. Данная опция позволяет запускать taskkill с правами определенной учетной записи или домена.
• /p
— обязательно используется в сочетании с опцией /u для указания пароля к учетной записи пользователя.
• /fi
— позволяет выполнять команду taskkill с определенными фильтрами.
• /f
— принудительно завершает выполнение команды.
• /IM
— позволяет использовать имя приложения вместо идентификатора процесса.
Ну и разумеется, одна из самых полезных опций — переключатель для вызова справки (рис. В):
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
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
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.
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.
В этом примере мы хотели завершить только один из этих экранных сеансов; было бы необходимо указать PID и использовать обычную команду kill. В противном случае невозможно однозначно указать процесс, который мы хотим завершить.
Сигнал по умолчанию, отправляемый командой kill
По умолчанию команда kill отправит сигнал SIGTERM
к указанному вами процессу.
Это должно позволить процессу корректно завершиться, поскольку SIGTERM сообщит процессу выполнить обычные процедуры завершения работы — другими словами, это не приведет к резкому завершению процесса.
Это хорошо, потому что мы хотим, чтобы наши процессы завершались так, как они задуманы.
Однако иногда сигнала SIGTERM недостаточно, чтобы завершить процесс. Если вы запустите команду kill и заметите, что процесс все еще работает, возможно, процесс все еще находится в процессе завершения работы или он полностью завис.
Чтобы принудительно закрыть процесс и отказаться от его нормального завершения, вы можете отправить сигнал SIGKILL с ключом -9, как показано здесь:
$ kill -9 идентификатор процесса
Может возникнуть соблазн всегда добавлять ключ -9 к вашим командам убийства, так как он всегда работает. Однако это не рекомендуется. Вы должны использовать его только для процессов, которые зависли и отказываются завершить работу должным образом.
По возможности используйте сигнал SIGTERM по умолчанию. Это предотвратит ошибки в долгосрочной перспективе, поскольку даст процессу возможность закрыть свои файлы журналов, разорвать все затянувшиеся соединения и т. д.
Помимо сигналов SIGTERM и SIGKILL, существует множество других сигналов, которые kill может отправлять процессам, и все они можно увидеть с помощью ключа -l.
Цифры рядом с именами — это то, что вы бы указали в своей команде «убить». Например, kill -9 — это SIGKILL, как вы видите на скриншоте выше.
Для повседневных операций SIGTERM и SIGKILL, вероятно, единственные сигналы, которые вам никогда не понадобятся. Просто помните о других на случай, если у вас возникнут странные обстоятельства, когда процесс рекомендует завершить его другим сигналом.
Список запущенных процессов
Команда «ps -e» выведет список всего, что работает в вашей системе. Даже при минимальной установке команда, вероятно, выдаст более 80 результатов, поэтому гораздо проще передать команду в « grep ».
‘ или больше’.
пс -е | grep имя процесса
На скриншоте ниже мы проверяем, работает ли SSH в системе.
Это также дает нам PID демона SSH, который равен 1963.
Перейдите к «больше», если вы хотите просмотреть запущенные процессы вашей системы
по одному.
Вы также можете использовать команду «top», чтобы увидеть список запущенных процессов. Это полезно, поскольку показывает, сколько системных ресурсов использует каждый процесс.
Обратите внимание на столбцы %CPU и %MEM, потому что, если вы заметите неважный процесс, потребляющий ценные системные ресурсы, возможно, его лучше убить!
Еще одним очень эффективным способом получения соответствующего идентификатора процесса является использование команды «pgrep». Единственный аргумент, который вам нужно предоставить, — это имя (или часть имени) запущенного процесса.
Вот как это выглядит, когда мы ищем SSH. Как видите, он возвращает идентификатор процесса 2506.
Подробная информация о процессе
Для каждого процесса производства каталог по пути /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 &
You can see these processes with the ps command:
$ ps -e | grep test.sh
Or, to just get a list of all the stopped jobs on the system, you can run the jobs command:
$ jobs
$ kill `jobs -ps`
Or use the -9 switch to make sure the jobs terminate immediately:
$ kill -9 `jobs -ps`
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: