fuser: не смотреть, а убить

lsof хорош, когда нужно посмотреть, кто держит файл — вывод списком, дальше сам решаешь, что делать. fuser делает тот же поиск, но заточен сразу под действие: если устройство не размонтируется из-за “device is busy”, fuser не просто покажет PID, а по ключу тут же его прибьёт. # кто держит файл или точку монтирования — с подробностями fuser -v /mnt/data # то же самое, но по всей файловой системе fuser -vm /mnt/data # убить все процессы, держащие /mnt/data (SIGKILL по умолчанию) fuser -k /mnt/data # убить мягко, с подтверждением на каждый процесс fuser -ki -TERM /mnt/data -v добавляет колонки USER, PID, ACCESS, COMMAND вместо голого списка PID — без него fuser выводит почти нечитаемую строку из одних номеров. -k шлёт SIGKILL, если не указано иное через -SIGNAL (например -HUP или -TERM), а -i заставляет спрашивать подтверждение перед каждым убийством — полезная страховка, когда файловую систему делят несколько процессов и часть из них лучше не трогать. ...

October 7, 2026 · llexa

nginx: ограничение числа соединений через limit_conn

limit_req режет частоту запросов в секунду, а limit_conn в nginx решает другую задачу — ограничивает, сколько соединений с одного ключа (обычно IP) может быть открыто одновременно. Это разные лимиты, и путать их не стоит: клиент может укладываться в лимит запросов в секунду и всё равно держать десятки параллельных закачек с одного адреса. http { limit_conn_zone $binary_remote_addr zone=addr:10m; server { location /download/ { limit_conn addr 1; } } } Здесь на один IP разрешено одно одновременное соединение с /download/ — типичный кейс для раздачи файлов, где важно не количество запросов в секунду, а то, сколько параллельных закачек тянет один клиент. При превышении лимита nginx по умолчанию отвечает 503, код меняется через limit_conn_status. ...

October 6, 2026 · llexa

Обзор новинок #12: релизы конца сентября

Новые релизы за последние пару недель — снова терминальный/devops-стек. GitHub CLI — официальный CLI для GitHub (gh pr create, gh issue view и так далее из терминала, без похода в браузер). В 2.101.0 сменился подписывающий PGP-ключ APT/RPM-репозиториев. Если ставили gh из официальных репозиториев до 8 апреля 2026 и с тех пор не обновляли keyring — установка/обновление пакета сломается, нужно вручную обновить ключ по инструкции из релиза zellij — терминальный мультиплексор (альтернатива tmux/screen) с плитками и вкладками из коробки. В v0.45.1 детект вложенной сессии теперь работает поверх SSH без проброса переменных окружения, плюс опция scroll_mode_sync false — отключить недавно добавленное поведение, когда скролл мышью в pane сам включает scroll-режим https://github.com/zellij-org/zellij/releases uv — менеджер пакетов и окружений Python от Astral (авторы ruff), в разы быстрее pip/poetry за счёт кэша и параллельной установки. В 0.12.19 добавлены сборки PyPy 3.11.16 и 3.12.14, ленивые импорты в build-hook’ах для CPython 3.15+ (пока под preview-флагом) https://github.com/astral-sh/uv/releases gum — набор готовых TUI-виджетов (выбор из списка, спиннер, подтверждение) для использования прямо из bash-скриптов, без написания своего интерфейса на Python/Go. В v2.0.2 фикс утечки сырых ANSI-последовательностей в вывод из-за бага в Bubbletea v2, вылезал даже у программ без ввода https://github.com/charmbracelet/gum/releases GDB — стандартный отладчик для C/C++/Rust и много чего ещё в мире Linux, bt/break/watch из коробки на любом дистрибутиве. В 18.1 — все типы теперь попадают в секцию .gdb_index (раньше GDB иногда не мог найти тип, полагаясь на индекс, — существующие индексы стоит перегенерировать), новая аннотация “shadowed” в info locals для переменных, затенённых другими с тем же именем, и флаг --no-escape-args — передать аргументы отлаживаемой программе без экранирования спецсимволов шелла https://sourceware.org/gdb/news/ #linux #sysadmin #releases ...

October 2, 2026 · llexa

chrony: синхронизация времени без ntpd

chrony вытеснил классический ntpd почти везде — RHEL/CentOS/Fedora, Debian/Ubuntu ставят его по умолчанию. Причина простая: chrony быстрее сходится к точному времени после старта или после долгого простоя (ноутбук с гибернацией, VM после паузы) и лучше держит точность на нестабильном сетевом соединении, где ntpd начинает “гулять”. ...

September 29, 2026 · llexa

Обзор новинок #11: релизы за 1–19 сентября

Новые релизы за пару недель — что важно для терминала и продакшена. tmux 3.8-rc — кандидат на новую мажорную версию https://github.com/tmux/tmux/releases atuin 18.22.0 — сохранение вывода команд на диск, redaction секретов https://github.com/atuinsh/atuin/releases fzf 0.74.4 — неблокирующий режим для редакторов, фиксы escape-последовательностей https://github.com/junegunn/fzf/releases lazygit v0.65.1 — фикс задержки на Escape, чинит миграцию конфига в daemon-режиме https://github.com/jesseduffield/lazygit/releases yazi v26.9.1 — Sixel-превью в 9 раз быстрее (Wu’s Color Quantizer вместо нейросети) https://github.com/sxyazi/yazi/releases #linux #sysadmin #releases

September 25, 2026 · llexa

Обзор новинок #9: релизы за 5–12 сентября

Новые релизы за неделю — что важно для сервера и терминала. syncthing v2.1.5 — поддержка HTTP/HTTPS-прокси с CONNECT https://github.com/syncthing/syncthing/releases/tag/v2.1.5 uptime-kuma 2.5.4 — новые провайдеры уведомлений, SFTP-монитор https://github.com/louislam/uptime-kuma/releases/tag/2.5.4 io_uring — крупные патчи производительности от Jens Axboe https://www.phoronix.com/news/Linux-IO-uring-Crazy-Friday mold — линкер переписывают на Rust, цель — стать линкером по умолчанию https://www.phoronix.com/news/Mold-Linker-In-Rust-Coming skim v5.7.0 — фаззи-поиск в терминале, обновление https://github.com/skim-rs/skim/releases/tag/v5.7.0 #linux #sysadmin #releases

September 18, 2026 · llexa

Обзор новинок #8: 27 августа — 3 сентября

Новые релизы за неделю — только то, что важно для сервера. vscode 1.136.0 nginx 1.31.5 — control API, predicate locations, ngx_http-модуль grafana v12.4.10 homepage v2.2.0 doggo v1.4.0 — bind резолверы к исходному адресу через -b keycloak 26.7.3 — фикс CVE-2026-35563 в LDAP-клиенте sing-box v1.14.0 loki v3.6.16 — флаг игнорировать пропавшие чанки при удалении логов immich v3.2.0-rc.0 bottom 0.14.9 — опция показывать нулевой сетевой трафик при старте #linux #sysadmin #releases

September 4, 2026 · llexa

Proxmox #8: pvesr — репликация VM между нодами без shared storage

Shared storage (Ceph, NFS, iSCSI) — не всегда вариант, не каждая инсталляция тянет отдельный кластер хранения. pvesr реплицирует VM между нодами ZFS-снапшотами по расписанию — дешёвая замена shared storage для не самых критичных нагрузок. pvesr create-local-job 100-0 pve2 --schedule '*/15' # реплика VM 100 на pve2 каждые 15 минут pvesr status # последний снапшот, задержка pvesr disable 100-0 # остановить job, не удаляя Разница с HA-кластером на shared storage — окно потери данных равно интервалу репликации: упала нода между снапшотами — потеряны изменения за этот промежуток. pvesr не переключает нагрузку сам, после сбоя старт на целевой ноде — qm start 100 вручную. ...

August 3, 2026 · llexa

Vim с нуля #7: quickfix и ctags — навигация без LSP

LSP в vim — это coc.nvim и полноценный language server на каждый язык, но для быстрой навигации по проекту часто хватает связки попроще: quickfix list и ctags работают в любом окружении, без установки сервера. :grep -r "pattern" . заполняет quickfix через внешний grep; :copen открывает список, :cn / :cp — прыжок по совпадениям :make гоняет компилятор или линтер (задаётся через makeprg), ошибки попадают туда же ctags -R . строит файл тегов по всему проекту; Ctrl-] на имени функции — переход к определению, Ctrl-t — назад по стеку :tselect — если тег неоднозначен (несколько функций с одним именем), выбор вручную из списка #vim #linux ...

August 1, 2026 · llexa

restic: бэкапы с дедупликацией и шифрованием из коробки

borg дедуплицирует бэкапы, но требует SSH-доступа к хранилищу или локального пути. restic — та же дедупликация и шифрование, но из коробки говорит с S3, Backblaze B2, SFTP и локальным диском, без отдельного backup-сервера. # инициализация репозитория (тот же синтаксис для S3/SFTP) restic init --repo /mnt/backup/restic-repo # бэкап директории restic -r /mnt/backup/restic-repo backup /etc /var/lib/postgresql/data # снапшоты и восстановление restic -r /mnt/backup/restic-repo snapshots restic -r /mnt/backup/restic-repo restore latest --target /tmp/restore Пароль репозитория задаётся при init — без него бэкапы не восстановить, хранить его нужно отдельно. Дедупликация на уровне блоков: повторный бэкап после мелких правок в большом файле занимает не весь объём, а только изменённые куски. ...

July 25, 2026 · llexa