udev: почему флешка каждый раз /dev/sdb, и как это исправить

Имя /dev/sdb — не гарантия: порядок инициализации USB-дисков при следующей загрузке может измениться. udev привязывает своё имя к устройству по атрибутам, а не по порядку обнаружения. udevadm info -a -n /dev/sdb # атрибуты устройства udevadm monitor # события подключения в реальном времени # /etc/udev/rules.d/99-backup-disk.rules SUBSYSTEM=="block", ATTRS{serial}=="WD-WCC4E1234567", SYMLINK+="backup-disk", OWNER="backup" Правило матчится по ATTRS{serial} и создаёт ссылку /dev/backup-disk на нужный диск — тот же принцип, что у /dev/disk/by-uuid/. udevadm control --reload-rules udevadm trigger --attr-match=subsystem=block # применить без переподключения #linux #systemd

3 сентября 2026 г. · llexa

systemd-nspawn: контейнер без Docker за одну команду

Когда нужен один изолированный Linux, а поднимать Docker ради этого избыточно — есть systemd-nspawn, встроенный в systemd, без демона и без отдельного рантайма. debootstrap bookworm /var/lib/machines/mybox # подготовить rootfs systemd-nspawn -D /var/lib/machines/mybox --network-veth -b # запустить как систему (boot) machinectl list # список запущенных контейнеров machinectl shell mybox # зайти внутрь machinectl poweroff mybox -b запускает полноценный init внутри, а не одну команду — контейнер ведёт себя как отдельная машина. --network-veth поднимает veth-пару с NAT на хосте, без него контейнер живёт в сетевом namespace хоста. Для постоянных контейнеров — machinectl enable mybox, автозапуск через systemd. ...

30 июля 2026 г. · llexa

logger и systemd-cat: пишем в journald из bash

Скрипт, пишущий статус в свой файл в /var/log/, — ещё одна точка для ротации и мониторинга. logger шлёт сообщение прямо в syslog/journald, под общую ротацию и journalctl. logger -t backup-script -p user.err "disk full" # тег + приоритет journalctl -t backup-script # только свои сообщения systemd-cat оборачивает целую команду — её stdout/stderr: systemd-cat -t rsync-job rsync -av /data /backup/ journalctl -t rsync-job --since "10 min ago" Из cron: job.sh 2>&1 | logger -t rsync-job — результат ищется одной командой, без grep по файлам в /var/log/. Приоритет (err, warning) фильтрует по важности и вешает алерты на ошибки, не трогая шум. ...

20 июля 2026 г. · llexa

cgroups v2: лимиты CPU и RAM на сервис

systemd-cgls показывает дерево cgroup — какие процессы в каком слайсе сидят, без похода в /sys/fs/cgroup/ руками. systemd-cgls systemd-cgtop Лимит для конкретного сервиса ставится одной командой, без правки unit-файла: systemctl set-property nginx.service CPUQuota=50% MemoryMax=512M Изменения применяются сразу и переживают перезапуск сервиса — systemd пишет их в /etc/systemd/system.control/. Текущие значения видны прямо в файловой системе cgroup: cat /sys/fs/cgroup/system.slice/nginx.service/cpu.max cat /sys/fs/cgroup/system.slice/nginx.service/memory.max Если сервис выходит за MemoryMax — ядро убивает его через OOM killer внутри cgroup, не трогая остальную систему. ...

22 июня 2026 г. · llexa