TGViewer
DevOps Ready | IT DevOps Ready | IT @devops_ready · 7.62K subscribers
Post #1202 1.06K
Почему временные файлы лучше создавать через mktemp?

В shell-скриптах часто нужен временный файл: сохранить вывод, собрать промежуточный конфиг или передать данные другой команде.

Плохой вариант выглядит так:
tmp="/tmp/app.log"
echo "data" > "$tmp"


Проблема в том, что такое имя может уже существовать. В худшем случае скрипт перезапишет чужой файл или начнёт работать с тем, что создал другой процесс.

Чуть лучше, но всё ещё не идеально:
tmp="/tmp/app-$$.log"


$$ добавляет PID процесса, но это не полноценная защита от гонок и предсказуемых имён.

Нормальный способ — mktemp:
tmp="$(mktemp)"


Команда создаёт уникальный файл и сразу возвращает путь к нему:
echo "data" > "$tmp"
cat "$tmp"


А чтобы временный файл точно удалился при выходе из скрипта, добавляют trap:
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT


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

➡️ DevOps Ready | #совет
  • 👍 9
  • ❤ 5
  • 🔥 4
More from @devops_ready
  1. Oct 2, 2026Знали, почему настройки systemd-сервиса лучше менять через systemctl edit? Допустим, прило…
  2. Oct 2, 2026⚡️5 фундаментальных курсов по ИБ по цене одного Это предложение для тех, кто готов войти в…
  3. Oct 2, 2026Этот инструмент поможет поять из чего на самом деле состоит Docker-образ! Он содержит терм…
  4. Oct 1, 2026Проверяем итоговую конфигурацию Docker Compose перед запуском! Когда проект использует баз…
  5. Oct 1, 2026🔄 Безопасный арсенал практических инструкций, курсов и инструментов 👩‍💻 Linux & Bash 🤔…
  6. Oct 1, 2026Шпаргалка по жизненному циклу Pod в Kubernetes! На картинке показано, как запрос проходит…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →