Надёжная обработка временных файлов в Bash без мусора

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

bashmktemptrap

👁 Во многих скриптах временные файлы создаются через что-то вроде /tmp/file.tmp. Это плохая практика: можно словить race condition, конфликт имён или оставить мусор после падения скрипта. В прод-скриптах правильнее использовать mktemp и автоматическую очистку через trap.

📝 Безопасное создание временного файла

mktemp создаёт уникальный файл и сразу открывает его без риска пересечения с другими процессами. Так Bash гарантирует уникальное имя файла и отсутствие конфликтов даже при параллельных запусках скрипта.

tmpfile=$(mktemp)

echo "processing data..." > "$tmpfile"
cat "$tmpfile"

📝 Автоматическая очистка временных файлов через trap

Чтобы временные файлы не оставались после падения скрипта, можно повесить очистку на сигнал завершения. Так файл удалится автоматически при любом завершении скрипта — нормальном или аварийном.

tmpfile=$(mktemp)

cleanup() {
  rm -f "$tmpfile"
}

trap cleanup EXIT

echo "temporary data" > "$tmpfile"
cat "$tmpfile"

📝 Использование временной директории для сложных пайплайнов

Если скрипт создаёт несколько файлов, лучше использовать временную директорию.

tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT

echo "data1" > "$tmpdir/file1"
echo "data2" > "$tmpdir/file2"

Это изолирует временные данные и упрощает их очистку.

❗️ mktemp и trap — это базовая гигиена прод-скриптов. Без них Bash-скрипты со временем превращают /tmp в свалку и могут словить неприятные race condition.

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

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот в тёмной теме: пример кода Bash с использованием mktemp и trap, показаны tmpfile, cleanup и tmpdir, заметен логотип RECURA и хэндл @recura_tech.
Пример кода: создание tmpfile через mktemp, очистка через trap и использование tmpdir для нескольких файлов.

Дискуссия

wannacry
сколько прод скриптов до сих пор пишут в /tmp руками и потом удивляются почему там помойка
Присоединиться к обсуждению →

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