LinuxSkill - Сводки с прода и Шпаргалки
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4
Ko'proq ko'rsatish📈 Telegram kanali LinuxSkill - Сводки с прода и Шпаргалки analitikasi
LinuxSkill - Сводки с прода и Шпаргалки (@linuxskill) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 10 942 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 11 387-o'rinni va Rossiya mintaqasida 59 932-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 10 942 obunachiga ega bo‘ldi.
13 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -64 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 16.32% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.15% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 786 marta ko‘riladi; birinchi sutkada odatda 673 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 9 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent docker, linux, bash, devops, скрипт kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам.
Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале.
📩 По всем вопросам: @chorapov
Зеркало в MAX: https://max.ru/LinuxSkill
РКН https://vk.cc/cMUwm4”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 14 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
stream (Layer 4) для RDP/SSH/VPN, где ручная перезагрузка Nginx из-за нового конфига — это недопустимый downtime.
Статический конфиг нам не подходит. Решение — динамическая маршрутизация на основе SNI (Server Name Indication) с использованием модуля njs, где список арендаторов хранится во внешней БД (Redis или etcd).
📌 Динамический Upstream по SNI с njs
На L4 Nginx (или Angie) может прочитать имя сервера (SNI) во время TLS-рукопожатия и на основе этого имени принять решение о маршрутизации. Модуль njs позволяет сделать этот процесс динамическим.
Шаг 1. Настраиваем njs для чтения SNI
Нам нужен скрипт на njs, который возьмёт имя хоста из SNI и, используя внешний модуль, найдёт соответствующий upstream в Redis или etcd (имитация логики):
// sni_router.js
function route(s) {
// Получаем имя хоста из SNI
var hostname = s.ssl_server_name;
// Здесь должна быть логика поиска в Redis/etcd
// Для примера, ищем в предопределенном словаре:
var tenantMap = {
'client_a.example.com': 'backend_pool_a',
'client_b.example.com': 'backend_pool_b'
};
if (tenantMap[hostname]) {
return tenantMap[hostname];
}
// Если арендатор не найден, используем upstream по умолчанию
return 'default_pool';
}
Шаг 2. Конфигурируем stream и njs
В конфигурации Nginx (Angie) в блоке stream мы загружаем скрипт и используем его результат в директиве upstream.
# Загрузка njs модуля и скрипта
js_include sni_router.js;
js_set $backend_name sni_router.route;
stream {
upstream backend_pool_a {
server 10.0.0.1:443;
}
upstream backend_pool_b {
server 10.0.0.2:443;
}
upstream default_pool {
server 10.0.0.10:443;
}
server {
listen 443 ssl;
ssl_preread on; # Важно: позволяет Nginx читать SNI
# Динамически определяем upstream на основе результата njs-скрипта
proxy_pass $backend_name;
}
}
💡 Вывод
Такой подход позволяет полностью разделить список арендаторов (который может храниться в Redis/etcd и обновляться мгновенно) от статического конфига Nginx. Nginx (Angie) перечитывает njs-переменную $backend_name для каждого нового соединения, обеспечивая высокую доступность и нулевой downtime при добавлении новых клиентов. Это критически важно для масштабируемой и отказоустойчивой архитектуры.
#Nginx #DevOps #Stream #SNI #MultiTenancy #njsphp-fpm начал зависать в любой момент и перестал отвечать на запросы? Это происходит из-за исчерпания ресурсов или процессов, ушедших в непрерываемое ожидание.
Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.
📌 Авто-чистка зависших FPM
Этот скрипт ищет дочерние процессы php-fpm в состоянии D и принудительно завершает их, чтобы твой пул восстановился, используя базовые принципы Bash-сценариев.
# Ищем процессы FPM, застрявшие в D-состоянии
STUCK_PIDS=$(ps -o pid=,state= -C php-fpm | grep D | awk '{print $1}')
if [ -n "$STUCK_PIDS" ]; then
# Найдено: принудительно убиваем зависшие процессы (SIGKILL)
# Используй kill -9 только в крайних случаях!
echo "$STUCK_PIDS" | xargs kill -9
# Перезапускаем сервис для гарантированного восстановления
systemctl restart php-fpm
fi
💡 Фишка: Ты можешь запускать этот скрипт через cron или systemd.timer, чтобы автоматизировать траблшутинг. Это гарантирует стабильность твоего сервиса.
#Linux #Bash #DevOps #автоматизация #мониторингsystemd-analyze blame покажет точное время, которое каждый юнит потратил на запуск, сортируя их по убыванию.
# Выводит список юнитов, отсортированный по времени запуска
systemd-analyze blame
Назначение: Быстрый поиск юнитов, которые стартуют медленнее всего.
2. ⛓️ Поиск узкого места: Критическая цепочка
Если юнит стартует быстро, но при этом висит в топе, значит, он кого-то ждет. Нам нужно увидеть цепочку зависимостей, которая создает задержку.
# Анализ цепочки зависимостей, которая замедляет запуск системы
systemd-analyze critical-chain
Назначение: Показывает, какой именно юнит или зависимость блокирует загрузку критических служб.
Частый пример: docker.service ждет поднятия сети (systemd-networkd-wait-online.service). Это бессмысленно, если у Docker нет жесткой зависимости от сети на старте.
3. 🛠️ Устраняем задержку через override
Чтобы «отвязать» Docker от медленной сети, используем правильный подход systemd — не трогаем оригинальный файл юнита, а создаем прокладку override.conf:
# Открыть редактор для создания override.conf
sudo systemctl edit docker.service
# В открывшийся файл вставьте:
[Unit]
After=network.target
Wants=network.target
Назначение: Переопределяем параметры After и Wants, чтобы Docker не ждал некритичные сетевые службы.
После этого не забудьте применить изменения:
# Применить изменения
sudo systemctl daemon-reload
sudo systemctl restart docker
Важно: Использование systemctl edit создает отдельный файл, который не будет перезаписан при обновлении пакета Docker.
💡 Вывод: Регулярное использование systemd-analyze позволяет держать под контролем стартовую производительность сервера и избегать фантомный задержек, которые съедают рабочее время.
#Linux #systemd #CLI #DevOps #OptimizationTESTCHARS=2
SHABANG='#!'
FILE="$1" # Берем имя файла из аргумента
# Проверяем первые 2 символа
if [[ $(head -c$TESTCHARS "$FILE") = "$SHABANG" ]]; then
echo "✅ Файл $FILE — сценарий."
fi# Скачать и запустить проверку доступности зарубежных сервисов (YouTube, TikTok, ChatGPT и др.)
curl -sL https://check.foreign.services.sh | bash
Как это работает:
1. curl -sL скачивает скрипт (содержит набор пингов и DNS-запросов к актуальным зарубежным IP).
2. | bash передает его сразу на выполнение в Bash. Результат выводится мгновенно.
💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.
#Linux #Bash #DevOps #VPS #CLI #Security
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
