bash history: не только стрелка вверх

История bash хранит не просто список команд — в ней есть подстановки для быстрого повтора и редактирования без перепечатывания. sudo !! # повторить прошлую команду с sudo vim !$ # последний аргумент прошлой команды !apt # последняя команда, начинающаяся с apt ^old^new # заменить old на new в прошлой команде и выполнить Ctrl+R — обратный поиск по истории, повторное нажатие листает совпадения дальше. HISTCONTROL=ignoredups:erasedups в .bashrc убирает дубли и повторы подряд. HISTTIMEFORMAT="%F %T " добавляет метки времени в history. history -d N удаляет конкретную строку, если туда случайно попал пароль. ...

7 июля 2026 г. · llexa

heredoc и herestring в bash

heredoc (<<) подставляет блок текста как stdin команде — без склеивания строк через \n и без экранирования кавычек. cat <<EOF > /etc/nginx/conf.d/app.conf server { listen 80; server_name app.local; } EOF Herestring (<<<) — то же самое, но для одной строки: grep "error" <<< "$log_line" Если EOF в кавычках (<<'EOF') — переменные внутри блока не подставляются, текст передаётся как есть. Без кавычек — $var и `cmd` раскрываются. <<-EOF убирает ведущие табы, что позволяет делать отступы внутри if/function без искажения вывода. ...

7 июля 2026 г. · llexa

tmux-workbench: ws — менеджер сессий с индексом по всем серверам

tmux-workbench (команда ws) — TUI на Rust для управления tmux-сессиями не только локально, но и на удалённых серверах через SSH, с индексом в SQLite вместо разбора вывода tmux list-sessions на лету. ws scan # проиндексировать сессии ws attach prod/api # подключиться к сессии на сервере ws list --server prod --status active Для каждой сессии хранится: сервер, директория, git-ветка и статус (dirty, ahead/behind), наличие CLAUDE.md/AGENTS.md. Фильтры в TUI: server:prod tag:backend git:dirty. Стек: Rust + ratatui + rusqlite, установка через cargo install или install.sh. ...

7 июля 2026 г. · llexa

ufw: firewall без боли с iptables

ufw (Uncomplicated Firewall) генерирует правила iptables/nft из простых команд — не нужно помнить синтаксис цепочек и таблиц ради базовой защиты сервера. ufw allow 22/tcp # разрешить SSH ufw allow from 10.0.0.0/8 # доверенная подсеть — все порты ufw deny 23 # заблокировать telnet явно ufw enable # включить firewall ufw status verbose # список правил с номерами Правила применяются по порядку — ufw status numbered показывает номера для ufw delete <N>. По умолчанию политика deny incoming, allow outgoing — открывать нужно только то, что реально слушает. Логи: /var/log/ufw.log, включаются через ufw logging on. Не забыть открыть SSH до ufw enable, иначе отвалится текущая сессия. ...

7 июля 2026 г. · llexa

flock: защита cron-задач от наложения

flock захватывает файловую блокировку перед запуском команды. Если блокировка занята — ждёт или выходит сразу. flock -n /var/lock/backup.lock /usr/local/bin/backup.sh В crontab: */5 * * * * flock -n /tmp/sync.lock /usr/local/bin/sync.sh С -n — не ждать, выйти с кодом 1, если занято. Без -n — ждать освобождения. Файл блокировки создаётся автоматически. Блокировка снимается при завершении процесса — зависший lock не застрянет навсегда. Комбо: flock -w 10 — ждать максимум 10 секунд. #linux #bash #cron #sysadmin

6 июля 2026 г. · llexa

ulimit и лимиты ресурсов процессов

ulimit управляет лимитами ресурсов для процессов текущей оболочки и её потомков. ulimit -a # все лимиты текущей сессии ulimit -n 65535 # открытые файлы (до следующего логаута) ulimit -u 4096 # максимум процессов пользователя Постоянно — через /etc/security/limits.conf: nginx soft nofile 65535 nginx hard nofile 65535 В systemd-сервисах лимиты limits.conf не применяются — нужен LimitNOFILE=65535 в секции [Service]. Проверить текущие лимиты процесса: cat /proc/<pid>/limits. #linux #sysadmin #bash #systemd

6 июля 2026 г. · llexa

vmstat: мониторинг памяти и активности ядра

vmstat выводит снапшот состояния системы: очередь процессов, память, своп, блочный IO, прерывания, нагрузку CPU. vmstat 1 5 # 5 замеров раз в секунду vmstat -s # сводка памяти одной колонкой vmstat -d # активность дисков vmstat -SM 1 # память в МБ Ключевые поля: r — в очереди CPU, b — ждут IO, swpd — своп использован, bi/bo — блоков прочитано/записано, wa — %CPU в ожидании диска. Если wa > 20% — узкое место в дисковой подсистеме. Если r > числа ядер — CPU перегружен. ...

6 июля 2026 г. · llexa

Будь добрее #6 - Маленькие добрые дела в цифровом мире

Доброта в цифровом мире выглядит не как громкий жест — а как одно простое действие, которое занимает меньше минуты. 5 микродействий: Нашёл статью, которая реально помогла — скинь в рабочий чат. Ты сэкономишь вечер кому-то ещё. А ещё скинь шортс или рилс — пусть коллеги улыбнутся. Поставь звёздочку на GitHub. Автор видит статистику и ждёт звезду. Напиши «решено» в закрытом issue. Следующий, кто наткнётся на ту же проблему, скажет тебе спасибо. Не тегай всех без причины. Уважение к вниманию коллег — это тоже забота. Даже если не уходишь из проекта — веди документацию. Это подарок тебе в том числе. Одно действие в день не меняет мир — но меняет чей-то день. ...

5 июля 2026 г. · llexa

Стадии принятия чужого кода

Код-ревью проходит пять стадий. Это написано неплохо Это написано странно Это написано плохо Кто вообще это написал? git blame → ты сам, полтора года назад Архив не врёт. #юмор #git #codereview #sysadmin

5 июля 2026 г. · llexa

dmesg: читаем сообщения ядра правильно

dmesg хранит кольцевой буфер сообщений ядра Linux — именно сюда падают первые признаки проблем с железом: ошибки SATA, срабатывание OOM killer, USB-отключения, kernel panic. По умолчанию вывод идёт без временных меток и без фильтрации — несколько флагов делают его удобным инструментом диагностики. dmesg -T # человекочитаемое время вместо секунд с буткапа dmesg -T -l err,crit # только ошибки и критические события dmesg --follow # следить в реальном времени (как tail -f) dmesg --human # цвет + читаемое время + единицы измерения dmesg -T | grep -i "usb\|nvme\|ata" # поиск по устройству Если ядро OOM-killнуло процесс — это здесь, с именем и PID. Если диск начал сыпать I/O error или ata: SRST failed — тоже здесь, часто за несколько часов до отказа. ...

4 июля 2026 г. · llexa