Как кильнуть процесс linux

Содержание
  1. Как убить процесс в Linux
  2. Сигналы отключения системы
  3. Завершение процессов с помощью команды kill
  4. Завершение процессов с помощью команды killall
  5. Завершение процессов с помощью команды pkill
  6. Выводы
  7. Как завершить процесс в Linux. Команды kill, pkill,killall
  8. Синтаксис
  9. Примеры
  10. Прерывание процесса по имени. Команда pkill
  11. Команда killall
  12. Заключение
  13. Команда kill
  14. Описание команды kill
  15. Синтаксис
  16. Опции
  17. Примеры использования команды kill
  18. Определить PID процесса
  19. Вывести список сигналов
  20. Отправка сигнала SIGTERM
  21. Отправка сигнала KILL (завершение процесса)
  22. Отправка сигнала нескольким процессам
  23. Как убить процесс в Linux
  24. How to Kill a Process in Linux
  25. В этой статье мы покажем вам , как использовать kill , killall и pkill команды для завершения процесса в Linux.
  26. Сигналы убийства системы
  27. Завершение процессов с помощью kill команды
  28. Завершение процессов с помощью killall команды
  29. Завершение процессов с помощью pkill команды
  30. Вывод
  31. Как убить процесс Linux
  32. Как происходит завершение процесса?
  33. Как убить процесс Linux?
  34. Как завершить процесс с помощью pkill
  35. Как остановить процесс с помощью killall
  36. Выводы

Как убить процесс в Linux

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

Что ж, в какой-то момент это случилось со всеми нами, не так ли? Решение состоит в том, чтобы прервать или убить процесс приложения. Но как?

К счастью, в Linux есть несколько утилит, которые позволяют убивать ошибочные процессы.

В этой статье мы покажем вам, как использовать команды kill , killall и pkill для завершения процесса в Linux.

Основное различие между этими инструментами заключается в том, что kill завершает процессы на основе идентификатора процесса (PID), а команды killall и pkill завершают запущенные процессы на основе их имен и других атрибутов.

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

Сигналы отключения системы

kill , killall и pkill отправляют заданный сигнал указанным процессам или группам процессов. Если сигнал не указан, каждый инструмент отправляет 15 ( TERM ).

Наиболее часто используемые сигналы:

  • 1 (-HUP): перезагрузить процесс.
  • 9 (-KILL): убить процесс.
  • 15 (-TERM): чтобы корректно остановить процесс.

Сигналы можно указать тремя разными способами:

  • используя число (например, -1)
  • с префиксом «SIG» (например, -SIGHUP)
  • без префикса «SIG» (например, -HUP).

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

Описанные ниже шаги будут работать во всех дистрибутивах Linux.

Завершение процессов с помощью команды kill

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

Допустим, браузер Firefox перестал отвечать, и вам нужно убить процесс браузера. Чтобы узнать идентификатор процесса, используйте команду pidof :

Команда распечатает все процессы Firefox:

Как только вы узнаете, что Firefox обрабатывает PID, чтобы завершить их все, отправьте сигнал TERM :

Завершение процессов с помощью команды killall

Команда killall завершает работу всех программ, соответствующих указанному имени.

Используя тот же сценарий, что и раньше, вы можете убить процесс Firefox, набрав:

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

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

Завершение процессов с помощью команды pkill

pkill завершает процессы, соответствующие шаблону, указанному в командной строке:

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

С помощью pkill вы также можете отправить сигнал процессам, принадлежащим данному пользователю. Чтобы убить только процессы firefox, принадлежащие пользователю sara, вы должны ввести:

Выводы

Завершение неотвечающих программ с помощью команд kill , killall и pkill — простая задача. Вам нужно только знать имя процесса или PID.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

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

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

Читайте также:  Windows 10 перестал открываться меню пуск

Синтаксис

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

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

Имя сигнала Номер сигнала Действие
SIGHUP 1 Отключить
SIGKILL 9 “Убить”
SIGTERM 15 Прервать

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

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

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

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

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

Примеры

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

  • Пользователь может прервать любой свой процесс.
  • Пользователь не может прервать процесс другого пользователя..
  • Суперпользователь (root) может прервать системный процесс и процесс любого пользователя.
  • Пользователь не может прервать системный процесс

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

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

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

Аналогично, команда kill -SIGKILL PID эквивалентна команде # kill -9 PID

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

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

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

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

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

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

Команда killall

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

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

Заключение

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

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

Источник

Команда kill

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

Синтаксис

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

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

Опции

  • числовой номер сигнала — в таком случае будет выведено название сигнала;
  • название сигнала — в таком случае будет выведено числовое значение сигнала.

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

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

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

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

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

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

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

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

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

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

Читайте также:  Золотой образ для windows 10

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

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

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

Источник

Как убить процесс в Linux

How to Kill a Process in Linux

В этой статье мы покажем вам , как использовать kill , killall и pkill команды для завершения процесса в Linux.

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

Ну, это случилось со всеми нами в какой-то момент, не так ли? Решение состоит в том, чтобы прекратить или убить процесс приложения. Но как?

К счастью, в Linux есть несколько утилит, которые позволяют убивать ошибочные процессы.

Основное различие между этими инструментами заключается в том, что они kill завершают процессы на основе идентификатора процесса (PID), killall а pkill команды и завершают запущенные процессы на основе их имен и других атрибутов.

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

Сигналы убийства системы

kill , killall И pkill послать данный сигнал к определенным процессам или группам процессов. Когда сигнал не указан, каждый инструмент отправляет 15 ( TERM ).

Наиболее часто используемые сигналы:

  • 1 (-HUP): перезагрузить процесс.
  • 9 (-KILL): убить процесс.
  • 15 (-TERM): изящно остановить процесс.

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

  • используя число (например, -1)
  • с префиксом «SIG» (например, -SIGHUP)
  • без префикса «SIG» (например, -HUP).

Используйте -l опцию для перечисления всех доступных сигналов:

Описанные ниже шаги будут работать на всех дистрибутивах Linux.

Завершение процессов с помощью kill команды

Чтобы прервать процесс kill сначала командой, вам нужно найти PID процесса. Вы можете сделать это , используя различные команды , такие как top , ps , pidof , и pgrep .

Допустим, браузер Firefox перестал отвечать на запросы, и вам нужно убить процесс браузера. Чтобы найти идентификатор процесса, используйте pidof команду:

Команда напечатает все процессы Firefox:

Как только вы узнаете, что Firefox обрабатывает PID для завершения, все они посылают TERM сигнал:

Завершение процессов с помощью killall команды

Команда killall завершает все программы, которые соответствуют указанному имени.

Используя тот же сценарий, что и раньше, вы можете убить процесс Firefox, набрав:

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

Например, чтобы завершить все процессы, запущенные от имени пользователя «sara», вы должны выполнить следующую команду:

Завершение процессов с помощью pkill команды

pkill завершает процессы, которые соответствуют шаблону, указанному в командной строке:

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

С pkill его помощью вы также можете отправить сигнал процессам, которые принадлежат данному пользователю. Чтобы убить только процессы firefox, принадлежащие пользователю «sara», вы должны набрать:

Вывод

Завершение работы не отвечающих программ с помощью команд kill , killall and pkill — простая задача. Вам нужно только знать имя процесса или PID.

Источник

Как убить процесс Linux

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

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

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

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

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

  • SIGINT — самый безобидный сигнал завершения, означает Interrupt. Он отправляется процессу, запущенному из терминала с помощью сочетания клавиш Ctrl+C. Процесс правильно завершает все свои действия и возвращает управление;
  • SIGQUIT — это еще один сигнал, который отправляется с помощью сочетания клавиш, программе, запущенной в терминале. Он сообщает ей что нужно завершиться и программа может выполнить корректное завершение или проигнорировать сигнал. В отличие от предыдущего, она генерирует дамп памяти. Сочетание клавиш Ctrl+/;
  • SIGHUP — сообщает процессу, что соединение с управляющим терминалом разорвано, отправляется, в основном, системой при разрыве соединения с интернетом;
  • SIGTERM — немедленно завершает процесс, но обрабатывается программой, поэтому позволяет ей завершить дочерние процессы и освободить все ресурсы;
  • SIGKILL — тоже немедленно завершает процесс, но, в отличие от предыдущего варианта, он не передается самому процессу, а обрабатывается ядром. Поэтому ресурсы и дочерние процессы остаются запущенными.
Читайте также:  Latest windows updating software

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

Сначала Ctrl+C, если это возможно, затем SIGTERM — он хоть и завершает процесс, но делает эту культурно, и только в крайнем случае SIGKILL. А теперь рассмотрим как убить процесс по pid Linux на практике. Если вы всегда используете SIGKILL, тогда на ум приходит такая картинка:

Как убить процесс Linux?

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

$ kill -сигнал pid_процесса

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

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

ps aux | grep ping

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

kill -TERM 20446

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

kill -KILL 20446

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

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

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

Утилита pkill — это оболочка для kill, она ведет себя точно так же, и имеет тот же синтаксис, только в качестве идентификатора процесса ей нужно передать его имя. Утилита сканирует директорию proc и находит PID первого процесса с таким именем, затем отправляет ему SIGTERM. Таким образом, вы можете убить процесс по имени Linux. Например, если мы хотим завершить тот же ping:

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

pkill -TERM ping

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

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

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

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

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

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

Выводы

В этой статье мы рассмотрели как убить процесс Linux. Иногда эта задача может быть очень полезной, но важно понимать, что ее нужно выполнять правильно. Нельзя сказать, что передача SIGKILL вместо SIGTERM очень опасна, но так делать не стоит. Надеюсь, эта информация была полезна для вас.

Источник

Оцените статью