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

stat: метаданные файла без догадок

ls -l показывает права и размер, но часто нужно больше — номер inode, точное время в секундах с эпохи, или формат под парсинг в скрипте. Для этого в GNU coreutils есть stat. Голый вызов stat file.txt выдаёт сразу всё: inode, число хардлинков, права в символьном и восьмеричном виде (%a/%A), владельца и три времени. Разница между ними путает почти всех в первый раз: atime (%x/%X) — последнее чтение файла, mtime (%y/%Y) — последнее изменение содержимого, ctime (%z/%Z) — последнее изменение метаданных (прав, владельца, количества ссылок), и это не «creation time», как иногда думают по аналогии с Windows. ...

October 7, 2026 · llexa

iotop: кто жрёт диск прямо сейчас

iostat показывает суммарную загрузку диска по устройству, но не говорит, какой процесс в этом виноват. iotop закрывает этот пробел — тот же принцип, что у top, только вместо CPU и памяти в колонках дисковое чтение/запись по каждому процессу, обновляется вживую. Голый запуск заваливает список десятками процессов с нулевым I/O, которые просто существуют в системе. Флаг -o (--only) оставляет на экране только тех, кто реально что-то читает или пишет прямо сейчас: iotop -o По умолчанию iotop показывает мгновенную скорость за последний интервал — короткий всплеск активности легко проскочить между кадрами. Флаг -a (--accumulated) переключает на накопленный с момента запуска объём I/O, так проще поймать процесс, который написал гигабайты за пару секунд и затих: ...

October 5, 2026 · llexa

numactl: привязка процесса к своему NUMA-узлу

На двухсокетном сервере память физически разделена между процессорами: у каждого сокета свой контроллер и свой банк DRAM. Процесс на CPU первого сокета, чьи страницы памяти выделены рядом со вторым, платит лишней латентностью на каждое обращение — оно уходит через межпроцессорную шину вместо локальной. Это и есть NUMA (Non-Uniform Memory Access), и для баз данных или числодробилок разница заметна прямо в задержках запросов. Посмотреть топологию — сколько узлов видит система и какие у них расстояния друг от друга: ...

October 5, 2026 · llexa

Rust-утилиты #1: eza вместо ls

Новая серия — про утилиты, которые переписали классику GNU на Rust и где-то по пути добавили то, чего в оригинале никогда не было. Начинаем с самого используемого — ls. eza — форк давно заброшенного exa, который теперь живёт и развивается сам по себе. ...

October 4, 2026 · llexa

WSL 3.0: контейнеры Linux прямо в Windows

29 сентября Microsoft выпустил WSL 3.0 — первый по-настоящему мажорный апдейт Windows Subsystem for Linux с момента перехода на вторую версию. Под капотом — ядро Linux 6.18 вместо старой ветки, более быстрый старт, меньше потребления памяти и virtiofs для файлового обмена между Windows и Linux теперь по умолчанию, а не опцией для энтузиастов. Главная новая фича — WSL Containers (wslc). Запускать и гонять Linux-контейнеры теперь можно прямо из Windows, без Docker Desktop и без лишнего слоя виртуализации поверх уже виртуализированного WSL. После wsl --update бинарник wslc.exe сразу попадает в PATH, рядом добавляется алиас container.exe — для тех, кто уже набил руку на Docker-стиле команд. ...

October 4, 2026 · llexa

FUSE #6: mergerfs — объединяем несколько дисков в одну точку монтирования

RAID объединяет диски на уровне блоков — один упавший диск может утянуть за собой весь массив, в зависимости от уровня. mergerfs работает иначе: это FUSE-файловая система, которая просто логически сливает несколько независимых путей в одну точку монтирования, каждый диск остаётся отдельной файловой системой сам по себе. ...

October 2, 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

rsync: инкрементальные снапшоты через --link-dest

rsync копирует не файлы целиком, а дельты — при повторном запуске на тот же адресат передаёт по сети только изменившиеся блоки. Это база большинства скриптовых бэкапов, где pg_probackup/pgBackRest — оверкилл, а tar каждый день целиком — слишком дорого по месту и трафику. ...

October 1, 2026 · llexa

auditd: кто и что делал в системе

SELinux/AppArmor решают, что процессу можно, а что нельзя — auditd ничего не запрещает, он только записывает: кто, когда и какой файл открыл, какой syscall вызвал. Для разбора инцидента постфактум это то, чего не даст ни один MAC-модуль. ...

September 29, 2026 · llexa