es
Feedback
LinuxSkill - Сводки с прода и Шпаргалки

LinuxSkill - Сводки с прода и Шпаргалки

Ir al canal en Telegram

Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4

Mostrar más

📈 Análisis del canal de Telegram LinuxSkill - Сводки с прода и Шпаргалки

El canal LinuxSkill - Сводки с прода и Шпаргалки (@linuxskill) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 10 904 suscriptores, ocupando la posición 11 282 en la categoría Tecnologías y Aplicaciones y el puesto 59 555 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 10 904 suscriptores.

Según los últimos datos del 07 julio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -45, y en las últimas 24 horas de -2, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 14.72%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 5.79% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 606 visualizaciones. En el primer día suele acumular 632 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 5.
  • Intereses temáticos: El contenido se centra en temas clave como docker, linux, bash, devops, скрипт.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам. Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале. 📩 По всем вопросам: @chorapov Зеркало в MAX: https://max.ru/LinuxSkill РКН https://vk.cc/cMUwm4

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 08 julio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

10 904
Suscriptores
-224 horas
-77 días
-4530 días
Archivo de publicaciones
🔪 Режем права контейнеров: 10 неочевидных команд безопасности Docker Дефолтные настройки Docker оставляют большую поверхность атаки. Взлом приложения внутри контейнера без ограничений легко ведёт к компрометации хоста. Держи 10 параметров, которые жёстко изолируют продакшен. Контроль привилегий и эскалации
# 1. Тотальный сброс привилегий ядра (Capabilities).
# Сбрасываем все и выдаём только нужную для bind на порты <1024.
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE -d nginx

# 2. Блокировка эскалации через SUID/SGID бинарники (в Dockerfile).
# ВАЖНО: синтаксис '-perm /6000', а НЕ '+6000' (последний давно не работает в GNU find).
RUN find / -xdev -perm /6000 -type f -exec chmod a-s {} \; || true

# 3. Использование gosu вместо sudo в ENTRYPOINT.
# sudo плодит процессы и криво обрабатывает сигналы PID 1. gosu самоустраняется (exec).
exec gosu appuser "$@"
Изоляция файловой системы и ядра
# 4. Корневая ФС только для чтения; для записи монтируем именованный том.
# Атакующий не сможет скачать малварь или переписать скрипты в контейнере.
docker run --read-only --tmpfs /tmp -v /host/data:/app/data:rw -d myapp

# 5. Изоляция тома через SELinux (метка :Z).
# :Z = приватная метка ТОЛЬКО для этого контейнера (:z, строчная — общая для нескольких).
docker run -v /host/secret:/data:Z -d db_service

# 6. Кастомный профиль AppArmor (синтаксис через '=', а не ':').
# Профиль ДО этого нужно загрузить: sudo apparmor_parser -r -W /etc/apparmor.d/custom-nginx
docker run --security-opt apparmor=custom-nginx-profile -d nginx
Защита от отказа в обслуживании (DoS)
# 7. Лимит файловых дескрипторов (по дефолту на systemd-хостах ~1048576).
# Режет атаки, открывающие тысячи соединений/файлов.
docker run --ulimit nofile=1024:2048 -d backend_app

# 8. Жёсткий лимит RAM + запрет свопа.
# memory-swap = memory (256m=256m) означает СВОП ОТКЛЮЧЁН: утечка не выжрет своп хоста.
docker run -m 256m --memory-swap 256m -d heavy_service
Сеть и аутентичность образов
# 9. Отключение межконтейнерного обмена (ICC) — через daemon.json, НЕ /etc/default/docker.
# Файл /etc/docker/daemon.json:
#   { "icc": false, "iptables": true }
# Затем: sudo systemctl restart docker
# (старый DOCKER_OPTS в /etc/default/docker на systemd-хостах игнорируется)

# 10. Принудительная проверка подписей образов (Content Trust).
# Блокирует pull/run образов без валидной криптоподписи.
export DOCKER_CONTENT_TRUST=1
docker pull myorg/backend:latest
Интегрируй эти параметры в свои Compose-манифесты и пайплайны. Безопасность начинается с принципа наименьших привилегий. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Docker #Security #DevOps #SysAdmin

💀 Твой сервер светит реальным IP? Закрываем дыру через VPS и WAF Оставлять реальный IP сервера открытым — верный путь к взлому. Держи два хардкорных и бесплатных способа спрятать бэкенд и отбить атаки. Вариант 1: Туннель Netbird + Nginx на дешёвой VPS Покупаем самую слабую внешнюю VPS, поднимаем на ней Netbird и Nginx. Реальный сервер прячется хоть за 1000 NAT в домашнем Proxmox. Внешняя VPS принимает трафик и прокидывает его в защищённый туннель.
# /etc/nginx/sites-available/backend  (проверено парсером nginx)
upstream backend {
    server 100.64.0.5:8080;   # IP Proxmox-контейнера внутри сети Netbird
    keepalive 32;
}

server {
    listen 80;
    server_name myapp.ru;

    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;

        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # поддержка WebSocket
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_connect_timeout 60s;
        proxy_read_timeout    60s;
    }
}
Активация и проверка конфига перед перезапуском:
sudo ln -s /etc/nginx/sites-available/backend /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx   # nginx -t = обязательная проверка синтаксиса
Вариант 2: Внешняя VPS + Safeline WAF Перед приложением ставится комбайн Safeline: фильтрует трафик, режет ботов, спасает от SQLi, XSS, Command injection, Path traversal и RCE. Работает как reverse-proxy на движке Tengine с семантическим анализом. Быстрый старт Safeline одной командой (актуальный официальный установщик):
# manager.sh сам поставит Docker, скачает образы и поднимет весь стек
bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en
Ручной деплой (официальный способ — compose скачивается, а не пишется руками): Стек состоит из 6 контейнеров (postgres, fvm, detector, mgt, mario, tengine), поэтому compose берём готовый и настраиваем через .env:
# 1. Директория (нужно ≥5 ГБ)
sudo mkdir -p /data/safeline && cd /data/safeline

# 2. Официальный docker-compose (руками его собрать нельзя — сервисов много и они связаны)
sudo wget https://waf.chaitin.com/release/latest/compose.yaml

# 3. Файл окружения (пароль обязателен, иначе postgres не стартует)
sudo tee .env > /dev/null << 'EOF'
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=CHANGE_ME_strong_password
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=chaitin
ARCH_SUFFIX=
RELEASE=
REGION=-g
EOF

# 4. Запуск
sudo docker compose up -d

# 5. Получить логин/пароль админа
sudo docker exec safeline-mgt resetadmin
Панель управления: https://<IP-твоей-VPS>:9443 ⚠️ На ARM-серверах меняй ARCH_SUFFIX=-arm; Personal Edition на ARM не работает — нужна Pro-лицензия. Внедряй эти подходы, чтобы не только анализировать трафик, но и на 100% скрывать IP своих приложений. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Security #WAF #Docker #DevOps

🎥 Вебинар: «Gitlab CI как конструктор workflow» Научитесь создавать эффективные и надежные пайплайны с помощью Gitlab CI О ч
🎥 Вебинар: «Gitlab CI как конструктор workflow» Научитесь создавать эффективные и надежные пайплайны с помощью Gitlab CI О чём поговорим: - Быстрый обзор Gitlab CI в сравнении с другими решениями. - Как использовать особенности Gitlab для улучшения работы команды. - Антипаттерны CI: обилие ручек, сабмодули и другие. - Идеальный пайплайн деплоя инфраструктуры по мнению автора. Что вы получите: - Вы получите понимание ключевых преимуществ Gitlab CI по сравнению с другими решениями. - Научитесь использовать возможности Gitlab для повышения производительности команды. - Избежите распространенных ошибок и антипаттернов в CI/CD. - Сможете создать идеальный пайплайн деплоя инфраструктуры, соответствующий лучшим практикам. 🧠 Вебинар проходит в преддверие старта курса «DevOps практики и инструменты». Зарегистрируйтесь сейчас и получите скидку на обучение. 👉 Для участия зарегистрируйтесь: https://otus.pw/Gb17/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🔧 Укрощаем bash: 15 железобетонных функций для профи Самописные функции в конфигурации оболочки экономят часы рутины, но часто пишутся "на коленке" и падают с синтаксическими ошибками, если забыть передать им аргумент. Я собрал 15 убойных функций для твоего конфига и добавил в них жесткие проверки и значения по умолчанию. Забирай в продакшен. Навигация и управление файлами

# 1. Создать директорию и сразу в нее перейти
mkcd() {
  mkdir -p "$1" && cd "$1"
}

# 2. Подняться на N уровней вверх. Если аргумент не передан, поднимаемся на 1 (защита от syntax error)
up() {
  local d=""
  local limit="${1:-1}"
  for ((i=1; i<=limit; i++)); do d+="../"; done
  cd "$d"
}

# 3. Быстрый поиск файла по имени в текущей директории
ff() {
  find . -type f -iname "*$1*"
}

# 4. Быстрый поиск директории по имени
fd() {
  find . -type d -iname "*$1*"
}

# 5. Узнать размер директории. Если путь не передан, считаем текущую (.)
dirsize() {
  du -sh "${1:-.}"
}
Работа с процессами и историей

# 6. Найти процесс, отсекая из вывода сам grep
psg() {
  ps aux | grep -i "$1" | grep -v grep
}

# 7. Посмотреть N последних введенных команд (по умолчанию 10)
h() {
  history | tail -n "${1:-10}"
}

# 8. Быстрый поиск по истории команд
hg() {
  history | grep "$1"
}
Сеть и порты

# 9. Поднять HTTP-сервер в текущей папке (по умолчанию порт 8000)
serve() {
  python3 -m http.server "${1:-8000}"
}

# 10. Узнать свой внешний IP-адрес
myip() {
  curl -s ifconfig.me
}

# 11. Узнать IP-адрес нужного домена
ipinfo() {
  dig +short "$1"
}

# 12. Показать все открытые слушающие порты
ports() {
  ss -tuln
}
Система и безопасность

# 13. Полная очистка терминала вместе с буфером прокрутки
cls() {
  clear && printf '\e[3J'
}

# 14. Универсальная распаковка архива с проверкой существования файла
extract() {
  if [ -f "$1" ]; then
    case "$1" in
      *.tar.bz2|*.tbz2) tar xjf "$1" ;;
      *.tar.gz|*.tgz)   tar xzf "$1" ;;
      *.bz2)            bunzip2 "$1" ;;
      *.rar)            unrar x "$1" ;;
      *.gz)             gunzip "$1" ;;
      *.tar)            tar xf "$1" ;;
      *.zip)            unzip "$1" ;;
      *.7z)             7z x "$1" ;;
      *)                echo "Неизвестный архив" ;;
    esac
  else
    echo "Файл '$1' не найден"
  fi
}

# 15. Безопасный rm: защита от пустого вызова и регистронезависимое подтверждение (Y/y)
rm() {
  if [ -z "$1" ]; then
    command rm
    return
  fi
  ls -FCsd -- "$@"
  read -p 'Удалить безвозвратно? [y/N] ' ans
  if [[ "$ans" =~ ^[Yy]$ ]]; then
    command rm -rf -- "$@"
  fi
}
Все конструкции используют конструкцию ${1:-значение}, которая спасает bash от падения при пустых переменных. Добавь нужные блоки в свой файл конфигурации и выполни команду source ~/.bashrc для применения изменений. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #CLI #DevOps #Bashrc

💀 Твой демон падает из-за изоляции? Учим AppArmor работать правильно Использование aa-disable или teardown для неработающего демона полностью снимает MAC-изоляцию на продакшене. Вместо выгрузки защиты мы переведем профиль в режим обучения, соберем реальные пути и вернем жесткий контроль. Помни: AppArmor привязывает правила к абсолютному пути бинарника, а не к меткам типов, как это делает SELinux. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #AppArmor #Security #Ubuntu #DevOps

🎯 Инкрементные бэкапы без костылей: хардкорная шпаргалка по tar -g Ежедневное создание полных архивов убивает дисковое пространство и перегружает подсистему ввода-вывода. Показываю, как собирать только измененные файлы и правильно отслеживать удаления, не копируя терабайты лишних данных. Настрой инкрементное копирование, чтобы радикально снизить нагрузку на дисковую подсистему серверов. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #Backup #Tar #DevOps #SysAdmin

Магия Lovable: как создавать готовые интерфейсы с помощью одного запроса. Бесплатный урок курса «Вайб-кодинг: создание цифров
Магия Lovable: как создавать готовые интерфейсы с помощью одного запроса. Бесплатный урок курса «Вайб-кодинг: создание цифровых продуктов с ИИ» Lovable может за минуты собрать экран, который выглядит как почти готовый интерфейс. Но результат зависит не от «магии нейросети», а от того, насколько точно вы ставите задачу. Один расплывчатый запрос даст случайный макет, а правильно собранный системный промпт — понятную структуру, единый стиль и экран, который уже можно показывать команде, заказчику или использовать для проверки идеи. На открытом уроке 2 июля в 20:00 разберём, как формулировать задачи для Lovable, чтобы получать предсказуемый результат с первой попытки. Поговорим о структуре системного промпта, ключевых словах, которые помогают превратить текст в качественный интерфейс, и способах доработки результата через встроенный редактор и повторные запросы. Отдельно обсудим, как управлять компонентами, просить нейросеть переиспользовать элементы и сохранять единый визуальный стиль. Урок не для тех, кто ждёт, что Lovable «сам всё поймёт», не готов уточнять задачу и хочет получать качественный интерфейс без структуры, контекста и итераций. 👉 Записаться: https://otus.pw/Aoqd/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🎯 Твой DROP пропускает пакеты? Исправляем фатальную ошибку лимитов nftables Stateless-фаерволы сверяют каждый пакет со всем списком правил, сжигая ресурсы. Stateful-фаервол с conntrack помнит сессии и пропускает 99% трафика первым же правилом. Показываю, как написать эталонный конфиг и не попасть в ловушку лимитирования, из-за которой часть мусорного трафика пробивает твою защиту. Перед применением policy drop без разрешающего правила SSH ты заблокируешь сам себя — сначала всегда прописывай свой доступ. Всегда держи второй открытый сеанс для отката и не забудь сделать systemctl enable nftables, чтобы защита пережила перезагрузку. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Security #nftables #Firewall #DevOps

❓Администрируете Linux «по наитию» и гасите инциденты по ночам, вместо того чтобы управлять инфраструктурой системно? 🧠 На повышении квалификации «Администратор Linux. Продвинутый уровень» вы разложите Linux по полочкам: от установки, загрузки и работы с файловыми системами до сетей, сервисов, мониторинга, резервного копирования и безопасности. Будете разбирать реальные кейсы, а не учебные примеры уровня «домашнего сервера». 💪 После обучения вы сможете уверенно подбирать конфигурации под нагрузки, оптимизировать производительность, строить отказоустойчивые схемы, настраивать Zabbix/Prometheus, Nginx, базы данных, файрволы и бэкапы. Эти навыки — прямое усиление вашей позиции как системного администратора, DevOps-инженера или backend-разработчика. 🎁 Пройди вступительный тест и получи в подарок запись урока «Простой роутер на Linux». Десятки других записей будут разблокированы на странице курса. 👉 Пройти вступительный тест: https://otus.pw/QabsT/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

📦 Ломаются зависимости при unshare? Настраиваем изоляцию как профи Ошибки libc.so возникают, когда ты меняешь корень через chroot в пустую файловую систему без библиотек. Оставим ФС хоста на месте и изолируем только namespaces: все бинарники останутся доступны, а процессы и сеть будут в глухой песочнице. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Namespaces #Containers #DevOps #SysAdmin

🕰 Твои скрипты падают в systemd? Идеальный конфиг .timer Демоны systemd работают с сильно урезанным окружением $PATH. Из-за этого вызовы обычных утилит внутри сервисов часто падают без видимых причин. Показываю, как написать железобетонный конфиг таймера, защититься от шторма нагрузки и отловить синтаксические ошибки еще до деплоя. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Systemd #DevOps #Timers #SysAdmin

🚫 Хватит "тыкать" мышкой! Переходи на тёмную сторону консоли. 2 курса, чтобы понять Linux с нуля до senior-уровня. 🧠 Курс «Администратор Linux. Базовый уровень» Курс OTUS создан для тех, кто хочет перейти от случайного опыта к уверенной работе с сервером. Вы освоите основы операционной системы, научитесь работать в Bash, поймёте, как устроены сети, а также научитесь запускать веб-сервисы, работать с MySQL, Docker, Git, Prometheus и Grafana. Это фундамент, без которого невозможен дальнейший рост. 🎁 Пройди вступительный квиз и получи в подарок записи двух уроков: «Что нужно знать, когда переходишь с Windows на Linux. Базовые понятия Linux, работа в консоли с базовыми командами» и «Вся правда о рынке труда, или как быть востребованным в современных реалиях». 👉 Пройти квиз: https://otus.pw/jYa7/ 🧠 Курс «Администратор Linux. Продвинутый уровень» После обучения вы сможете уверенно подбирать конфигурации под нагрузки, оптимизировать производительность, строить отказоустойчивые схемы, настраивать Zabbix/Prometheus, Nginx, базы данных, файрволы и бэкапы. Эти навыки — прямое усиление вашей позиции как системного администратора, DevOps-инженера или backend-разработчика. 🎁 Пройди вступительный тест и получи в подарок запись урока «Простой роутер на Linux». Десятки других записей будут разблокированы на странице курса. 👉 Пройти вступительный тест: https://otus.pw/XcmG/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🔧 Забудь про сотни пайпов: хардкорная фильтрация логов через grep -E Базовый синтаксис grep (BRE) заставляет экранировать каждый спецсимвол, превращая сложные фильтры в нечитаемую кашу из слешей. Расширенные регулярные выражения (ERE) через параметр -E позволяют использовать группировки и квантификаторы напрямую. Классическая утилита egrep устарела (deprecated), поэтому на современных серверах всегда используй grep -E. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #Grep #DevOps #SysAdmin

💀 Забудь про тормоза strace: мониторим процессы через eBPF Привычный strace безжалостно тормозит приложения, прерывая их на каждом системном вызове. Сейчас покажу, как фильтровать события прямо в ядре через bcc-tools, ловить короткоживущие процессы и отлаживать I/O с нулевым оверхедом. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #eBPF #BCC #DevOps #Security

🔪 Забудь про grep: ультимативная шпаргалка по journalctl Обычные текстовые логи отнимают время. Переходи на journalctl, чтобы находить причины сбоев мгновенно по бинарным метаданным, без лишнего мусора. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Systemd #Journalctl #DevOps #SysAdmin

💣 find -delete сносит всё? Исправляем фатальные ошибки зачистки Наивный конвейер с xargs rm легко ломается о пробелы и кавычки в именах файлов, удаляя нужные данные. Показываю, как безопасно зачищать систему и работать со списками файлов, не боясь кривых имен. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Bash #xargs #rm #find

⏱ Таймеры systemd: продвинутая альтернатива cron Они требуют чуть больше строчек, чем crontab, но из коробки дают защиту от наслаивания процессов, контроль зависимостей и мощное логирование в journald. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #Systemd #DevOps #Timers #SysAdmin

🛡 Железобетонный SSH: харденинг без ошибок Внедряй эти параметры в свои пайплайны, и твой сервер станет неприступной крепостью. ❗️❗️❗️ Нравится формат? Ставь 👍 👉 Рубрика: #шпаргалка@LinuxSkill #Linux #SSH #Security #Hardening #SysAdmin #DevOps

⚠️ Хватит плодить хрупкие скрипты и оставлять дыры для троянов. Пора писать пуленепробиваемый инфраструктурный код. 🎥 Пригла
⚠️ Хватит плодить хрупкие скрипты и оставлять дыры для троянов. Пора писать пуленепробиваемый инфраструктурный код. 🎥 Приглашаем на вебинар - Продвинутый Bash На вебинаре вы узнаете: - Связка set -euo pipefail навсегда исключит тихое проглатывание ошибок и потерю данных в конвейерах. - Нативные подстановки Bash заменят тысячи ресурсоемких вызовов sed и сэкономят CPU. - Регулярный мониторинг системных профилей защитит продакшен от перехвата команд троянами. - Грамотный перехват сигналов через trap обеспечит безопасное сворачивание процессов при сбоях. В результате вебинара вы: - Замените многоуровневые костыли лаконичной логикой на базе ассоциативных массивов. - Исключите утечки глобальных переменных через жесткую изоляцию областей видимости в функциях. - Внедрите нативную построчную трассировку скриптов вместо примитивного дебага echo-принтами. - Начнете напрямую пробрасывать переменные окружения в SystemD-юниты для надежного старта сервисов. 🧠 Открытый урок проходит в преддверии старта курса «Администратор Linux. Продвинутый уровень» 👉 Для участи зарегистрируйтесь: https://otus.pw/7CHT/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru