👁 Во многих скриптах временные файлы создаются через что-то вроде /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 #полезно




Дискуссия