ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

DevOps | Вопросы собесов

DevOps | Вопросы собесов

Открыть в Telegram
5 569
Подписчики
-324 часа
-57 дней
+830 дней
Архив постов
🤔 Как найти запущенный процесс? В операционных системах на базе Unix и Linux для поиска запущенных процессов используются различные команды. 🟠Команда `ps` Команда ps отображает список текущих процессов. Часто используемые опции: ps aux: Показывает все процессы в системе. ps -ef: Альтернативный формат вывода всех процессов.
ps aux | grep <имя_процесса>
🟠Команда `top` Команда top показывает список процессов в реальном времени, обновляя его каждые несколько секунд. Это удобно для мониторинга системы и поиска процессов с высокой загрузкой CPU или памяти.
top
🟠Команда `htop` Команда htop — это улучшенная версия top, предоставляющая более удобный интерфейс для мониторинга процессов. Она должна быть установлена отдельно.
sudo apt-get install htop
htop
🟠Команда `pgrep` Команда pgrep используется для поиска процессов по имени. Она возвращает идентификаторы (PID) процессов, соответствующих критериям поиска. Пример использования:
pgrep <имя_процесса>
🟠Команда `pidof` Команда pidof возвращает идентификаторы (PID) процессов с указанным именем.
pidof <имя_процесса>
🟠Команда `ps` с фильтрацией Для более точного поиска можно использовать команду ps с фильтрацией через grep.
ps aux | grep <имя_процесса> | grep -v grep
🟠Команда `lsof` Команда lsof отображает список открытых файлов и может использоваться для поиска процессов, открывающих определенные файлы.
sudo lsof -i :<номер_порта>
🚩Пример поиска конкретного процесса Допустим, вам нужно найти процесс с именем nginx. Вот несколько способов сделать это Использование ps
ps aux | grep nginx | grep -v grep
Использование pgrep
pgrep nginx
Использование pidof
pidof nginx
🚩Использование `top` или `htop` Запустите top или htop и найдите процесс nginx в интерактивном режиме. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как управлять в GitLab CI чувствительными данными и как их передаёте? Для передачи чувствительных данных, таких как токены или ключи доступа, используются переменные окружения, которые можно задать в настройках проекта в GitLab. Эти данные защищены и не отображаются в логах выполнения pipeline. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие процессы убивает long killer? Это системный механизм в Astra Linux (и некоторых других дистрибутивах на базе Debian), который убивает "долгоиграющие" процессы, потребляющие слишком много ресурсов. Он предотвращает зависания системы и защищает от неэффективного использования вычислительных мощностей. 🚩Какие процессы убивает Long Killer? Long Killer анализирует процессы и завершает те, которые: Запущены от обычного пользователя (не root). Работают слишком долго (по умолчанию >10 минут). Потребляют много CPU (по умолчанию >90% CPU). Используют много памяти (если система близка к OOM – Out of Memory). Не имеют активности (зависли, например, ожидание ввода). Он не убивает root-процессы. Системные службы (например, sshd, systemd) остаются нетронутыми. Если процесс выполняется интерактивно (например, работа в vim или nano), он обычно не трогает его. 🚩Как проверить, что процесс убит Long Killer? Если подозреваете, что ваш процесс завершился из-за Long Killer, посмотрите логи
journalctl -u long-killer.service --no-pager | tail -n 20
Также можно проверить dmesg
dmesg | grep "killed by Long Killer"
🚩Как отключить или настроить Long Killer? Файл конфигурации находится здесь
/etc/long-killer.conf
Пример настроек
MAX_CPU_USAGE=90     # Максимальная загрузка CPU (%)
MAX_EXEC_TIME=600    # Максимальное время выполнения (секунды)
EXCLUDE_USERS=root   # Не убивать процессы от root
После изменения перезапустите сервис
systemctl restart long-killer.service
Чтобы полностью отключить Long Killer
systemctl stop long-killer.service
systemctl disable long-killer.service
🚩Как избежать убийства процессов? Запуск от root (если это безопасно):
sudo my_long_process
Снижение приоритета процесса (nice/renice)
nice -n 10 my_process
renice -n 10 -p <PID>
Использование nohup или screen для фоновых задач
nohup my_script.sh &
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое императивный подход? Императивный подход — это пошаговое описание того, что делать. Скрипт задаёт последовательность инструкций: "установи пакет", "создай файл", "перезапусти службу". Контроль полностью в руках разработчика. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Что будет работать в рекламе завтра? Ответ ищем вместе на REKONFA 2026. 15 октября соберёмся в Москве и онлайн, чтобы обсудит
Что будет работать в рекламе завтра? Ответ ищем вместе на REKONFA 2026. 15 октября соберёмся в Москве и онлайн, чтобы обсудить новые технологии Яндекс Рекламы, продуктовые запуски, тренды рынка, исследования и реальные кейсы. В программе — выступления экспертов и возможность поговорить с продуктовыми командами Яндекс Рекламы о своих задачах. А вне сцены вас ждут коворкинг, фотозоны и форматы для новых знакомств. Участвовать можно в Москве на ВТБ Арене или онлайн. Регистрация бесплатная. Зарегистрироваться #реклама 18+ ya.rekonfa.ru О рекламодателе

🤔 Где находится swap какое устройство использует? Это область на диске, которую операционная система использует как виртуальную память, если основной оперативной памяти (RAM) не хватает. Swap может быть представлен в виде: 🚩Где находится swap? 🟠Swap-раздел Swap может быть выделен как отдельный раздел диска. Он создается во время установки системы или вручную и не имеет файловой системы (тип раздела — swap). 🟠Swap-файл Swap может быть представлен как обычный файл в файловой системе (например, /swapfile). 🚩Как узнать, где находится swap? Используйте команды для проверки текущей конфигурации: Проверка swap через swapon
swapon --show
Пример вывода
NAME       TYPE      SIZE   USED PRIO
/dev/sda2  partition 4G     1G   -2
/swapfile  file      2G     0B   -3
- NAME: Устройство или файл, используемый для swap. - TYPE: Указывает, является ли swap разделом или файлом. - SIZE: Размер swap. - USED: Сколько swap в данный момент используется. - PRIO: Приоритет использования (меньшее значение — меньший приоритет). Проверка через free
free -h
🚩Проверка через `fstab` Если swap является разделом, он обычно прописан в /etc/fstab
cat /etc/fstab | grep swap
Пример
/dev/sda2    none    swap    sw    0   0
🚩Какое устройство использует swap? Если swap — это раздел, то он отображается как устройство, например, /dev/sda2. Если swap — это файл, его путь будет, например, /swapfile. Ставь 👍 и забирай 📚 Базу знаний

Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная история со своей командой и своим бюд
Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная история со своей командой и своим бюджетом. На практике границы между ними давно стёрлись. Монолиты работают в виртуальных машинах, микросервисы — в контейнерах, часть инфраструктуры — на собственном железе, часть — в облаке. Каждый кусок требует своего набора инструментов и своих правил доступа. Deckhouse Platform собирает всё это под одним управлением. Контейнеры, виртуальные машины, ML-нагрузки и управляемые сервисы работают на любой инфраструктуре, без привязки к одному провайдеру. Сейчас так работают 1300+ кластеров в 260+ компаниях. На консультации с инженерами Deckhouse разберите, какие из ваших сценариев платформа закрывает уже сейчас 👈

Ищете облачную платформу? Есть Beget ✅ Аптайм 99,98% в дата-центрах Tier III ✅ Техподдержка 24/7 — живые люди, без ботов ✅ Пр
Ищете облачную платформу? Есть Beget ✅ Аптайм 99,98% в дата-центрах Tier III ✅ Техподдержка 24/7 — живые люди, без ботов ✅ Прозрачная оплата без скрытых платежей ✅ Более 200 000 клиентов доверяют Beget Узнать больше #реклама 16+ beget.com О рекламодателе

🤔 Что сейчас больше используется ингресс класс в ингрессе или указывается ингресс контроллер непосредственно в апликейшене? Сейчас стандартом является использование ingressClassName, а аннотации kubernetes.io/ingress.class считаются устаревшими (deprecated). 🚩Что лучше использовать? 🟠`ingressClassName` (новый метод, Kubernetes 1.19+) Современный, удобный, поддерживается официально Работает с IngressClass ресурсами Можно управлять через CRD (IngressClass) 🟠Аннотация `kubernetes.io/ingress.class` (старый метод, deprecated с 1.18) Все еще работает, но устарела Нельзя контролировать IngressClass через CRD 🚩Как правильно указывать `ingressClassName`? 1⃣Настраиваем IngressClass (если нужно)
yaml  
apiVersion: networking.k8s.io/v1  
kind: IngressClass  
metadata:  
  name: nginx  
spec:  
  controller: k8s.io/ingress-nginx  
2⃣Используем ingressClassName в Ingress
yaml  
apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
  name: my-ingress  
spec:  
  ingressClassName: nginx  
  rules:  
  - host: example.com  
    http:  
      paths:  
      - path: /  
        pathType: Prefix  
        backend:  
          service:  
            name: my-service  
            port:  
              number: 80  
🚩Старый способ (не рекомендуется, но все еще встречается) Раньше использовали аннотацию kubernetes.io/ingress.class
yaml  
apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
  name: my-ingress  
  annotations:  
    kubernetes.io/ingress.class: "nginx"  
spec:  
  rules:  
  - host: example.com  
    http:  
      paths:  
      - path: /  
        pathType: Prefix  
        backend:  
          service:  
            name: my-service  
            port:  
              number: 80
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какой экспортер используется, если есть Kubernetes и нужно в Elasticsearch отправлять данные? Обычно используется Fluent Bit или Fluentd с output-плагином для Elasticsearch. Эти агенты собирают логи с нод, контейнеров и pod'ов и отправляют их напрямую в Elasticsearch. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как определить опции запуска пайплайна при редактировании определенных ресурсов в гите? При работе с CI/CD (GitHub Actions, GitLab CI, Jenkins) часто нужно запускать пайплайн только при изменении определенных файлов. Это помогает оптимизировать сборку, экономить ресурсы и время. 🚩В GitHub Actions (on: push, paths) В GitHub Actions можно указать файлы, изменения в которых запустят пайплайн.
name: Infra Pipeline
on:
  push:
    paths:
      - 'infra/**'
      - 'k8s/**'
  pull_request:
    paths:
      - 'infra/**'
      - 'k8s/**'
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Deploy Infrastructure
        run: ./deploy.sh
🚩В GitLab CI/CD (only: changes) В GitLab можно настроить запуск пайплайна по изменению файлов с помощью only: changes.
stages:
  - deploy

terraform:
  stage: deploy
  script:
    - terraform apply -auto-approve
  only:
    changes:
      - terraform/**
🚩В Jenkins (when { changes }) В Jenkins Declarative Pipeline можно использовать when { changes } для проверки измененных файлов.
pipeline {
    agent any
    stages {
        stage('Deploy Ansible') {
            when { changes path: 'ansible/**' }
            steps {
                sh './deploy_ansible.sh'
            }
        }
        stage('Deploy Helm') {
            when { changes path: 'helm/**' }
            steps {
                sh './deploy_helm.sh'
            }
        }
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес. Преимущества аренды: - Выделенные ресурсы без переплаты; - KVM-виртуализация; - Быстрые NVMe SSD; - Бесплатная защита от DDoS; - Управление через панель, API и Terraform; - Техподдержка 24/7. Запустите сервер за несколько минут! Попробовать #реклама 16+ selectel.ru О рекламодателе

🤔 На каком шаге заканчивается Continuous Integration? CI заканчивается после: - успешной сборки, - прохождения тестов, - публикации артефактов. Далее идёт этап доставки (delivery) или развёртывания (deployment) — это уже CD. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое container network module в докере? Это архитектурная модель, разработанная Docker для управления сетями контейнеров. Она описывает, как создаются, управляются и взаимодействуют сетевые компоненты в Docker-контейнерах. CNM служит основой для организации сетей Docker и позволяет подключать контейнеры к различным сетевым средам, обеспечивая гибкость, масштабируемость и безопасность. 🚩Основные компоненты CNM 🟠Sandbox Это изолированная среда, где настраиваются сетевые интерфейсы контейнера, такие как IP-адреса, маршруты и DNS. Что включает: veth-пара интерфейсов (виртуальный Ethernet): соединяет контейнер с внешней сетью. Конфигурации маршрутов и сетевых правил. 🟠Endpoint Точка подключения контейнера к сети. Функции: Обеспечивает контейнеру связь с другими контейнерами или внешними сетями. Соединяет Sandbox с Network. 🟠Network Логическая сущность, объединяющая Endpoints для обеспечения взаимодействия контейнеров. Типы сетей в Docker: bridge: Локальная сеть, позволяющая контейнерам взаимодействовать на одном хосте. host: Контейнеры используют сетевой стек хоста без изоляции. none: Сеть отключена; контейнер полностью изолирован. overlay: Распределенная сеть для связи контейнеров на разных хостах. macvlan: Контейнеры получают прямой доступ к физической сети. 🚩Как это работает в Docker Создается Sandbox, где настраиваются сетевые параметры контейнера. Создается Endpoint, который подключает контейнер к выбранной сети. Endpoint добавляется в Network, что позволяет контейнеру взаимодействовать с другими узлами. 🚩Плюсы ➕Гибкость Легко подключать контейнеры к различным типам сетей. ➕Изоляция Обеспечивает безопасность, изолируя сетевые пространства контейнеров. ➕Расширяемость CNM поддерживает сторонние плагины для интеграции с другими сетевыми решениями (например, Calico, Flannel). ➕Управляемость Позволяет контролировать настройки сети через команды Docker. 🚩Пример создания сети 1⃣Создание сети
docker network create my_bridge
2⃣Подключение контейнера к сети
docker run --network my_bridge -d nginx
Ставь 👍 и забирай 📚 Базу знаний

Чиллер отключается в жару? Адиабатическое предохлаждение: давление в норме, экономия до 30% энергии Получить консультацию #реклама coolingpad.ru О рекламодателе

🤔 Какие параметры файловой системы могут влиять на выбор файловой системы? Файловая система выбирается по ряду параметров: - Тип нагрузки – большие файлы (XFS, ZFS) или много мелких файлов (EXT4, Btrfs). - Журналирование – влияет на отказоустойчивость (XFS, EXT4). - Снапшоты – нужны ли сохранения состояний файлов (Btrfs, ZFS). - Шифрование – встроенная защита данных (ZFS, LUKS). - Резервирование пространства – например, XFS и ZFS резервируют место. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 По какой причине inode могут закончиться? Это структуры данных, которые хранят информацию о файлах и каталогах. Каждый файл или каталог на диске ассоциируется с одним inode, который содержит метаданные файла, такие как его размер, разрешения, временные метки, ссылки на блоки данных и т.д. Количество inode на файловой системе обычно определяется в момент её создания и не может быть изменено без переформатирования или значительных изменений в файловой системе. 🚩Причины исчерпания 🟠Большое количество мелких файлов Одной из наиболее частых причин исчерпания inode является наличие очень большого количества маленьких файлов на файловой системе. Поскольку каждый файл использует как минимум один inode, системы с большим количеством мелких файлов могут исчерпать доступные inode, даже если дисковое пространство по-прежнему доступно. 🟠Недостаточное количество выделенных inode При создании файловой системы, если количество выделенных inode было рассчитано неправильно (слишком мало для предполагаемого использования), это может привести к раннему их исчерпанию. Это особенно актуально для серверов или систем, где ожидается большое количество файлов. 🟠Особенности файловой системы Некоторые файловые системы, такие как Ext3 или Ext4, имеют фиксированное соотношение inode к объёму файловой системы, которое задаётся при их создании. Если создать файловую систему с недостаточным количеством inode для конкретного случая использования, то в дальнейшем это может стать проблемой. 🚩Решения проблемы исчерпания 🟠Проверка использования С помощью команды df -i можно проверить, сколько inode используется и сколько ещё доступно в вашей файловой системе. 🟠Очистка файловой системы Удаление ненужных или временных файлов может освободить inode. 🟠Изменение файловой системы Если возможно, можно увеличить количество inode путём изменения файловой системы или пересоздания файловой системы с более высоким количеством inode. Для файловых систем, таких как XFS или некоторые конфигурации Btrfs, можно динамически добавлять inode. 🟠Использование других файловых систем Переход на другую файловую систему, которая не имеет строгих ограничений на количество inode (например, Btrfs или ZFS), может быть решением для систем с большим количеством маленьких файлов. 🟠Архивирование Программы и процессы, которые создают большое количество мелких файлов, могут модифицироваться для хранения данных в формате архивов вместо отдельных файлов, что снижает потребление inode. Ставь 👍 и забирай 📚 Базу знаний

Розыгрыш Яндекс Станции уже в боте Любимые блогеры, розыгрыши, новости и анонсы в одном боте! Узнать больше #реклама 16+ refe
Розыгрыш Яндекс Станции уже в боте Любимые блогеры, розыгрыши, новости и анонсы в одном боте! Узнать больше #реклама 16+ refer.id О рекламодателе

🤔 Что такое PaaS? Platform as a Service — модель, при которой платформа (среда исполнения, контейнер, фреймворк) уже настроена, и разработчик разворачивает код без управления инфраструктурой. Пример: Heroku, App Engine. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Где бы хранил tfstate если много разрабов? Файл terraform.tfstate содержит текущее состояние инфраструктуры. Если его неправильно хранить, возможны конфликты и повреждение данных. 🚩Плохие решения Локально (terraform.tfstate в репозитории) Потеря данных, если разработчик сменит машину. Конфликты, если несколько человек применяют terraform apply. Невозможно откатиться к старому состоянию. Не поддерживает блокировки (terraform lock). Возможны проблемы с одновременным доступом. 🚩Лучшие решения для хранения `tfstate` 🟠S3 + DynamoDB (AWS) → Самый популярный способ S3 хранит tfstate, а DynamoDB предотвращает конфликты.
terraform {
  backend "s3" {
    bucket         = "my-terraform-state"
    key            = "prod/terraform.tfstate"
    region         = "us-east-1"
    encrypt        = true
    dynamodb_table = "terraform-lock"
  }
}
🟠Terraform Cloud/Enterprise → Официальное SaaS-решение Terraform Cloud хранит tfstate в облаке HashiCorp.
terraform {
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "my-org"
    workspaces {
      name = "my-workspace"
    }
  }
}
🟠Google Cloud Storage (GCS) + Firestore (GCP) Для GCP аналог AWS S3 — это Google Cloud Storage (GCS), а DynamoDB заменяется Firestore.
terraform {
  backend "gcs" {
    bucket  = "my-tfstate-bucket"
    prefix  = "terraform/state"
  }
}
🟠Azure Storage + Azure CosmosDB (Azure) Для Azure можно использовать Azure Storage и блокировки через Azure CosmosDB.
terraform {
  backend "azurerm" {
    resource_group_name  = "my-rg"
    storage_account_name = "myterraformstate"
    container_name       = "tfstate"
    key                  = "prod.terraform.tfstate"
  }
}
Ставь 👍 и забирай 📚 Базу знаний