Bash Linux + Git: от новичка до уверенного пользователяРабота с процессами и задачамиУправление процессами (jobs, ps, kill, nohup)

Управление процессами (jobs, ps, kill, nohup)

Уроки курсаУправление процессами (jobs, ps, kill, nohup)

Разбор команды kill

Что такое kill?

kill — это команда, которая отправляет сигналы процессам, идентифицируемым по их PID (Process ID). Хотя название "kill" ассоциируется с прекращением работы процесса, команда может отправлять и другие сигналы, позволяющие, например, корректно завершить процесс, приостановить его выполнение, обновить настройки или выполнить другие действия.

Основной синтаксис

kill [опции] PID...
  • PID — идентификатор процесса (или процессов), которым отправляется сигнал.
  • Если указывается несколько PID, kill отправит сигнал каждому из них.

Основные сигналы

  • SIGTERM (15):
    Стандартный сигнал завершения, который вежливо просит процесс завершиться. Это сигнал по умолчанию.

    kill 1234 # Отправляет SIGTERM процессу с PID 1234
  • SIGKILL (9):
    Безусловное завершение процесса, которое не позволяет процессу выполнить очистку или сохранить данные. Этот сигнал используется, когда процесс не отвечает на SIGTERM.

    kill -9 1234
  • SIGHUP (1):
    Часто используется для перезагрузки процесса, чтобы он перечитал конфигурационные файлы.

    kill -1 1234
  • SIGSTOP, SIGCONT:
    Позволяют приостанавливать и возобновлять выполнение процесса.

    kill -STOP 1234 # Приостанавливает процесс kill -CONT 1234 # Возобновляет процесс

Основные опции

  • -s сигнал или --signal сигнал:
    Позволяет явно указать отправляемый сигнал, например, kill -s SIGKILL 1234.

  • -l:
    Показывает список доступных сигналов.

    kill -l
  • -q:
    Некоторые реализации поддерживают тихий режим, но это менее распространённо.

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

Пример 1: Отправка сигнала SIGTERM (по умолчанию)

kill 1234

Эта команда отправляет сигнал SIGTERM процессу с PID 1234, предлагая ему завершиться корректно.

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

kill -9 1234

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

Пример 3: Отправка сигнала SIGHUP для перезагрузки процесса

kill -1 1234

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

Пример 4: Приостановка и возобновление процесса

kill -STOP 1234 # Приостановка процесса kill -CONT 1234 # Возобновление процесса

Полезные советы

  • Используйте SIGTERM по умолчанию:
    Прежде чем применять SIGKILL, рекомендуется сначала отправить SIGTERM, чтобы дать процессу шанс корректно завершиться.

  • Будьте осторожны с привилегиями:
    Для отправки сигналов процессам, запущенным другим пользователем, обычно требуются права суперпользователя (root).

  • Проверка PID:
    Убедитесь, что вы отправляете сигнал нужному процессу, используя команды типа ps, pgrep или top.

  • Список сигналов:
    Команда kill -l покажет все доступные сигналы и их номера, что полезно для быстрого справочника.