Надёжно перезаписывает файл: пишет во временный в том же каталоге →
fsync → атомарный rename → fsync каталога. Переживает внезапный ребут.#!/usr/bin/env bash
# write-atomic TARGET [SRC] — читает из SRC или stdin
set -Eeuo pipefail
[[ $# -ge 1 ]] || { echo "usage: write-atomic TARGET [SRC]"; exit 2; }
t="$1"; s="${2:-}"
dir="$(dirname -- "$t")"; base="$(basename -- "$t")"
tmp="$(mktemp -p "$dir" ".${base}.tmp.XXXXXX")"
cleanup(){ rm -f -- "$tmp"; }; trap cleanup EXIT INT TERM
# ввод из файла или stdin
if [[ -n "$s" ]]; then cat -- "$s" >"$tmp"; else cat >"$tmp"; fi
# права как у целевого (если был)
if [[ -e "$t" ]]; then
chown --reference="$t" "$tmp" 2>/dev/null || true
chmod --reference="$t" "$tmp" 2>/dev/null || chmod 0644 "$tmp"
else
chmod 0644 "$tmp"
fi
# fsync файла/каталога (python3→perl→sync)
fsync_path(){
if command -v python3 >/dev/null; then
python3 - "$1" <<'PY'
import os,sys; fd=os.open(sys.argv[1],os.O_RDONLY); os.fsync(fd); os.close(fd)
PY
elif command -v perl >/dev/null; then
perl -MPOSIX=fsync -e 'open(F,"<",$ARGV[0]) or exit 1; fsync(fileno(F)); close F;' "$1" || true
else sync; fi
}
fsync_path "$tmp"
mv -f -T -- "$tmp" "$t"
fsync_path "$dir"
trap - EXIT INT TERM
echo "$json" | write-atomic /etc/myapp/config.json
write-atomic /etc/app.conf ./new.conf
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
🚨 7 смертельных ошибок CLI, которые уничтожат твой Linux
Приветствую, коллега по скриптам!
Работа под
1.
2. Fork Bomb (
3.
4.
5.
6.
7. Использование R-утилит (
#Linux #CLI #Безопасность #Ошибки #Сисадмин
#linux
🐧 Linux Club ©
Приветствую, коллега по скриптам!
Работа под
root требует максимальной осторожности. Вот главные "самострелы", которые могут привести к краху системы:1.
rm -rf /: Безоговорочное уничтожение всей файловой системы.2. Fork Bomb (
:(){ :|:& };:): Бесконечное порождение процессов, исчерпывающее системные ресурсы.3.
dd: Неправильное указание if и of (вход/выход) уничтожит диск.4.
rm $VAR: Неэкранированная переменная может привести к стиранию лишнего.5.
.:$PATH: Добавление текущего каталога (.) создает лазейку для троянских программ.6.
chmod -R 777 /: Некорректная установка прав доступа на корневую файловую систему. Неправильное использование chmod -R (например, 555 или 777) на корневом каталоге (/) может разрушить файловую систему и сделать систему непригодной для использования.7. Использование R-утилит (
rlogin, rsh, rcp): Эти утилиты небезопасны и передают данные в открытом виде. Их следует удалить из системы и использовать ssh в качестве замены.#Linux #CLI #Безопасность #Ошибки #Сисадмин
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥2
Почему ping даёт один адрес, а приложение — другой? Ответ — в цепочке резолва: порядок источников, кто именно спрашивает DNS и где есть кэш.
glibc ищет имя по NSS (см. /etc/nsswitch.conf), обычно: files → dns → (опц.) mdns/ldap. Сначала /etc/hosts, потом DNS.resolv.conf задаёт nameserver и search. В системах с systemd-resolved это часто stub 127.0.0.53 и «сплит-DNS» по интерфейсам.systemd-resolved, nscd, dnsmasq, unbound или сам апп.getent hosts example.com # итог по NSS
grep '^hosts:' /etc/nsswitch.conf # порядок источников
readlink -f /etc/resolv.conf && cat /etc/resolv.conf
resolvectl status | sed -n '1,120p' # если есть systemd-resolved
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣11😎6❤1
Господи, да в чём проблема стать фронтендером?
Подписался на эти три канала:
👉 Фронтенд
👉 Верстка
👉 Node.JS
Заходишь каждый день, тратишь 15 минут и изучаешь актуальную информацию. Можешь сразу применять на практике. ВСЁ!
Это настолько просто, что даже твой кот справится. Подпишись сейчас, потом спасибо скажешь.
Подписался на эти три канала:
👉 Фронтенд
👉 Верстка
👉 Node.JS
Заходишь каждый день, тратишь 15 минут и изучаешь актуальную информацию. Можешь сразу применять на практике. ВСЁ!
Это настолько просто, что даже твой кот справится. Подпишись сейчас, потом спасибо скажешь.
👍3🤣3❤1🤓1
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
1 Bash - Введение
2 Bash - Базовые понятия и логические конструкции
3 Bash - Циклы
4 Bash Конструкция case
5 Bash Функции
6 Bash Специальные символы
7 Bash Поиск программы в PATH
8 Bash Проверка ввода: только буквы и цифры
9 Bash Нормализация дат
10 Bash - Удобное представление больших чисел
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤝2❤1
Forwarded from BashMaster
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3
Показываю, как превратить повторяющиеся задачи в самодостаточные скрипты и настроить их выполнение по расписанию через cron — с примерами, типичными ошибками и приёмами отладки.
#linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1