7. kill (Завершить)

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

Завершение по умолчанию с помощью kill sigterm

Когда вы используете команду kill только с идентификатором процесса (PID), по умолчанию она отправляет сигнал TERM. Это стандартный, корректный способ попросить программу завершить работу.

kill 12445

Сигнал kill sigterm (также известный как SIGTERM или сигнал 15) запрашивает чистое завершение работы процесса. Это дает процессу возможность сохранить свой прогресс и корректно освободить ресурсы. Вы также можете явно использовать номер сигнала, делая kill -15 12445 эквивалентным предыдущей команде. Это отвечает на частый запрос kill -15 linux.

Принудительное завершение с помощью SIGKILL

Иногда процесс перестает отвечать и не реагирует на сигнал SIGTERM. В таких случаях вы можете заставить его остановиться, используя сигнал KILL.

kill -9 12445

Сигнал SIGKILL (сигнал 9) немедленно завершает процесс, не давая ему возможности выполнить очистку. Это ключевое различие в споре о kill vs terminate; SIGKILL — это безусловное завершение, тогда как SIGTERM — вежливая просьба.

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

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

  • SIGHUP: Сигнал kill sighup (Hangup, сигнал 1) традиционно отправляется процессу при закрытии его управляющего терминала. Его можно использовать для того, чтобы демоны перезагрузили свои файлы конфигурации.
  • SIGINT: Сигнал прерывания (сигнал 2) отправляется при нажатии Ctrl-C. Он запрашивает у процесса прервать текущую операцию.
  • SIGSTOP: Этот сигнал (сигнал 19) приостанавливает процесс, не завершая его. Процесс можно возобновить позже с помощью сигнала SIGCONT.

Проверка существования процесса с помощью kill -0

Особый случай использования — linux kill -0. Эта команда на самом деле не отправляет сигнал, а проверяет, существует ли процесс с указанным PID и есть ли у вас разрешение на отправку ему сигнала.

kill -0 12445

Если команда выполняется успешно (код выхода 0), процесс существует. Если она завершается неудачей, процесс не существует или у вас нет разрешений.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Чтобы применить полученные знания, выполните эту практическую лабораторную работу для закрепления понимания управления процессами и их завершения:

  1. Управление и мониторинг процессов Linux — В этой лаборатории вы изучите основные навыки управления и мониторинга процессов в системе Linux. Вы узнаете, как взаимодействовать с процессами на переднем и заднем планах, просматривать их с помощью ps, отслеживать ресурсы с помощью top, изменять приоритет с помощью renice и завершать их с помощью kill.

Эта лаборатория поможет вам применить концепции управления процессами и их завершения в реальных сценариях и повысить уверенность в управлении процессами Linux.

Тест

Каково имя сигнала для команды `kill` по умолчанию? Пожалуйста, ответьте на английском языке. Обратите внимание, что ответ чувствителен к регистру.