gdb: отладка бинарников без пересборки с логами

Когда сервис падает, а логов недостаточно, следующий шаг — gdb. Не обязательно быть C-разработчиком: базовых команд хватает, чтобы вытащить стек вызовов и переменные на момент краха. gdb -p $(pgrep myapp) # подключиться к живому процессу gdb --args ./myapp --config prod.conf (gdb) bt # backtrace — стек вызовов (gdb) info locals # переменные текущего фрейма (gdb) frame 2 # переключиться на фрейм (gdb) print my_var (gdb) continue Для уже случившегося краха без живого процесса — gdb ./myapp core.12345: bt покажет строку и стек на момент сигнала. Без -g при сборке символов нет, bt покажет только адреса — но иногда и этого хватает понять, в какой библиотеке крах. ...

27 июля 2026 г. · llexa

ldd, ldconfig и LD_PRELOAD: динамическая линковка в Linux

Динамически слинкованный бинарник не содержит код библиотек внутри — при запуске загрузчик находит .so-файлы по путям из кэша. ldd, ldconfig и LD_PRELOAD управляют этим процессом, пригождаются при error while loading shared libraries. # какие .so нужны бинарнику и откуда они реально берутся ldd /usr/bin/nginx # обновить кэш путей после установки новой библиотеки в нестандартный путь ldconfig ldconfig -p | grep libssl # проверить, что библиотека в кэше # подменить библиотеку на лету, без пересборки бинарника LD_PRELOAD=/opt/libs/libfake.so ./app LD_PRELOAD удобен для отладки и быстрых хаков без правки исходников, но тем же механизмом пользуются руткиты — лишняя строка в выводе ldd повод проверить /etc/ld.so.preload. ...

27 июля 2026 г. · llexa

Proxmox #7: vzdump из командной строки

Веб-интерфейс Proxmox прячет vzdump за формой с чекбоксами, но это обычная CLI-утилита — дёргается из cron без похода в GUI. Режимы snapshot/suspend/stop по-разному балансируют простой VM и консистентность данных. # snapshot — VM не останавливается, бэкап через ZFS/LVM snapshot vzdump 101 --mode snapshot --storage local --compress zstd # suspend — короткая пауза VM на момент снятия снапшота vzdump 102 --mode suspend --mailto admin@example.com # несколько VM разом, с ограничением по bandwidth vzdump 101 102 103 --bwlimit 50000 --storage nfs-backup Восстановление — разные команды по типу гостя: qmrestore backup.vma.zst 101 --storage local для VM, pct restore 101 backup.tar.zst --storage local для контейнеров. ...

27 июля 2026 г. · llexa

Ubuntu 20 лет врал через /etc/debian_version

Заходишь на Ubuntu-сервер, cat /etc/debian_version — а там версия Debian Sid, из которой когда-то собрали пакеты. К реальной версии Ubuntu это не имеет отношения вообще, но файл честно живёт в системе и вводит в заблуждение любой скрипт, который наивно на него полагается. Баг завели в 2005 году. Двадцать с лишним лет community-мудрость одна: “не читай этот файл, читай /etc/os-release” — а сам файл никто не трогал, потому что а вдруг что-то сломается. Самый живучий баг — не тот, который не могут воспроизвести, а тот, который воспроизводит каждый, все знают, что он есть, и никто не убирает десятилетиями. ...

26 июля 2026 г. · llexa

Будь добрее #9 - Миллиардер, который умер, раздав всё

Чак Фини заработал состояние на сети магазинов беспошлинной торговли Duty Free Shoppers. В 1982 году он тайно передал почти всё своё состояние в благотворительный фонд Atlantic Philanthropies — и на 15 лет это оставалось секретом даже для деловых партнёров. Фонд требовал от получателей грантов не называть имя донора. Фини летал эконом-классом, носил дешёвые часы, не имел ни дома, ни машины — при том что через фонд раздал больше 8 миллиардов долларов на больницы, университеты и программы по борьбе с бедностью. ...

26 июля 2026 г. · llexa

certbot: автоматизация TLS-сертификатов Let's Encrypt

Платный wildcard-сертификат или возня с CSR — избыточны для большинства сайтов. certbot сам получает сертификат Let’s Encrypt, вписывает его в конфиг nginx и настраивает автопродление: сертификаты живут 90 дней, продление обязано быть автоматическим. # выпуск + автонастройка nginx для домена sudo certbot certonly --nginx -d example.com -d www.example.com # автопродление настроено? (обычно systemd timer) systemctl list-timers | grep certbot # сухой прогон продления, без реального обновления sudo certbot renew --dry-run --nginx сам находит нужный server-блок. --standalone — если nginx ещё не поднят. renew --dry-run раз в квартал стоит гонять руками — чтобы не узнать о сломанном автопродлении в момент истечения сертификата. ...

25 июля 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 — без него бэкапы не восстановить, хранить его нужно отдельно. Дедупликация на уровне блоков: повторный бэкап после мелких правок в большом файле занимает не весь объём, а только изменённые куски. ...

25 июля 2026 г. · llexa

swapfile в Linux: своп без переразметки диска

Своп-раздел готовится заранее, при разметке диска. Забыли — на живой системе без LVM его так просто не добавить. swapfile проще: обычный файл на смонтированной ФС, без переразметки, без остановки сервисов. # файл на 4G (fallocate быстрее dd, но не работает на всех ФС — тогда dd if=/dev/zero) fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # постоянно — строка в /etc/fstab echo '/swapfile none swap sw 0 0' >> /etc/fstab # swappiness пониже для сервера с достаточным объёмом RAM — не уходить в своп раньше времени sysctl vm.swappiness=10 chmod 600 до mkswap — иначе любой локальный юзер прочитает файл свопа, а там может быть что угодно из памяти, вплоть до кусков секретов. На btrfs так не сработает: нужен chattr +C, отключение CoW, или отдельный раздел. ...

25 июля 2026 г. · llexa

Афоризмы Мёрфи #7: Пятое следствие

Продолжаем разбирать классику Артура Блоха. После четвёртого следствия (“предоставленные сами себе, события идут от плохого к худшему”) — пятое: «Природа всегда на стороне скрытого дефекта» Мониторинг настроен, тесты зелёные, чек-лист перед релизом пройден — и всё равно падает именно то, что никто не проверял, потому что не считал нужным. Alertmanager покрывает известные сценарии отказа; тот единственный edge case, который сломает прод в три часа ночи, по определению не в списке — иначе его бы уже поймали на review. ...

25 июля 2026 г. · llexa

П*хуй: русский мат как сжатие промпта эффективнее Caveman-режима

Для Claude Code есть skill’ы вроде Caveman — экономят токены, выкидывая артикли и служебные слова. Автор репозитория pohuy предлагает другой подход: русский мат — генеративная морфология, четыре корня плюс приставки и суффиксы дают больше смысла на слово, чем экономия артиклей. Одно «на*бнулось» — это “the service has unexpectedly crashed and requires investigation”, но сразу понятно. Что внутри: Словарь на 70+ идиом с инженерным маппингом (SKILL.md + references/slovar.md), часть — из народного словаря russian-swears (417 статей). Эталонные сцены в references/sceny.md: ревью гвнокода, флаки-тест, дока врёт, признание своего проба. Железные правила: код, коммиты, PR и доки — чисто, без мата. На security-предупреждениях и DROP TABLE — без шуток. https://github.com/smixs/pohuy ...

25 июля 2026 г. · llexa