Завершить процесс в Linux – команды ps, kill и killall

Как бы там ни было, но некоторые приложения в Linux иногда зависают. При этом бывают ситуации, когда приложение вообще не отзывается, либо работает так медленно, что корректно завершить его работу не представляется возможным. Чтобы оперативно выйти из получившейся ситуации можно “убить” данный процесс. Для этог используеются команды kill и killall. Сейчас мы разберемся как использоваться эти команды, находить PID процесса и посылать сигнал SIGKILL.

Что такое процесс?

Запуск таких программ, как ваш веб-браузер, фоновые процессы, связанные с вашей рабочей средой, и системные службы Linux — все это процессы.

Вы можете объединить процессы в две группы:

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

Если процессы на переднем плане находятся перед персоналом театра и актерами, то фоновые процессы — это закулисная команда «за кадром».

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

Определить PID процесса – команда pidof

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

Читайте также:  Основы Bash- изучаем команды для создания своих скриптов

ps axu

Разумеется, PID можно определить и через top. Но в большинстве случаев количество процессов слишком велико (и динамически меняется в top), поэтому быстро и правильно определить PID не так уж и просто. Как раз для этого используется команда grep. Например, для завершения процесса браузера Google Chrome необходимо выполнить следующую команду:

ps axu | grep chrome

[[email protected]////// ~]$ ps axu | grep chrome itechf2 20474 2.7 1.5 938416 120136 tty2 Sl+ 11:07 0:00 /opt/google/chrome/chrome

В нашем случае 20474 и есть искомый PID. Более простой способ – использовать команду pidof, при этом необходимо указывать имя процесса. Например:

[[email protected]///// ~]$ pidof chrome 20728 20706 20668 20647 20586 20574 20553 20508 20474

Как отправлять сигналы процессам в Linux

Все процессы в Linux отвечают на сигналы.

Сигналы — способ завершить или изменить поведение программ на уровне ОС.

Как отправлять процессам сигналы при помощи PID

Наиболее распространенным способом передачи сигналов программам является команда kill.

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

kill PID_of_target_process

Это отправит всем процессам сигнал TERM. Данный сигнал приказывает процессу завершиться. Это позволяет программе выполнять операции по очистке и завершить работу без помех.

Если программа неисправна и не завершает работу при отправке сигнала TERM, можно усилить сигнал, передав сигнал KILL:

kill -KILL PID_of_target_process

Данный специальный сигнал отправляется не программе.

Вместо этого он передается ядру операционной системы, которое прерывает процесс. Это используется для блокировки программ, которые игнорируют сигналы, посылаемые им.

Каждый сигнал имеет ассоциированный номер, который можно передать вместо имени. К примеру, можно отправить «-15» вместо «-TERM» и «-9» вместо «-KILL».

Как использовать сигналы для других целей

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

К примеру, многие демоны можно перезапустить при помощи сигнала отбоя HUP. Apache является одной из работающих по такому принципу программ.

sudo kill -HUP pid_of_apache

Вышеприведенная команда заставит Apache перезагрузить конфигурационный файл и возобновить обслуживание контента.

Чтобы просмотреть список всех сигналов, которые можно отправить с kill, наберите:

kill -l

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

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

Как отправлять сигналы процессам в Linux

Команда pkill работает почти также, как kill, но она действует от имени процесса:

pkill -9 ping

Команда, приведенная выше, является эквивалентом:

kill -9 `pgrep ping`

Чтобы послать сигнал каждому экземпляру определенного процесса, используйте команду killall:

killall firefox

Вышеуказанная команда отправит сигнал TERM каждому экземпляру firefox, запущенному на данном компьютере.

Как установить приоритеты процессов

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

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

Linux контролирует приоритеты с помощью значения под названием niceness.

Задачи с высоким приоритетом имеют низшее значение  nice, так как они поглощают ресурсы. С другой стороны, задачи с низким приоритетом имеют высокое значение nice, так как они используют минимальное количество ресурсов.

При запуске команды top в начале статьи был выведен столбец, отмеченный как «NI». В нем указывается значение nice процесса:

top

В зависимости от системы, значение nice может варьироваться от «-19/-20» (наивысший приоритет) до «19/20» (самый низкий приоритет).

Чтобы запустить программу с определенным значением nice, можно использовать команду nice:

nice -n 15 command_to_execute

Это работает только при запуске новой программы.

Чтобы изменить значение nice программы, которая уже выполняется, нужно использовать инструмент renice:

renice 0 PID_to_prioritize

Примечание: в то время как nice работает с именем команды, renice вызывает PID процесса.

Описание

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

Например, рассмотрим простой фрагмент кода LESS —

.border(@width; @style; @color) { border: @width @style @color; } .myheader { .border(2px; dashed; green); }

Читайте также:  Как создать GPT-диск в Linux (носитель более 2 ТиБ)

Здесь мы используем параметрический миксин в качестве .border с тремя параметрами — шириной, стилем и цветом. Используя эти параметры, вы можете настроить выход миксина с использованием переданных значений параметров.

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

Типы и описание
1 Mixins с несколькими параметрами

Параметры могут быть разделены запятыми или точками с запятой.

2 Именованные параметры

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

3 Переменная @arguments

Когда вызывается миксин , @arguments включает все переданные аргументы.

4 Расширенные аргументы и переменная @rest

Mixin принимает переменное количество аргументов, используя …..

5 Шаблон сопоставления

Измените поведение mixin, передав ему параметры.

Параметры могут быть разделены запятыми или точками с запятой.

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

Когда вызывается миксин , @arguments включает все переданные аргументы.

Mixin принимает переменное количество аргументов, используя …..

Измените поведение mixin, передав ему параметры.

LESS — Mixins как функции

В этой главе мы поймем важность Mixins как функций . Как и функции, миксины могут быть вложенными, принимать параметры и возвращать значения.

Следующая таблица демонстрирует использование mixins как функции в деталях.

Mixins использование и описание
1 Миксин сфера

Mixins состоят из переменных; они могут использоваться в области действия вызывающего абонента и являются видимыми.

2 Mixin и возвращаемые значения

Миксины аналогичны функциям, а переменные, определенные в миксинах, будут вести себя как возвращаемые значения.

3 Mixin внутри другого mixin

Всякий раз, когда миксин определен внутри другого миксина, он также может использоваться как возвращаемое значение.

Mixins состоят из переменных; они могут использоваться в области действия вызывающего абонента и являются видимыми.

Миксины аналогичны функциям, а переменные, определенные в миксинах, будут вести себя как возвращаемые значения.

Всякий раз, когда миксин определен внутри другого миксина, он также может использоваться как возвращаемое значение.

LESS — Передача наборов правил в Mixins

Читайте также:  Как спрятать файлы и папки в Windows и macOS