TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #286 1.3K
Симуляция транзакций в Bash

В bash нет настоящих транзакций. Но что, если тебе нужно выполнить серию изменений, и в случае ошибки все откатить обратно? Это возможно - через копии, trap, проверку ошибок и откат действий вручную.

▪️ Пример: изменение конфигов с возможностью отмены


#!/bin/bash
set -euo pipefail

CONFIG="/etc/myapp/config.conf"
BACKUP="/tmp/config.conf.bak.$RANDOM"

# Создаём резервную копию
cp "$CONFIG" "$BACKUP"

# Обработчик при ошибке
rollback() {
echo "Ошибка! Откатываем изменения..."
cp "$BACKUP" "$CONFIG"
echo "Конфиг восстановлен."
}
trap rollback ERR

echo "Обновляем конфиг..."
# Имитация изменения
echo "enable_feature=true" >> "$CONFIG"

# Имитация ошибки
false # или команда, которая может упасть

echo "Конфиг успешно обновлён"
rm "$BACKUP"


▪️ Объяснение:

📍 trap rollback ERR - ловит любую ошибку
📍 set -euo pipefail - строгий режим, ошибки не скрываются
📍 Копия - это наша "точка восстановления"
📍 После успешного выполнения - копия удаляется

▪️ Применение:

Обновление конфигов
Копирование и изменение сервисных файлов
Манипуляции с crontab, systemd, hosts, fstab
Авторазвертывание с откатом при сбое


Это простая, но классная техника: bash-транзакции как ручной аналог ACID.

BashTex 📱 #bash #utils
  • 👍 9
More from @bash_tex
  1. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  2. Oct 9, 2026BashTex 📱 #мем
  3. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  4. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  5. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  6. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
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 →