LinuxCamp | DevOps
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C
نمایش بیشتر📈 تحلیل کانال تلگرام LinuxCamp | DevOps
کانال LinuxCamp | DevOps (@linuxcamp_tg) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 13 963 مشترک است و جایگاه 9 152 را در دسته فناوری و برنامهها و رتبه 47 191 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 13 963 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 05 ژوئیه, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -98 و در ۲۴ ساعت گذشته برابر -2 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 26.20% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 10.85% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 3 659 بازدید دریافت میکند. در اولین روز معمولاً 1 516 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 23 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند linuxcamp, ядро, linux, диск, docker تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование.
Админ (реклама): @XoDefender
Чат: @linuxcamp_chat
Менеджер: @Spiral_Yuri
Биржа: https://telega.in/c/linuxcamp_tg
РКН: https://clck.ru/3RWA3C”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 06 ژوئیه, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
sudo apt install bottom
После установки утилита запускается командой btm.
Как работает
При запуске btm открывает интерактивный интерфейс с несколькими блоками: CPU, память, swap, диск, сеть, список процессов. Блоки можно скрывать, менять их порядок и переключать режимы отображения с клавиатуры, без редактирования конфигов.
btm
Для серверов и Docker-хостов полезен режим с упором на процессы и нагрузку, где видно PID, пользователя, потребление CPU и памяти в реальном времени.
btm -b
Все настройки сохраняются в конфигурационном файле, который можно использовать одинаково на разных машинах.
Вывод
bottom - это интерактивный мониторинг системы в терминале с расширенной визуализацией и настройкой интерфейса. Подходит для личного пользования и постоянного контроля ресурсов без GUI-инструментов.
LinuxCamp | #utils
sudo apt install hyperfine
После установки команда hyperfine доступна без дополнительной настройки.
Базовое использование
Простейший случай это замер одной команды. hyperfine сам выполнит несколько прогонов и выведет агрегированную статистику.
hyperfine "ls -R /usr/share >/dev/null"
Чаще всего утилиту используют для сравнения нескольких вариантов одной и той же операции, например разных реализаций или флагов.
hyperfine "grep -R foo ." "rg foo ."
В этом режиме вывод сразу показывает разницу по времени и разброс значений, что удобно для принятия технических решений.
Вывод
hyperfine предназначен для воспроизводимых замеров производительности команд. Подходит для сравнения CLI-утилит, флагов запуска, скриптов и небольших изменений в пайплайнах, где важно видеть реальные цифры, а не разовый запуск через time.
LinuxCamp | #utils
sudo apt install duf
После установки команда duf становится доступна глобально.
Основные режимы работы
Запуск без параметров показывает все примонтированные файловые системы, включая tmpfs, loop-устройства, overlay и сетевые маунты. Это удобно для анализа систем с контейнерами и снапами.
duf
Для вывода только локальных дисков используется отдельный режим, который исключает временные и виртуальные файловые системы.
duf --only local
Дополнительно duf умеет сортировать вывод, скрывать псевдо-файловые системы и работать одинаково в интерактивных и скриптовых сценариях.
Вывод
duf - это современная замена df с тем же назначением и расширенным форматом вывода. Подходит для рабочих станций и серверов, особенно в окружениях с большим количеством примонтированных файловых систем.
LinuxCamp | #utils«У Linux-десктопа 4% рыночной доли» «А значит, оставшиеся 96% пользователей привыкли к средам, где… вставки по среднему клику не существует». — один из участников команды.Вообще, мысли на счет того, что нужно быть похожими на винду - верные. Но, как по мне, это имеет вес на более глобальном функционале, а не на способе вставки текста... LinuxCamp | #news
ExecStartPre=
ExecStart=
ExecStartPost=
Важно: если ExecStartPre вернёт non-zero, то сервис не запустится вообще.
Самая частая ловушка
Pre-хук выглядит безопасным, но падает:
ExecStartPre=/usr/bin/curl http://127.0.0.1:9000/health
Если сервис на 9000 ещё не поднят, curl вернёт код ошибки, systemd считает, что сервис сломан, и даже не дойдёт до ExecStart. Pre-хук выполняется каждый раз при старте, включая рестарты. Любая временная проблема: сеть, DNS, файл, env превращается в стоппер сервиса. В логах:
journalctl -u myservice
ExecStartPre failed with exit code 7
Типичные ошибки:
ExecStartPre=/bin/mkdir /var/run/app
ExecStartPre=/usr/bin/test -f /config/app.yml
ExecStartPre=/usr/bin/psql -c "select 1"
Для post-хуков помни, если ExecStartPost падает, значит сервис уже запущен, но unit помечается как failed.
Практическое правило
ExecStartPre - только для быстрых, гарантированных операций (создать каталог, выставить права, подготовить env). Все, что зависит от сети, БД, других сервисов лучше выносить в код сервиса.
Вывод
ExecStartPre - это точка отказа, если одна команда упала, то сервис не стартует. Если хук может упасть либо гаси ошибку, либо убирай его совсем.
LinuxCamp | #utils
ss -tan | grep TIME-WAIT | wc -l
Проблемой это становится только тогда, когда новые соединения перестают создаваться. Обычно происходит, когда закончились ephemeral ports. Это временные клиентские порты, которые ядро автоматически выделяет для исходящих соединений. Их диапазон можно посмотреть здесь:
cat /proc/sys/net/ipv4/ip_local_port_range
Если диапазон узкий и соединения короткие, порты быстро оказываются заняты TIME_WAIT.
Почему их становится много
Короткие HTTP-соединения, отсутствие keep-alive, прокси, балансировщики, высокая RPS, микросервисы, healthchecks - все это создает тысячи короткоживущих TCP-сессий. В этом сценарии большое количество TIME_WAIT признак нагрузки, а не поломки.
Что делать безопасно
Обычно ничего. Если упираешься в лимиты, расширяют диапазон ephemeral ports и разрешают повторное использование TIME_WAIT для клиентов:
sysctl -w net.ipv4.ip_local_port_range="10240 65535"
sysctl -w net.ipv4.tcp_tw_reuse=1
Главное решение все равно на уровне приложения: keep-alive, connection pool, HTTP/2.
Вывод
TIME_WAIT - это нормальное состояние TCP. Пока есть свободные ephemeral ports, система работает корректно. Если они заканчиваются, то масштабируй диапазон портов и соединения, а не пытайся лечить TCP.
LinuxCamp | #utilsps aux | grep "команда запуска вашего контейнера", но если контейнеров запущенной одной и той же командой на хосте много, то лучше воспользоваться CLI вашего рантайма (типа crictl) для опредленя PID'а нужного контейнера.
2. Заходим в сетевой неймспейс этого процесса через команду nsenter -n -t $PID, где -n значит network.
Всё. Можете проверить, что вы там, где нужно, введя команду ip a.
Это очень полезный метод, когда вам либо самим нужно что-то проверить, либо когда нужно доказательство клиенту, что с трафиком из контейнера 100% всё порядке.
Между инцидентами
Реклама. Давыдов И.А. ИНН 775108336633. erid: 2W5zFGaTMax
dmesg | grep conntrack
типичный вывод:
nf_conntrack: table full, dropping packet
Проверяем текущее состояние
# сколько соединений сейчас
cat /proc/sys/net/netfilter/nf_conntrack_count
# максимальный лимит
cat /proc/sys/net/netfilter/nf_conntrack_max
Если count ≈ max, то ты уже в зоне риска.
Временное решение
Увеличить лимит на лету:
sysctl -w net.netfilter.nf_conntrack_max=262144
Постоянная настройка
В /etc/sysctl.conf или /etc/sysctl.d/conntrack.conf:
net.netfilter.nf_conntrack_max=262144
net.netfilter.nf_conntrack_tcp_timeout_established=600
И применить:
sysctl -p
Вывод
Переполненный conntrack выглядит как непонятная поломка сети. Проверка занимает 10 секунд, но лучше заранее заняться настройкой правильного лимита.
LinuxCamp | #utils
[Service]
Restart=always
Почему это выглядит удобно
Сервис упал, systemd быстро поднял. Никаких алертов, все типо работает. Именно здесь начинается проблема.
Типичный плохой сценарий
Сервис падает сразу после старта.
Restart=always
RestartSec=1
В итоге:
start → crash → restart → crash → restart
CPU жрётся, логи летят, система шумит, а причина падения маскируется. Посмотреть это легко:
systemctl status myservice
journalctl -u myservice
Когда Restart=always реально зло
Если сервис падает из-за: ошибки конфигурации, отсутствия зависимостей, недоступной сети, битых env-переменных. В этих случаях рестарт ничего не чинит, а только мешает диагностике.
Более безопасная альтернатива
Для большинства сервисов лучше:
Restart=on-failure
RestartSec=5
systemd перезапустит сервис при краше, но не будет вечно крутить его при нормальном выходе.
Контроль перезапусков
Чтобы не получить restart loop:
StartLimitIntervalSec=60
StartLimitBurst=5
После 5 падений за минуту systemd остановит сервис.
Когда Restart=always оправдан
Очень простые демоны, воркеры без состояния, sidecar-сервисы, сервисы, где падение = всегда ошибка. Даже там обычно добавляют лимиты.
Вывод
Restart=always - не защита, а автоповтор ошибки. Если сервис может падать из-за конфигурации или окружения используй on-failure и лимиты. Автоперезапуск должен помогать системе, а не скрывать проблемы.
LinuxCamp | #utils
[Service]
Type=notify
WatchdogSec=30
Это значит, что сервис обязан раз в 30 секунд подтверждать, что он работает. Сервис пингует systemd через sd_notify. Простейший пример (bash):
while true; do
systemd-notify WATCHDOG=1
sleep 10
done
Если systemd-notify перестаёт вызываться watchdog срабатывает. При зависании, даже если процесс жив, но зациклился, завис на I/O, ушёл в deadlock, перестал обрабатывать события systemd считает сервис мёртвым и делает:
Watchdog timeout, restarting service
Проверка, что watchdog активен
systemctl show myservice | grep Watchdog
И в логах:
journalctl -u myservice | grep watchdog
Частая ошибка
Type=simple
WatchdogSec=30
Не сработает. Watchdog требует Type=notify, иначе systemd не ждёт сигналов.
Вывод
systemd watchdog можно использовать как защита от зависаний, а не падений. Если сервис может застыть, но не упасть, то watchdog лучше включить watchdog.
LinuxCamp | #utils
ps aux | grep Z
# или
ps -eo pid,ppid,stat,cmd | grep Z
Статус Z или Z+.
Откуда они берутся
Процесс завершился, родитель не вызвал wait() или waitpid(). Часто это баги в демонах, скриптах, самописных сервисах, иногда кривые fork-циклы.
Кто чистит зомби
Зомби может удалить только родительский процесс. Если родитель умер, зомби автоматически переподвешивается к init / systemd, и он его корректно дочищает. То есть сам зомби убить нельзя, у него уже нет кода выполнения.
Как диагностировать причину
Смотрим родителя зомби:
ps -eo pid,ppid,stat,cmd | grep Z
Если PPID не 1, значит родитель жив и неправильно обрабатывает завершение детей.
Что с этим делать
Убивать нужно родителя, а не зомби. После перезапуска или фикса родительского процесса зомби исчезнут автоматически.
Вывод
Zombie - это не утечка памяти, а утечка внимания со стороны родителя. Если зомби накапливаются - это всегда баг в коде или в управлении процессами, а не проблема ядра.
LinuxCamp | #utils
grep Slab /proc/meminfo
Детализация по кэшам:
slabtopЗдесь видно, какие структуры ядра занимают память: dentry, inode, kmalloc-*, sock, buffer_head и т.д. Почему появляется соблазн чистить кэш При высокой файловой активности slab растёт и визуально съедает RAM. В free кажется, что памяти почти нет, хотя это нормальное поведение. В такие моменты часто вспоминают про drop_caches. Почистить кеш можно командой:
sync
echo 2 | sudo tee /proc/sys/vm/drop_caches
sync принудительно сбрасывает грязные данные на диск, после чего ядро освобождает dentry, inode и другие slab-структуры. Память освобождается сразу.
Зачем это используют на практике
Команду применяют для диагностики, чтобы понять, кэш это или утечка. Если после очистки slab резко уменьшается - это нормальный кэш. Если он быстро возвращается без нагрузки, значит возможна проблема в ядре, драйвере или модуле.
Какие проблемы будут после выполнения
После очистки кэша первые файловые операции становятся медленнее, увеличивается latency, возрастает нагрузка на диск, сервисы с активным I/O могут кратковременно тормозить. На проде это может быть заметно пользователям.
Вывод
drop_caches - это диагностический инструмент, а не оптимизация. Использовать его стоит осознанно, с sync перед выполнением и пониманием того, что система после команды станет временно медленнее.
LinuxCamp | #utils
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
