Быстрый поиск строк в логах: ripgrep
Когда на сервере гигабайты логов, а надо срочно найти конкретную ошибку, стандартный grep начинает тормозить.
Он оптимизирован под большие объёмы данных и работает в разы быстрее.
Пример для поиска ошибок во всех логах:
По умолчанию он рекурсивно обходит каталоги и выводит совпадения с путём к файлу и номером строки.
Если нужен контекст вокруг найденной строки:
Так выводятся три строки до и после совпадения — удобно при анализе логов PostgreSQL, Nginx или системных журналов.
⏺ ripgrep поддерживает регулярные выражения, можно искать сразу несколько шаблонов и фильтровать файлы по расширениям. Например:
Вывод ограничится только SQL-логами.
Когда на сервере гигабайты логов, а надо срочно найти конкретную ошибку, стандартный grep начинает тормозить.
Здесь помогает ripgrep (rg) — современный инструмент поиска по тексту.
Он оптимизирован под большие объёмы данных и работает в разы быстрее.
Пример для поиска ошибок во всех логах:
rg "ERROR" /var/log
По умолчанию он рекурсивно обходит каталоги и выводит совпадения с путём к файлу и номером строки.
Если нужен контекст вокруг найденной строки:
rg -C 3 "FATAL" /var/log/postgresql
Так выводятся три строки до и после совпадения — удобно при анализе логов PostgreSQL, Nginx или системных журналов.
rg -t sql "SELECT.*FROM" /var/log
Вывод ограничится только SQL-логами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥7👍1
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
При fork дочерний процесс получает копию страниц памяти родительского, но фактически обе копии указывают на одни и те же физические адреса. Только если один из процессов пытается записать в память, ядро создает новую копию изменяемой страницы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4
BGP PIC (Prefix Independent Convergence)
При падении primary hop трафик мгновенно переключается без полной перерасчётки маршрутов. Обычно обычный BGP failover занимает секунды, с PIC — миллисекунды.
Применяется в WAN и датацентрах с критическим SLA, ECMP-сценариях, L3VPN/EVPN.
Виды:
⏺ Core (по префиксу) — precomputed backup next-hop в FIB, переключение мгновенное.
⏺ Edge (по соседу) — резерв на уровне BGP-соседа, удобно для PE/CE.
Настройка на Cisco IOS-XR:
Juniper JunOS:
Для проверки failover включают BFD, пингуют primary hop и отключают линк. С BGP PIC потеря пакетов минимальна, трафик идёт на backup сразу.
⚡️ Особенности: резервный next-hop должен быть в FIB, потребляет RAM/CPU для precompute, на больших таблицах BGP может потребоваться tuning.
BGP PIC ускоряет failover, предустанавливая резервный next-hop.
При падении primary hop трафик мгновенно переключается без полной перерасчётки маршрутов. Обычно обычный BGP failover занимает секунды, с PIC — миллисекунды.
Применяется в WAN и датацентрах с критическим SLA, ECMP-сценариях, L3VPN/EVPN.
Виды:
Настройка на Cisco IOS-XR:
router bgp 65001
address-family ipv4 unicast
bgp bestpath pic
network 10.0.0.0 mask 255.255.255.0
Juniper JunOS:
protocols {
bgp {
group IBGP {
type internal;
local-address 192.168.0.1;
family inet { unicast; }
pic;
}
}
}
Для проверки failover включают BFD, пингуют primary hop и отключают линк. С BGP PIC потеря пакетов минимальна, трафик идёт на backup сразу.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥3💯2
Cron не запускает скрипт. Вручную работает. Причина?
Anonymous Quiz
30%
Скрипт без shebang
26%
Неправильный cron
42%
Нет прав root
2%
Плохой swap
🤡19🤣7❤4
Инкрементальные бэкапы с tar
Помимо привычных архивов, tar умеет делать инкрементальные бэкапы через ключ --listed-incremental.
Он хранит «снимок» метаданных файлов и при следующем запуске берёт только изменения.
Пример:
👉 snapshot.file — база, где хранится информация о прошлых бэкапах. Если её удалить, то следующий архив будет снова полным.
Плюсы:
➕ экономия места (в архив попадают только изменившиеся файлы);
➕ встроено в стандартный tar, не нужны отдельные утилиты;
➕ можно комбинировать с cron и хранением на удалённом сервере.
Подходит для небольших серверов, dev-сред и домашних каталогов, где не нужна тяжёлая система бэкапов, но важна скорость и простота.
Помимо привычных архивов, tar умеет делать инкрементальные бэкапы через ключ --listed-incremental.
Он хранит «снимок» метаданных файлов и при следующем запуске берёт только изменения.
Пример:
# первый полный бэкап
tar --listed-incremental=/var/backups/snapshot.file \
-czf full-backup.tar.gz /home
# инкрементальный
tar --listed-incremental=/var/backups/snapshot.file \
-czf incr-backup.tar.gz /home
Плюсы:
Подходит для небольших серверов, dev-сред и домашних каталогов, где не нужна тяжёлая система бэкапов, но важна скорость и простота.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥9👍4
Рейтинг языков программирования TIOBE за сентябрь 2025: Python растёт, Perl возвращается
Авторы TIOBE опубликовали свежий рейтинг. Топ-8 остался без изменений (1. Python, 2. C++, 3. C, 4. Java, 5. C#, 6. JavaScript, 7. Visual Basic, 8. Go).
Рост Perl связывают с огромным количеством книг на Amazon и его уникальными возможностями работы с текстом: регулярные выражения, богатая библиотека CPAN, поддержка Unicode.
Хотя Perl 6 (ныне Raku) так и не взлетел, Perl 5 продолжает обновляться и привлекает внимание.
Эксперты отмечают, что текстовые форматы (XML, JSON, YAML, Markdown, логи) остаются ключевыми даже в эпоху ИИ, и Perl здесь по-прежнему один из лучших инструментов.
Авторы TIOBE опубликовали свежий рейтинг. Топ-8 остался без изменений (1. Python, 2. C++, 3. C, 4. Java, 5. C#, 6. JavaScript, 7. Visual Basic, 8. Go).
Perl уступил 9-е место Delphi/Object Pascal, но при этом удержался в десятке — год назад он был на 27-м месте.
Рост Perl связывают с огромным количеством книг на Amazon и его уникальными возможностями работы с текстом: регулярные выражения, богатая библиотека CPAN, поддержка Unicode.
Хотя Perl 6 (ныне Raku) так и не взлетел, Perl 5 продолжает обновляться и привлекает внимание.
Эксперты отмечают, что текстовые форматы (XML, JSON, YAML, Markdown, логи) остаются ключевыми даже в эпоху ИИ, и Perl здесь по-прежнему один из лучших инструментов.
❤5🔥2
etckeeper: контроль версий для /etc
Проблема в том, что правки накапливаются хаотично - руками, апдейтами пакетов, скриптами. В итоге, когда «вдруг перестало работать», непонятно кто и когда изменил конфиг.
⏺ etckeeper решает задачу просто: сохраняет /etc в Git (или другом VCS). Получаем историю изменений, удобный diff и возможность быстро откатить.
Установка (Debian/Ubuntu):
После этого можно работать как с обычным репозиторием:
Фишка — etckeeper интегрируется с apt и yum: перед обновлением пакетов он автоматически делает commit.
Можно добавить git remote и пушить историю в отдельный репозиторий (например, на приватный GitLab или в backup).
Это удобно для серверов, где нужно отслеживать конфиги централизованно.
Каталог /etc — сердце системы: здесь лежат конфиги сервисов, сетевые настройки, права доступа.
Проблема в том, что правки накапливаются хаотично - руками, апдейтами пакетов, скриптами. В итоге, когда «вдруг перестало работать», непонятно кто и когда изменил конфиг.
Установка (Debian/Ubuntu):
sudo apt install etckeeper git
sudo etckeeper init
sudo etckeeper commit "init"
После этого можно работать как с обычным репозиторием:
sudo git status /etc
sudo git diff /etc/ssh/sshd_config
sudo git log /etc
Фишка — etckeeper интегрируется с apt и yum: перед обновлением пакетов он автоматически делает commit.
Можно добавить git remote и пушить историю в отдельный репозиторий (например, на приватный GitLab или в backup).
Это удобно для серверов, где нужно отслеживать конфиги централизованно.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍8
fstrim: освобождение места на SSD
SSD не всегда «понимает», что файлы были удалены — блоки могут оставаться помеченными как занятые.
Команда fstrim помогает сообщить диску, какие блоки можно реально очистить.
Проверка вручную:
Выведет, сколько байт освободилось на корневом разделе.
Чтобы не делать это руками, есть встроенный systemd-таймер. Достаточно один раз включить:
Теперь очистка будет выполняться автоматически раз в неделю.
Это безопасный и простой способ поддерживать SSD в нормальной форме без лишних ухищрений.
SSD не всегда «понимает», что файлы были удалены — блоки могут оставаться помеченными как занятые.
Из-за этого диск со временем теряет скорость записи.
Команда fstrim помогает сообщить диску, какие блоки можно реально очистить.
Проверка вручную:
sudo fstrim -v /
Выведет, сколько байт освободилось на корневом разделе.
Чтобы не делать это руками, есть встроенный systemd-таймер. Достаточно один раз включить:
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
Теперь очистка будет выполняться автоматически раз в неделю.
Это безопасный и простой способ поддерживать SSD в нормальной форме без лишних ухищрений.
👍19❤4
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
SoftIRQ используется, например, в сетевом стеке (обработка пакетов), планировщике задач и таймерах. Он позволяет разгрузить обработчики прерываний, обеспечивая баланс между низкими задержками и производительностью.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3
lsns: кто держит namespace?
В обычной работе это не видно, но как только в системе появляются контейнеры, systemd-изоляторы или «подозрительные» процессы, namespaces становятся критически важны для отладки.
Инструмент lsns позволяет быстро посмотреть, какие процессы «сидят» в каких пространствах имён.
Простейший запуск:
На выходе будет таблица: PID, тип namespace, время создания и т.д.
Это помогает понять, например, кто держит лишний mount namespace или почему сетевой стек не совпадает с основным.
Можно фильтровать по типу:
Покажет все сетевые namespaces — полезно для диагностики контейнеров.
А если нужно конкретно узнать, кто держит PID namespace:
Linux активно использует namespaces — они изолируют процессы по сетям, PID, пользователям, монтам и прочим ресурсам.
В обычной работе это не видно, но как только в системе появляются контейнеры, systemd-изоляторы или «подозрительные» процессы, namespaces становятся критически важны для отладки.
Инструмент lsns позволяет быстро посмотреть, какие процессы «сидят» в каких пространствах имён.
Простейший запуск:
lsns
На выходе будет таблица: PID, тип namespace, время создания и т.д.
Это помогает понять, например, кто держит лишний mount namespace или почему сетевой стек не совпадает с основным.
Можно фильтровать по типу:
lsns -t net
Покажет все сетевые namespaces — полезно для диагностики контейнеров.
А если нужно конкретно узнать, кто держит PID namespace:
lsns -t pid
👍9❤7
Anonymous Quiz
11%
Каждое воскресенье в 2 ночи
78%
Каждый день в 2 ночи
7%
Каждую минуту в 2 ночи
4%
Каждый час
😁12🤪6👍5❤3
Swap-файл vs swap-раздел: как влияет на SSD и работу в системах с малым ОЗУ
На слабых серверах и миниатюрных VPS наличие подкачки решает всё. Даже базовая установка apt без swap может закончиться «убийством» процессов через OOM-killer.
Что выбрать — swap-файл или swap-раздел?
Swap-раздел исторически считался более «надёжным» вариантом: он выделяется на физическом уровне и не фрагментируется. Но в реальности:
⏺ менять его размер сложно (особенно без LVM);
⏺ требует переформатирования или изменения разметки;
⏺ неудобен в облаках и на VPS.
Swap-файл — более гибкий и удобный. Особенно если:
⏺ вы работаете на облаке с единственным диском;
⏺ у вас ограниченное место;
⏺ нужно быстро изменить размер или выключить swap.
На современных ядрах swap-файл работает почти так же эффективно, как и раздел, особенно если создать его правильно.
Как правильно создать swap-файл
Не используйте dd — он может создать фрагментированный файл:
Вместо этого:
В fstab:
Дополнительные улучшения: zswap и zram
Чтобы продлить срок службы SSD и ускорить работу на слабых системах:
Zswap — сжатая подкачка в RAM. Включается одной командой:
Zram — компрессированный swap в памяти. Особенно эффективен на embedded и ARM-устройствах:
Настройка поведения подкачки
Чтобы система не бросалась в swap при любой нагрузке:
10–20 — хороший баланс: сначала используется RAM, и только потом swap.
На слабых серверах и миниатюрных VPS наличие подкачки решает всё. Даже базовая установка apt без swap может закончиться «убийством» процессов через OOM-killer.
Но что выбрать: swap-файл или swap-раздел? И главное — как сделать, чтобы не угробить SSD и не словить тормоза?
Что выбрать — swap-файл или swap-раздел?
Swap-раздел исторически считался более «надёжным» вариантом: он выделяется на физическом уровне и не фрагментируется. Но в реальности:
Swap-файл — более гибкий и удобный. Особенно если:
На современных ядрах swap-файл работает почти так же эффективно, как и раздел, особенно если создать его правильно.
Как правильно создать swap-файл
Не используйте dd — он может создать фрагментированный файл:
# Плохо:
dd if=/dev/zero of=/swapfile bs=1M count=1024
Вместо этого:
# Хорошо:
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
В fstab:
/swapfile none swap sw 0 0
Дополнительные улучшения: zswap и zram
Чтобы продлить срок службы SSD и ускорить работу на слабых системах:
Zswap — сжатая подкачка в RAM. Включается одной командой:
echo 1 > /sys/module/zswap/parameters/enabled
Zram — компрессированный swap в памяти. Особенно эффективен на embedded и ARM-устройствах:
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 512M > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
Настройка поведения подкачки
Чтобы система не бросалась в swap при любой нагрузке:
sysctl vm.swappiness=10
10–20 — хороший баланс: сначала используется RAM, и только потом swap.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤8👍2
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
Система управляет writeback через параметры vm.dirty_ratio и vm.dirty_background_ratio, а также через демоны pdflush или flush. Правильная настройка writeback снижает задержки при записи, предотвращает перегрузку диска и балансирует использование оперативной памяти и I/O.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍8
capsh и Linux capabilities
В Linux root-аккаунт обладает полным набором прав, но далеко не всегда это нужно. Capabilities позволяют «разрезать» привилегии на части и выдавать только нужные.
Например, чтобы процесс слушал порты ниже 1024, достаточно capability CAP_NET_BIND_SERVICE. Полный root здесь избыточен.
Проверка текущих прав:
Запуск процесса только с нужной capability:
⚡️ Так можно запускать сервисы безопаснее, следуя принципу «минимально необходимых прав». Это актуально и для контейнеров, и для демонов в продакшене.
В Linux root-аккаунт обладает полным набором прав, но далеко не всегда это нужно. Capabilities позволяют «разрезать» привилегии на части и выдавать только нужные.
Это снижает риски: сервис не сможет сделать ничего лишнего, даже если его взломают.
Например, чтобы процесс слушал порты ниже 1024, достаточно capability CAP_NET_BIND_SERVICE. Полный root здесь избыточен.
Проверка текущих прав:
capsh --print
Запуск процесса только с нужной capability:
capsh --drop=all --add=cap_net_bind_service -- -c "./server"
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍9
This media is not supported in your browser
VIEW IN TELEGRAM
Внутри 20+ модулей: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой).
Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами.
После прохождения вы получите сертификат, который можно добавить в резюме.
Есть бесплатные демо-уроки для ознакомления. В ближайшие 48ч курс доступен со скидкой 20% по промокоду «
ADMGUIDES
»: открыть курс на StepikPlease open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥1
Multikernel: несколько ядер Linux на одном хосте
Проект Multikernel позволяет запускать на одной машине сразу несколько независимых экземпляров ядра Linux — без гипервизора и накладных расходов виртуализации.
Каждый экземпляр ядра получает прямой доступ к CPU и ресурсам, изоляция выше, чем у контейнеров, а производительность близка к «железу».
⏺ Запуск через улучшенный kexec, управление и отладка — через /proc/multikernel.
⏺ Для обмена сообщениями используется собственный IPI-фреймворк.
⏺ Поддерживается динамическое выделение ресурсов и изоляция отказов.
Проект Multikernel позволяет запускать на одной машине сразу несколько независимых экземпляров ядра Linux — без гипервизора и накладных расходов виртуализации.
Каждый экземпляр ядра получает прямой доступ к CPU и ресурсам, изоляция выше, чем у контейнеров, а производительность близка к «железу».
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥1
Один канал для решения трёх задач: сделать систему эффективной, стабильной и безопасной.
Без воды, только практика:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1
Профилирование CPU с perf и Flamegraph
Они показывают только процессы, но не дают понимания, что именно внутри процесса грузит CPU.
Здесь на помощь приходит perf и Flamegraph.
perf — запись стека вызовов
Для начала нужно установить perf (apt install linux-tools-common linux-tools-$(uname -r) на Debian/Ubuntu).
Простейший пример:
⏺ -F 99 — частота выборки 99 Гц
⏺ -a — профилируем все CPU
⏺ -g — сохраняем стеки вызовов
⏺ -- sleep 10 — профилируем 10 секунд
После этого создаётся файл perf.data, содержащий информацию о нагрузке CPU.
perf script + Flamegraph — визуализация горячих функций
Flamegraph позволяет видеть «горячие» участки кода:
⏺ stackcollapse-perf.pl — склеивает одинаковые стеки
⏺ flamegraph.pl — генерирует интерактивный SVG
Открыв out.svg в браузере, можно увидеть, какие функции съедают процессорное время. Чем выше «полоса», тем дольше выполняется функция.
Когда сервер «тормозит» или высокая загрузка CPU не очевидна, стандартных инструментов вроде top часто недостаточно.
Они показывают только процессы, но не дают понимания, что именно внутри процесса грузит CPU.
Здесь на помощь приходит perf и Flamegraph.
perf — запись стека вызовов
Для начала нужно установить perf (apt install linux-tools-common linux-tools-$(uname -r) на Debian/Ubuntu).
Простейший пример:
sudo perf record -F 99 -a -g -- sleep 10
После этого создаётся файл perf.data, содержащий информацию о нагрузке CPU.
perf script + Flamegraph — визуализация горячих функций
Flamegraph позволяет видеть «горячие» участки кода:
perf script | stackcollapse-perf.pl | flamegraph.pl > out.svg
Открыв out.svg в браузере, можно увидеть, какие функции съедают процессорное время. Чем выше «полоса», тем дольше выполняется функция.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍4