Ответ
Сигналы в 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