Использование trap для обработки сигналов в Bash

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashtrapsigint

👁 Когда пишешь скрипты для администрирования или автоматизации, часто бывает полезно ловить сигналы системы (например, когда нужно завершить процесс или очистить ресурсы перед выходом). Bash предоставляет для этого встроенную команду trap, которая позволяет обработать сигналы, такие как SIGINT (Ctrl+C) или SIGTERM (завершение процесса).

📝 Пример кода:

#!/bin/bash

# Функция для очистки ресурсов
cleanup() {
    echo "Очистка ресурсов перед завершением..."
    # Здесь может быть код для очистки файлов, остановки сервисов и т.д.
}

# Ловим сигналы SIGINT (Ctrl+C) и SIGTERM (kill)
trap cleanup SIGINT SIGTERM

# Основной процесс
echo "Запуск долгого процесса..."
sleep 60  # Симуляция долгой работы

echo "Процесс завершен"

📌 Как это работает:

  • В этом скрипте используется команда trap, чтобы отловить сигналы SIGINT и SIGTERM
  • Когда скрипт получает сигнал, например, если пользователь нажимает Ctrl+C или процесс убивается через команду kill, выполняется функция cleanup
  • Внутри функции cleanup можно прописать код для очистки файлов, завершения процессов или других необходимых действий перед выходом

❗️ Особенно полезно для долгих или критичных задач, когда нужно гарантировать, что они завершатся корректно, даже если скрипт был прерван.

tags: #bash #linux #полезно

❤️ @recura_tech

Скриншот тёмного терминала с примером bash-скрипта RECURA: видна функция cleanup и команда trap для SIGINT и SIGTERM.
Пример скрипта с cleanup и trap для обработки сигналов в Bash.

Читайте так же