Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
Однако агрессивная дефрагментация может вызвать паузы в работе приложений из-за копирования страниц, поэтому в высоконагруженных системах её часто отключают или настраивают в режиме “madvise”, чтобы влияние на производительность было минимальным.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Поиск «тяжёлых» файлов: ncdu
На помощь приходит ncdu — интерактивный аналог du, который показывает размер каталогов и файлов в удобной древовидной структуре и позволяет управлять ими прямо из интерфейса.
Например, чтобы проверить логи:
Откроется текстовый интерфейс, где можно быстро сортировать файлы и папки по размеру, перемещать их или удалять.
Это помогает находить крупные логи, временные файлы и другие объекты, которые занимают место, без необходимости писать сложные скрипты.
Плюсы ncdu:
⏺ Видно, сколько реально занимает каждая папка.
⏺ Можно удалять или перемещать файлы прямо в интерфейсе.
⏺ Быстро ориентируетесь на серверах с ограниченным SSD.
⏺ Подходит для диагностики как пользовательских, так и системных директорий.
Когда на сервере заканчивается место, команды вроде du и ls -lh не всегда помогают быстро понять, что именно съедает дисковое пространство.
На помощь приходит ncdu — интерактивный аналог du, который показывает размер каталогов и файлов в удобной древовидной структуре и позволяет управлять ими прямо из интерфейса.
Например, чтобы проверить логи:
ncdu /var/log
Откроется текстовый интерфейс, где можно быстро сортировать файлы и папки по размеру, перемещать их или удалять.
Это помогает находить крупные логи, временные файлы и другие объекты, которые занимают место, без необходимости писать сложные скрипты.
Плюсы ncdu:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤6🔥1
Первый альфа-выпуск дистрибутива KDE Linux
Системные образы (~5 ГБ) работают в Live-режиме, основаны на Arch Linux, обновляются атомарно и поддерживают зашифрованные разделы для пользовательских данных.
Обновления идут на пассивный Btrfs-раздел с возможностью отката, а дополнительные приложения можно устанавливать через Flatpak, AppImage, Snap, Distrobox или Toolbox.
Альфа рассчитана на тестирование и контроль качества, поддерживает только UEFI, Wayland и новые GPU NVIDIA (Turing+).
Команда KDE представила первый альфа-выпуск дистрибутива KDE Linux.
Системные образы (~5 ГБ) работают в Live-режиме, основаны на Arch Linux, обновляются атомарно и поддерживают зашифрованные разделы для пользовательских данных.
Обновления идут на пассивный Btrfs-раздел с возможностью отката, а дополнительные приложения можно устанавливать через Flatpak, AppImage, Snap, Distrobox или Toolbox.
Альфа рассчитана на тестирование и контроль качества, поддерживает только UEFI, Wayland и новые GPU NVIDIA (Turing+).
В будущем появятся Stable и Enthusiast Edition с финальными и свежими релизами KDE Plasma.
❤9👍5🔥2👎1
Inotify и fsnotify для событий на файловой системе
Linux умеет уведомлять процессы о событиях на файловой системе.
С помощью inotify (и абстракции fsnotify в ядре) можно отслеживать создание, удаление, модификацию файлов и каталогов, что удобно для автоматизации.
Вместо регулярного опроса ls или find достаточно «подписаться» на события файловой системы — это экономит ресурсы и ускоряет реакцию.
Базовый пример с inotifywait (из пакета inotify-tools):
Что можно отслеживать:
• create — создание файла
• delete — удаление
• modify — изменение содержимого
• moved_to / moved_from — перемещение файлов в/из каталога
Linux умеет уведомлять процессы о событиях на файловой системе.
С помощью inotify (и абстракции fsnotify в ядре) можно отслеживать создание, удаление, модификацию файлов и каталогов, что удобно для автоматизации.
Пример применения: нужно запускать скрипт каждый раз, когда появляются новые логи или выгружается дамп БД.
Вместо регулярного опроса ls или find достаточно «подписаться» на события файловой системы — это экономит ресурсы и ускоряет реакцию.
Базовый пример с inotifywait (из пакета inotify-tools):
# следим за появлением новых файлов в каталоге /var/log/myapp
inotifywait -m /var/log/myapp -e create -e moved_to |
while read path action file; do
echo "Новый файл $file обнаружен в $path, запускаем скрипт..."
/usr/local/bin/process_new_log.sh "$path/$file"
done
Что можно отслеживать:
• create — создание файла
• delete — удаление
• modify — изменение содержимого
• moved_to / moved_from — перемещение файлов в/из каталога
❤10👍7
Быстрый поиск строк в логах: 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