Подготавливаем новую версию файла отдельно, не трогая рабочий:
cp --preserve=mode,ownership config.conf config.conf.new
Редактируем её как угодно, ошибки здесь никому не мешают:
vim config.conf.new
Заменяем файл одной атомарной операцией:
mv config.conf.new config.conf
В Linux имя файла - это запись каталога, указывающая на inode.
mv (rename) атомарно меняет эту запись, процесс либо видит старую версию файла, либо уже новую, без промежуточного состояния.🔥 Атомарность гарантирована только внутри одного файлового раздела.
mv между разными FS - это копирование и удаление.🚪 Linux Ready | #совет
