Какие основные сигналы используются для управления процессами в Linux?

Ответ

Сигналы в Linux — это основной механизм для межпроцессного взаимодействия (IPC) и управления процессами. Каждый сигнал имеет свой номер и символьное имя. Вот ключевые из них:

  • SIGHUP (1) (Hang Up): Изначально использовался для оповещения о разрыве связи с терминалом. Сейчас часто используется для перезагрузки конфигурации демонов без их остановки.

  • SIGINT (2) (Interrupt): Сигнал прерывания, обычно отправляется нажатием Ctrl+C. Процесс может его перехватить и корректно завершить работу.

  • SIGKILL (9) (Kill): Безусловное, немедленное завершение процесса. Этот сигнал нельзя перехватить или проигнорировать, поэтому он является "последним средством".

  • SIGTERM (15) (Terminate): Стандартный сигнал для запроса завершения процесса. В отличие от SIGKILL, он может быть перехвачен программой для выполнения очистки (сохранение данных, закрытие файлов). Это "вежливый" способ остановить процесс.

  • SIGSTOP (19) (Stop): Приостанавливает выполнение процесса. Его, как и SIGKILL, нельзя перехватить.

  • SIGCONT (18) (Continue): Возобновляет работу процесса, ранее остановленного сигналом SIGSTOP.

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

# Найти PID процесса (например, my_app)
pid=$(pgrep my_app)

# Отправить сигнал на корректное завершение (по умолчанию SIGTERM)
kill $pid

# Если процесс не отвечает, отправить сигнал на безусловное завершение
kill -9 $pid
# или
kill -SIGKILL $pid