kill параметры в linux

Как завершить процесс в Linux. Команды kill, pkill,killall

В операционных системах Linux есть команда Kill, прерывающая процесс. Она позволяет серверу продолжать работу после серьезных изменений и обновлений без необходимости перезагрузки. Это одно из важнейших преимуществ Linux и одна из причин того, почему она установлена на 90% серверов в мире. Команда kill отправляет процессу специальный сигнал. Ее можно запустить различными способами, непосредственно из командной строки или из скрипта.

Синтаксис

Использование команды kill из /usr/bin предоставляет дополнительную возможность прервать процесс по его имени при помощи pkill. Стандартный синтаксис команды kill следующий:

Для команды kill существует около 60 сигналов, но основные значения следующие:

Имя сигналаНомер сигналаДействие
SIGHUP1Отключить
SIGKILL9“Убить”
SIGTERM15Прервать

SIGTERM используется по умолчанию. Это самый безопасный способ прерывания процесса, когда приложению отправляется запрос, который может быть обработан или проигнорирован. SIGHUP — менее безопасный способ. SIGKILL — наименее безопасный вариант, прерывание процесса без сохранения, этот сигнал не может быть проигнорирован или перехвачен.
Идентификаторы процессов
Чтобы прервать (“убить”) процесс, нам нужно знать его идентификатор (Process ID или PID). Он генерируется автоматически при запуске каждой программы и есть у каждого процесса в Linux. Первый процесс, запускаемый при загрузке Linux — init, поэтому в большинстве случаев ему присваивается идентификатор ‘1’.

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

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

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

Также можно сделать фильтрацию с помощью grep

Примеры

Прежде чем перейти непосредственно к исполнению команды kill, следует сделать ряд важных замечаний:

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

Будет “убит” процесс с PID=1684, то есть mysqld.

Можно использовать не только номер, но и название сигнала/ Например, для запроса на прерывание, который можно обработать или проигнорировать:

Для прерывания нескольких процессов можно указать их идентификаторы через пробел:

Прерывание процесса по имени. Команда pkill

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

Если у процесса слишком много экземпляров и дочерних процессов, существует команда killall, которой в качестве аргумента также задается имя процесса.

Для прерывания всех экземпляров mysqld с дочерними процессами воспользуйтесь следующей командой:

Далее можно проверить состояние процесса (запущен он или нет), например:

Команда killall

Еще одна полезная команда для завершения процессов, это команда killall. Эта команда также как и pkill может завершить все процессы имеющие одно имя

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

Заключение

Мы разобрали, как прерывать процессы в Linux и рассмотрели несколько используемых для этого команд. Эти команды следует применять с большой осторожностью, так как неосмотрительное прерывание процесса может привести к системным сбоям или потере важных данных. Для более подробной информации, различных вариантов передаваемых сигналов и других опций можно обратиться к соответствующим man-страницам.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Осваиваем команду Kill в Linux

Независимо от того, какую операционную систему вы используете, каждый из нас сталкивался с ситуацией, когда необходимо закрыть зависшую программу. В Linux (и в Mac) есть команда «kill», которую можно использовать для принудительного завершения работы приложений. В этом руководстве я покажу вам несколько различных способов ее использования.

Команды и сигналы Kill

Когда вы выполняете команду «kill», то фактически вы посылаете системе сигнал, чтобы заставить ее завершить некорректно ведущее себя приложение. Всего вы можете использовать до 60 сигналов, но все, что нужно знать, это SIGTERM (15) и SIGKILL (9).

Вы можете просмотреть все сигналы с помощью команды:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Синтаксис использования «kill»:

где флаг «-9» ссылается на сигнал SIGKILL.

Если вы не знаете точно PID приложения, просто запустите команду:

Она выведет информацию по всем запущенным программам.

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Например, чтобы завершить Chrome, я введу команду:

Также обратите внимание, что можно завершать несколько процессов одной командой.

PKill

Команда «pkill» позволяет использовать расширенные шаблоны регулярных выражений и другие критерии соответствия. Вместо использования PID вы теперь можете завершить приложение, введя имя его процесса. Например, для завершения работы Firefox просто введите команду:

Так как оно соответствует шаблону регулярного выражения, вы можете также ввести имя только частично, например:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Killall

Killall также использует имя процесса вместо PID и завершает все экземпляры процесса с этим именем. Например, если вы запустили несколько экземпляров Firefox, вы можете завершить их все с помощью команды:

В Gnome вы можете перезапустить Nautilus с помощью команды:

xkill

Заключение

Если приложение ведет себя неправильно и вызывает зависание системы, очень заманчиво перезагрузить компьютер и начать сеанс заново. С помощью этих команд «kill» вы можете завершить зависшее приложение без опасности для работы системы. Это особенно полезно для серверов, когда вы не хотите, чтобы зависшая программа привела к выключению всего сервера.

Источник

Команда kill

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Описание команды kill

Синтаксис

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

По умолчанию команда kill шлет сигнал KILL (он также называется SIGKILL и имеет числовое значение 9 ).

Опции

Примеры использования команды kill

Определить PID процесса

Так как команда kill принимает на вход PID (идентификатор) процесса, то необходимо сначала узнать PID процесса, которому требуется отправить сигнал. Чтобы это сделать, можно использовать команду ps (вместо firefox укажите название процесса):

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Вывести список сигналов

Выведем список всех доступных сигналов:

В результате получим список сигналов и их числовые значения:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Отправка сигнала SIGTERM

Пошлем сигнал SIGTERM процессу с PID 3012:

Отправка сигнала KILL (завершение процесса)

Пошлем сигнал KILL процессу с PID 3121, чтобы принудительно завершить процесс:

Или можно использовать числовое значение сигнала:

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

Выполним отправку сигнала KILL сразу нескольким процессам. Для этого необходимо перечислить их идентификаторы:

Источник

Kill параметры в linux

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

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

$ kill [параметры] идентификатор-процесса

Команда поддерживает ряд параметров командной строки. Наиболее полезным параметром является параметр -s, позволяющий указать системный сигнал, который может быть отправлен заданному процессу, а также параметр -l, позволяющий вывести список поддерживаемых системных сигналов. Вообще, сигналы могут задаваться в нескольких форматах:

По умолчанию команда осуществляет осуществляет отправку сигнала SIGTERM для корректного завершения работы процессов. Отрицательные значения идентификаторов используются для указания групп процессов, которым нужно отправить сигналы. Идентификатор -1 является специализированным идентификатором и используется для отправки сигналов всем запущенным процессам за исключением kill и init. Для получения идентификаторов процессов могут использоваться утилиты ps и top.

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

Получение списка поддерживаемых системных сигналов

Для того, чтобы получить список поддерживаемых системных сигналов, достаточно использовать параметр -l рассматриваемой утилиты:

Завершение работы процесса

Для завершения работы процесса достаточно передать его идентификатор команде kill. В данном случае в качестве рассматриваемого процесса будет использоваться предварительно запущенный процесс ping (в первой вкладке эмулятора терминала):

$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.058 ms

Для получения его идентификатора достаточно использовать команду ps aux, а также фильтр grep ping (во второй вкладке эмулятора терминала):

$ ps aux | grep ping

alex 14371 0.0 0.0 18888 1024 pts/0 S+ 21:08 0:00 ping 127.0.0.1
alex 14381 0.0 0.0 17628 908 pts/1 S+ 21:08 0:00 grep ping

Процесс имеет идентификатор 14371. Для его завершения достаточно использовать команду kill (также во второй вкладке эмулятора терминала):

В результате исполнение процесса будет остановлено (в первой вкладке эмулятора терминала):

$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.058 ms

64 bytes from 127.0.0.1: icmp_seq=37 ttl=64 time=0.052 ms
Завершено

Завершение работы зависшего процесса

В случае зависшего процесса или процесса, игнорирующего сигнал SIGTERM, следует использовать сигнал SIGKILL. Для этого следует преобразовать недавно рассмотренную команду:

Исполнение процесса должно завершиться в любом случае.

Приостановка и продолжение исполнения процесса

Для приостановки и продолжения исполнения процессов следует использовать сигналы SIGSTOP и SIGCONT соответственно. Да, как вы наверняка уже догадались, ранее рассмотренная команда:

Превратится в команду для приостановки исполнения процесса:

Или команду для продолжения исполнения процесса:

Источник

В этой статье мы рассмотрим несколько самых распространенных способов завершить процесс Linux. Опишем подробно как происходит остановка процесса и как все сделать правильно.

Как происходит завершение процесса?

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

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

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

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Для передачи сигналов процессам в Linux используется утилита kill. Ее синтаксис очень прост:

Допустим, у нас выполняется утилита ping. Мы хотим ее завершить с помощью kill. Тогда, сначала мы узнаем ее идентификатор с помощью команды ps:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

В первой строчке отобразится сама утилита ping, а во второй сама программа ps. Берем нужный PID и завершаем процесс с помощью SIGTERM:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

И только если после этой команды процесс продолжил висеть, а это вы можете проверить, выполнив ps. Только теперь можно выполнить SIGKILL:

Теперь снова проверяем:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Если процесс запущен от суперпользователя, то, естественно, вам нужно использовать sudo. Не всегда удобно уничтожать процесс по его PID, как минимум, потому, что вам этот PID нужно еще узнать. Мы могли бы нагородить сложных конструкций с использованием xargs, чтобы вычислять автоматически pid по имени процесса и сразу же его завершать, но в этом нет необходимости. Уже существуют специальные утилиты.

Как завершить процесс с помощью pkill

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Также можно вручную задать тип сигнала:

Вместо ps, вы можете использовать утилиту pgrep для поиска pid процесса, убедимся что наша программа завершена:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Но если вам программа создала несколько процессов, например, браузер chromium или firefox создают отдельный процесс для каждой из вкладок, то эта утилита мало чем поможет. Тут нужен следующий вариант.

Как остановить процесс с помощью killall

killall работает аналогично двум предыдущим утилитам. Она тоже приминает имя процесса в качестве параметра и ищет его PID в директории /proc. Но эта утилита обнаружит все процессы, с таким именем и завершит их. Например:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Как видите, запущено несколько процессов, осталось остановить процесс Linux с помощью killall:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Команда завершит все запущенные утилиты ping, вы можете убедиться в этом еще раз выполнив pgrep:

kill параметры в linux. Смотреть фото kill параметры в linux. Смотреть картинку kill параметры в linux. Картинка про kill параметры в linux. Фото kill параметры в linux

Выводы

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *