Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Bash: Linux signals, process management, SIGTERM, SIGKILL, SIGINT

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

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

Короткий ответ

Сигналы в Linux — это асинхронные уведомления процессу о событиях. Основные сигналы: SIGTERM (15) — запрос на завершение, SIGKILL (9) — принудительное завершение, SIGINT (2) — прерывание с клавиатуры (Ctrl+C), SIGSTOP (19) — остановка процесса, SIGCONT (18) — продолжение. Каждый сигнал имеет номер и действие по умолчанию.

Длинный ответ

Что такое сигналы в Linux?

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

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

  • SIGTERM (15) — запрос на завершение процесса. Процесс может обработать сигнал и выполнить очистку.
  • SIGKILL (9) — принудительное завершение. Не может быть перехвачен или проигнорирован.
  • SIGINT (2) — прерывание с клавиатуры (Ctrl+C). Обычно завершает процесс.
  • SIGSTOP (19) — остановка процесса. Не может быть перехвачен.
  • SIGCONT (18) — продолжение остановленного процесса.
  • SIGUSR1 (10) и SIGUSR2 (12) — пользовательские сигналы для кастомной обработки.

Пример отправки сигнала

# Отправить SIGTERM процессу с PID 1234
kill 1234

# Отправить SIGKILL
kill -9 1234

# Отправить SIGUSR1
kill -USR1 1234

Обработка сигналов в коде

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void handler(int sig) {
    printf("Получен сигнал %d\n", sig);
}

int main() {
    signal(SIGINT, handler); // Перехват Ctrl+C
    while(1) {
        sleep(1);
    }
    return 0;
}

В этом примере программа перехватывает SIGINT и выводит сообщение, не завершаясь.

Вывод

Знание сигналов необходимо для управления процессами, написания надёжных демонов и отладки. Используйте SIGTERM для вежливого завершения, SIGKILL — только в крайних случаях.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Bash

    Bash

  • Linux

    Linux

Ключевые слова

#Linux signals

#process management

#SIGTERM

#SIGKILL

#SIGINT

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.