mtr: traceroute и ping в одном инструменте

ping показывает, жив ли хост, traceroute — маршрут до него, но оба дают разовый снимок. mtr держит трассировку открытой непрерывно и на каждом хопе копит статистику потерь и задержки — сразу видно, где именно на маршруте начинаются проблемы. # интерактивный режим (обновление в реальном времени) mtr 8.8.8.8 # отчёт в текст, для логов/тикетов mtr --report -c 100 8.8.8.8 # только IPv4, без резолва имён (быстрее) mtr -4 -n 1.1.1.1 Полезно на перемежающихся проблемах “то работает, то нет”: обычный traceroute может попасть в момент, когда всё хорошо, а mtr за пару минут накопит статистику и покажет конкретный хоп с процентом потерь. ...

24 июля 2026 г. · llexa

netdata: мониторинг сервера за одну команду

Поднять Zabbix или связку Prometheus+Grafana ради разового взгляда на нагрузку сервера — избыточно. netdata ставится одной командой и сразу даёт веб-дашборд с сотнями метрик: CPU по ядрам, память, диски, сеть, процессы — всё с обновлением раз в секунду. # установка (собственный inline-скрипт, ставит как systemd-сервис) curl -Ss https://get.netdata.cloud/kickstart.sh | sh # дашборд доступен сразу # http://<server-ip>:19999 Из коробки — без настройки алертов, retention всего несколько часов и заметный расход CPU/RAM на самого агента при большом числе метрик. Для разовой диагностики “что жрёт сервер прямо сейчас” — быстрее, чем разворачивать полноценный стек. Для долгосрочной истории и алертинга на проде — всё равно Zabbix или Prometheus. ...

24 июля 2026 г. · llexa

siege и wrk: нагрузочное тестирование HTTP из терминала

Перед тем как отдавать сервис в прод, полезно прикинуть, сколько запросов в секунду он держит — без разворачивания JMeter или Gatling. siege и wrk — однобинарники, дают нагрузку из терминала за одну команду. # siege: 50 одновременных клиентов, 30 секунд siege -c 50 -t 30s http://localhost/ # wrk: 4 потока, 100 соединений, 30 секунд wrk -t4 -c100 -d30s http://localhost/ siege проще читается (concurrent users, availability, response time), wrk быстрее на высоких нагрузках за счёт своего event-loop на Lua-скриптах — можно писать кастомные сценарии запросов, не только GET на один URL. Для быстрой проверки “не упадёт ли nginx под пиковой нагрузкой” любой из двух хватает. ...

24 июля 2026 г. · llexa

age: современная замена gpg для шифрования файлов

gpg умеет всё — подписи, web-of-trust, keyserver’ы, десятки опций — но для простой задачи «зашифровать файл получателю» это избыточная сложность. age делает ровно одну вещь и без конфигов. age-keygen -o key.txt # Public key: age1qy... Шифрование по публичному ключу получателя, можно на нескольких сразу: age -r age1qy... -o secret.age file.txt age -r age1qy... -r age1zx... -o secret.age file.txt Расшифровка — своим приватным ключом: age -d -i key.txt secret.age > file.txt Если получателя нет и нужен просто пароль — симметричный режим без ключей вообще: ...

23 июля 2026 г. · llexa

nerdctl: docker-совместимый CLI поверх containerd

Если на сервере уже стоит containerd (например, как часть Kubernetes-ноды), ставить рядом полный Docker ради привычного CLI избыточно — nerdctl даёт те же команды, но работает прямо через containerd, без своего демона. nerdctl run -d -p 8080:80 nginx nerdctl ps nerdctl build -t myapp . docker-compose.yml тоже читается как есть: nerdctl compose up -d Отдельно стоит rootless-режим — контейнеры без root на хосте, без suid-бинарников и без выхода из namespace как единственной защиты: ...

23 июля 2026 г. · llexa

DBA на минималках #5: pg_stat_activity

pg_stat_activity — представление с одной строкой на каждое соединение к базе: кто подключён, что выполняет прямо сейчас и сколько это уже длится. SELECT pid, state, now() - query_start AS duration, query FROM pg_stat_activity WHERE state != 'idle' ORDER BY duration DESC; Колонка state — главное, на что смотреть: active — запрос реально выполняется; idle — соединение открыто, но ничего не делает; idle in transaction — самое опасное значение, транзакция открыта и висит, держит блокировки и мешает autovacuum чистить мёртвые строки. ...

22 июля 2026 г. · llexa

Современные ФС #6: ZFS — RAIDZ

Зеркало (mirror) — 50% полезного места на N дисков. raidz экономнее: чётность распределена по всем дискам, как в RAID5; raidz2 — двойная чётность, переживает потерю двух дисков разом (аналог RAID6). zpool create tank raidz sda sdb sdc zpool create tank raidz2 sda sdb sdc sdd Целостность проверяется не fsck, а scrub — ZFS перечитывает блоки, сверяет контрольные суммы и чинит найденное за счёт избыточности: zpool scrub tank zpool status tank # прогресс и найденные ошибки Замена упавшего диска — без остановки пула: ...

22 июля 2026 г. · llexa

bash regex: =~ и BASH_REMATCH без внешних утилит

Для простой проверки строки необязательно звать grep отдельным процессом — bash умеет regex сам, через =~ внутри [[ ]]. line="user=admin;role=superadmin" [[ $line =~ role=([a-z]+) ]] && echo "role: ${BASH_REMATCH[1]}" BASH_REMATCH[0] — всё совпадение целиком, [1], [2]… — группы в скобках по порядку открывающих (. Массив живёт до следующего =~. Синтаксис — extended regex (ERE), как grep -E, а не basic как обычный grep: группы без экранирования, +/?/{} работают напрямую. Для разовой проверки это быстрее fork/exec внешнего процесса, но для построчной обработки файла grep -P/awk всё равно удобнее. ...

21 июля 2026 г. · llexa

expect: автоматизация того, что просит ввести пароль вручную

Некоторые старые CLI-утилиты не берут пароль из stdin — только приглашением. expect скриптует диалог: ждёт паттерн в выводе и посылает ответ. #!/usr/bin/expect spawn passwd testuser expect "New password:" send "S3cur3Pass!\r" expect "Retype new password:" send "S3cur3Pass!\r" expect eof spawn запускает процесс, expect "паттерн" ждёт его в выводе (regex), send пишет в stdin, expect eof — дожидается завершения (без него скрипт выйдет раньше процесса). autoexpect записывает сессию как script, сразу генерируя .exp-файл — писать с нуля не обязательно. expect — крайняя мера для legacy без non-interactive режима; где есть --batch/-y, лучше они. ...

21 июля 2026 г. · llexa

ssh-agent, ssh-add и ed25519-ключи по-нормальному

ed25519 — современный формат ключей: короче RSA, быстрее считается, криптографически не хуже. Для новых ключей брать его. ssh-keygen -t ed25519 -C "user@host" -f ~/.ssh/id_ed25519 eval "$(ssh-agent -s)" # запустить агент ssh-add ~/.ssh/id_ed25519 # пароль спросит раз, потом ключ в памяти ssh-add -l # какие ключи сейчас в агенте На десктопе агент обычно уже поднят DE — ssh-add -l покажет, жив ли сокет. На сервере, откуда ходишь дальше (git, другие хосты), нужен ForwardAgent yes для конкретного хоста в ~/.ssh/config — глобально небезопасно: root на промежуточном хосте получит доступ к сокету. ...

21 июля 2026 г. · llexa