Функция trap в Bash для безопасного завершения

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

bashtrapshell-scripting

ℹ️ Часто в Bash-скриптах возникает необходимость корректно завершить процесс при получении сигналов (например, SIGINT при нажатии Ctrl+C). Это особенно полезно при управлении ресурсами или временными файлами, которые необходимо очистить перед выходом. Для этого можно использовать функцию trap.

#!/bin/bash

# Создаем временный файл
temp_file=$(mktemp)

# Определяем действия при завершении (очистка)
trap "rm -f $temp_file; echo 'Временный файл удалён'; exit" SIGINT SIGTERM

# Основной код скрипта
while true; do
    echo "Работаем с $temp_file..."
    sleep 5
done

ℹ️ В этом примере при получении сигналов SIGINT или SIGTERM временный файл будет автоматически удалён, а скрипт завершится корректно.

✳️ Этот приём полезен при создании сложных Bash-скриптов, особенно когда важно управление временными файлами или ресурсами.

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

🧭 @recura_tech

Скриншот терминала с примером Bash-скрипта: показано использование trap, создание временного файла через mktemp и его удаление при сигналах.
Пример кода: trap + mktemp — удаление временного файла при SIGINT/SIGTERM.

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