Как завершить процесс в Linux — kill, pkill, killall

Как завершить процесс в Linux — kill, pkill, killall

Процесс — это программа в Linux, которая выполняется в отдельном адресном пространстве. При этом GNU / Linux — это многозадачная система, которая одновременно выполняет множество процессов, принадлежащих одному или нескольким пользователям. К сожалению, бывает, что некоторые приложения могут перестать отвечать на запросы пользователя или других приложений. Тогда придется либо перезагружать систему, либо выполнить завершение процесса.

Содержание:

  1. Описание команд kill, pkill и killall
  2. Просмотр процессов
  3. Использование команд kill, pkill, killall
  4. Проверка состояния процессов
  5. Выводы

Команды kill, pkill и killall

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

По умолчанию команда kill посылает сигнал SIGTERM запущенному процессу. Это действие обычно останавливает работающие процессы. Если Вы хотите остановить процесс — просто укажите его идентификатор PID в переменной ProcessID.

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

 

Как завершить процесс в Linux — kill, pkill, killall

При этом элементы команды имеют следующее значение:

  • sigspec — посылает сигнал процессу, названному по спецификации задания jobspec;
  • signum — посылает сигнал процессу, названному по идентификатору процесса PID.

Существует семь базовых сигналов, которые Вы можете послать, используя команду kill:

  • SIGHUP(1) — сигнал для сообщения о потере соединения с управляющим терминалом пользователя;
  • SIGINT(2) — сигнал о прерывании процесса с клавиатуры (обычно при нажатии комбинации клавиш Ctrl+C);
  • SIGQUIT(3) — сигнал, аналогичный SIGINT, но при этом вызывается символом QUIT, и при завершении процесса производит дамп ядра;
  • SIGABRT(6) — сигнал, посылаемый процессом самому себе при выполнении аварийной остановки с выполнением дампа памяти в случае невозможности дальнейшего продолжения работы программы;
  • SIGKILL(9) — сигнал используется для немедленного завершения программы (не может быть обработан, проигнорирован или заблокирован);
  • SIGTERM(15) — сигнал для завершения работы программы, который можно блокировать, обрабатывать и игнорировать (используется как сигнал по умолчанию);
  • SIGSTOP(17,19,23) — сигнал для приостановки процесса (процесс не возобновится автоматически, пока Вы не отправите ему сигнал SIGCONT — позволяет приостановить процесс, не завершая его).

Теперь давайте перейдем к следующему инструменту для завершения процессов в Linux.

Команда pkill — это инструмент командой строки GNU / Linux, который посылает сигналы процессам запущенной программы на основе заданных критериев (чаще всего — на основе имени процесса).

Синтаксис команды pkill имеет следующий формат:

 

С помощью опции --help Вы можете получить подробную справку о возможностях и опциях команды pkill.

Синтаксис команды pkill

Команда killall — это еще одна служебная команда в ОС семейства GNU / Linux, используемая для уничтожения любого запущенного процесса в системе на основе заданного имени. Эта утилита принудительно завершает процессы при совпадении их имени с заданным и является самым простым способом уничтожения сразу нескольких экземпляров или нескольких дочерних процессов одного приложения.

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

 

Если Вы введете команду killall без опций и аргументов — на экран будет выведена справка по ее функциям.

Как завершить процесс в Linux — kill, pkill, killall

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

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

Первый процесс, который запускается при загрузке системы Linux — это systemd или init, которые являются основными, поэтому их невозможно уничтожить даже случайно. В большинстве случаев в операционной системе этим процессам присваивается значение PID равное 1.

Чтобы увидеть все запущенные процессы и соответствующие им значения PID — выполните следующую команду:

 

Вывод процессов

Чтобы узнать идентификатор конкретного процесса — используя его имя. Для этого Вы можете применить следующую команду (в качестве примера мы использовали имя mysqld):

 

Поиск идентификатора процесса

Для этой же цели Вы можете ввести комбинацию команд, приведенную ниже (при этом она выводит гораздо больше информации о процессе):

 

Как завершить процесс в Linux — kill, pkill, killall

Третий способ вывода идентификатора процесса предполагает использование команды pgrep:

 

Использование pgrep

Использование команд kill, pkill, killall

Прежде всего, предлагаем Вам ознакомиться с некоторыми особенностями использования команды kill:

  • пользователь может завершить весь процесс;
  • Вы можете завершить только свои процессы;
  • Вы не можете завершить процессы, которые использует система;
  • пользователь root может завершить системные процессы или процесс любого пользователя.

Для завершения процесса по его PID — используйте следующие команды:

 

Или же:

 

Или:

 

Как завершить процесс в Linux — kill, pkill, killall

Вы также можете завершить процесс по его имени, используя команду pkill. Для этого нужно точно знать имя процесса.

 

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

Если Вы хотите завершить несколько разных процессов за один раз — используйте команду kill. И просто перечислите их идентификаторы через пробел:

 

Или же:

 

Либо:

 

Завершение нескольких разных процессов

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

В качестве примера попробуем завершить все экземпляры и дочерние процессы программы Firefox:

 

Завершение дочерних процессов программы

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

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

 

Статус mysql

Или этой:

 

Либо этой:

Выводы

Завершать процессы в Linux довольно просто, если Вы освоили команды kill, pkill, killall. А также — несколько вспомогательных инструментов, позволяющих узнавать значения PID по имени процесса и статус запущенных программ в операционной системе. Стоит отметить, что эти знания необходимы любому системному администратору. И точно будут полезны представителям многих других ИТ-профессий.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ)..

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Больше похожих постов

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

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

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню