DevOps | Вопросы собесов
5.28K subscribers
27 photos
895 links
Download Telegram
📌 Зачем нужен inode ?

💬 Спрашивают в 13% собеседований

Inode (index node) — это структура данных в файловых системах Unix и Unix-подобных системах (например, Linux), которая хранит информацию о файлах и каталогах, за исключением их имен и содержимого. Каждому файлу или каталогу в файловой системе соответствует свой уникальный inode.

🤔 Зачем он нужен?

Предоставляет ключевую информацию о файле, которая необходима для его управления и доступа. Это помогает файловой системе эффективно управлять файлами и каталогами.

Основные функции и информация:

1️⃣ Метаданные файла:

Идентификатор владельца (UID): Указывает, кто является владельцем файла.

Идентификатор группы (GID): Указывает группу, к которой принадлежит файл.

Права доступа (permissions): Определяет, кто может читать, записывать или выполнять файл.

Тип файла: Указывает, является ли файл обычным файлом, каталогом, символической ссылкой, устройством и т.д.

Размер файла: Указывает размер файла в байтах.

Временные метки:

ctime (Change time): Время последнего изменения метаданных файла.

mtime (Modification time): Время последнего изменения содержимого файла.

atime (Access time): Время последнего доступа к файлу.

2️⃣ Указатели на блоки данных:

Inode содержит указатели на блоки данных, где хранится содержимое файла. Эти указатели могут быть прямыми, косвенными, двойными косвенными и тройными косвенными, что позволяет эффективно управлять файлами разного размера.

3️⃣ Счетчик ссылок (link count):

Указывает количество жестких ссылок на данный inode, то есть количество имен, связанных с этим файлом.

🤔 Как это работает

Когда создается файл, файловая система выделяет inode и один или несколько блоков для хранения данных файла. Inode хранит всю информацию о файле, кроме его имени и содержимого. Имя файла хранится в каталоге, который содержит сопоставление имен файлов с их inodes.

1️⃣ Создание файла:

При создании нового файла система выделяет новый inode и записывает в него всю необходимую метаинформацию о файле.

2️⃣ Доступ к файлу:

При доступе к файлу система сначала ищет его имя в каталоге, чтобы найти соответствующий inode. Затем она использует inode для получения информации о файле и его содержимом.

3️⃣ Удаление файла:

При удалении файла система уменьшает счетчик ссылок в inode. Если счетчик ссылок достигает нуля, inode и все блоки данных, связанные с файлом, освобождаются.

Команда ls -i показывает номер inode для каждого файла в каталоге:
ls -i

Пример вывода:
1234567 file1.txt
1234568 file2.txt
1234569 directory1

Здесь 1234567, 1234568 и 1234569 — номера inodes для file1.txt, file2.txt и directory1 соответственно.

Inode хранит метаданные файла и указатели на его содержимое, что позволяет эффективно управлять файлами и каталогами в файловой системе.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
4
📌 На системах какого типа inode могут закончиться ?

💬 Спрашивают в 13% собеседований

Inode могут закончиться на файловых системах с фиксированным числом inodes. Это может произойти на различных типах файловых систем, особенно если система выделяет inodes при создании файловой системы и не может динамически изменять их количество. Как это происходит и на каких файловых системах это может случиться:

🤔 Системы, где они могут закончиться

1️⃣ Файловые системы на основе ext2/ext3/ext4:

Эти файловые системы выделяют фиксированное количество inodes при создании файловой системы. Это количество основано на размере раздела и задано параметрами mkfs. Если все inodes заняты, создание новых файлов будет невозможно, даже если на диске еще есть свободное место.

   -      mkfs.ext4 -N 100000 /dev/sdX1

Здесь -N 100000 указывает на создание 100,000 inodes.

2️⃣ Файловые системы на основе UFS (Unix File System):

Используемая в операционных системах типа BSD (Berkeley Software Distribution), UFS также выделяет фиксированное количество inodes при создании файловой системы.

   -      newfs -i 8192 /dev/sdX1

Здесь -i 8192 задает размер inodes.

3️⃣ Файловые системы HFS и HFS+ (Hierarchical File System):

Используемые в операционных системах macOS (особенно в более старых версиях), эти файловые системы также имеют фиксированное число inodes.

4️⃣ Файловые системы XFS:

Хотя он имеет более гибкую систему управления inodes, у нее также может возникнуть проблема с нехваткой inodes, если файловая система была создана с недостаточным числом inodes.

   -      mkfs.xfs -i maxpct=25 /dev/sdX1

Здесь -i maxpct=25 задает максимальный процент inodes от общего объема файловой системы.

🤔 Как проверить его использование

Для проверки текущего использования inodes можно использовать команду df с опцией -i:
df -i

Пример вывода:
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda1 1000000 50000 950000 5% /

Здесь видно, сколько inodes всего, сколько из них используется и сколько свободно.

🤔 Что происходит, когда inodes заканчиваются

Новые файлы и каталоги не могут быть созданы, даже если на диске еще есть свободное место. Это приводит к ошибкам при попытке создать новые файлы.

🤔 Как предотвратить или решить проблему

1️⃣ Планирование при создании файловой системы:

При создании файловой системы необходимо учитывать предполагаемое количество файлов и каталогов, чтобы выбрать достаточное число inodes.

2️⃣ Мониторинг использования inodes:

Регулярное мониторинг использования inodes позволяет вовремя обнаружить проблему.

3️⃣ Ресайзинг файловой системы (если поддерживается):

Некоторые файловые системы позволяют изменить число inodes при изменении размера файловой системы.

4️⃣ Перемещение данных:

В случае нехватки inodes можно переместить данные на другой раздел или диск с достаточным числом inodes.

Inodes могут закончиться на файловых системах с фиксированным числом inodes, таких как ext2/ext3/ext4, UFS, HFS/HFS+, и XFS. Это ограничение можно избежать, правильно планируя создание файловой системы и мониторя использование inodes.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Какой из следующих инструментов не используется для непрерывной интеграции?
Anonymous Quiz
10%
Jenkins
15%
GitLab CI/CD
12%
Bamboo
62%
Apache
📌 Что такое провайдеры в Terraform ?

💬 Спрашивают в 13% собеседований

Провайдеры в Terraform — это плагины, которые позволяют Terraform взаимодействовать с различными облачными платформами, сервисами и другими API. Они определяют наборы ресурсов и операций для взаимодействия с этими сервисами. Каждый провайдер управляет одной или несколькими службами и абстрагирует детали API, предоставляя удобный способ управления инфраструктурой.

Основные функции

1️⃣ Определение ресурсов:

Провайдеры определяют типы ресурсов, с которыми можно работать. Например, провайдер для AWS позволяет управлять EC2-инстансами, S3-бакетами и другими сервисами AWS.

2️⃣ Интерфейс для API:

Провайдеры обеспечивают взаимодействие с API целевого сервиса. Они обрабатывают запросы и ответы, управляя состоянием ресурсов в соответствии с конфигурацией Terraform.

3️⃣ Поддержка аутентификации:

Провайдеры обычно предоставляют механизмы для аутентификации и авторизации при доступе к сервисам.

1️⃣ Конфигурация провайдера:

Для начала работы с провайдером необходимо его сконфигурировать в файле конфигурации Terraform. Обычно это делается в файле main.tf.
      provider "aws" {
region = "us-west-2"
access_key = "your-access-key"
secret_key = "your-secret-key"
}


В этом примере настраивается провайдер AWS с указанием региона и учетных данных.

2️⃣ Определение ресурсов:

После конфигурации провайдера можно определять ресурсы, которые будут управляться с его помощью.
      resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"

tags = {
Name = "example-instance"
}
}


В этом примере создается EC2-инстанс в AWS.

🤔 Как они работают

1️⃣ Инициализация:

Когда вы запускаете terraform init, Terraform загружает и инициализирует провайдеры, указанные в конфигурации.

2️⃣ Конфигурация:

Провайдеры конфигурируются с помощью блока provider, где указываются необходимые параметры, такие как учетные данные и регион.

3️⃣ Создание и управление ресурсами:

При выполнении команд terraform apply или terraform plan Terraform взаимодействует с провайдерами для создания, изменения или удаления ресурсов в соответствии с конфигурацией.
provider "aws" {
region = "us-west-2"
}

resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"

tags = {
Name = "example-instance"
}
}


В этом примере провайдер AWS конфигурируется для использования региона us-west-2, и затем создается EC2-инстанс с указанными параметрами.

Провайдеры в Terraform — это плагины, которые позволяют взаимодействовать с различными облачными платформами и сервисами, определяя ресурсы и операции для управления ими.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Чем DevOps отличается от Agile ?

💬 Спрашивают в 13% собеседований

DevOps и Agile — это два различных подхода к разработке и доставке программного обеспечения, хотя они часто используются вместе. Оба подхода имеют свои цели и методы, которые могут дополнять друг друга, но фокусируются на разных аспектах разработки.

🤔 Agile

Это методология разработки программного обеспечения, которая акцентирует внимание на гибкости, скорости и итеративном подходе к разработке. Основные принципы Agile изложены в Манифесте Agile, который включает четыре ключевых ценности и двенадцать принципов.

🤔 Основные характеристики:

1️⃣ Итеративный и инкрементальный подход:

Проект делится на небольшие итерации, каждая из которых заканчивается выпуском работающего программного продукта.

2️⃣ Коллективная работа и коммуникация:

Акцент на тесное взаимодействие между членами команды и с заказчиком.

3️⃣ Адаптивное планирование:

Возможность быстро адаптироваться к изменениям требований в ходе проекта.

4️⃣ Постоянное улучшение:

Регулярные ретроспективы для анализа и улучшения процесса разработки.

🤔 Примеры:

Scrum: Подход, основанный на спринтах, регулярных встречах (ежедневные stand-up, спринт-планирование, ретроспективы) и определенных ролях (Scrum Master, Product Owner, команда разработки).

Kanban: Метод, ориентированный на визуализацию рабочего процесса и управление потоком задач.

🤔 DevOps

Это культурный и методологический подход, направленный на интеграцию и сотрудничество между командами разработки (Dev) и эксплуатации (Ops) для более быстрой и надежной доставки программного обеспечения.

🤔 Основные характеристики:

1️⃣ Автоматизация:

Автоматизация процессов сборки, тестирования, развертывания и мониторинга.

2️⃣ Непрерывная интеграция и доставка (CI/CD):

Практика частой интеграции кода и его автоматического развертывания на различных средах (разработка, тестирование, продакшн).

3️⃣ Инфраструктура как код (IaC):

Управление инфраструктурой через код для обеспечения репликации и масштабирования сред.

4️⃣ Мониторинг и логирование:

Постоянный мониторинг приложений и инфраструктуры для быстрого обнаружения и устранения проблем.

5️⃣ Культурное изменение:

Сдвиг в культуре организации для улучшения сотрудничества между командами разработки и эксплуатации.

🤔 Примеры:

Jenkins: Инструмент для автоматизации CI/CD

Docker: Платформа для контейнеризации приложений.

Kubernetes: Система оркестрации контейнеров.

Terraform: Инструмент для управления инфраструктурой как кодом.

Prometheus и Grafana: Инструменты для мониторинга и визуализации данных.

🤔 Основные различия

1️⃣ Фокус:

Agile: Сосредоточен на процессе разработки и управлении изменениями требований через итерации и инкременты.

DevOps: Сосредоточен на всей цепочке создания стоимости — от разработки до развертывания и эксплуатации, обеспечивая быструю и стабильную доставку программного обеспечения.

2️⃣ Команды и роли:

Agile: Включает роли, такие как Product Owner, Scrum Master и команда разработки.

DevOps: Включает разработчиков, специалистов по эксплуатации, инженеров по автоматизации и других, кто работает над интеграцией и доставкой.

3️⃣ Процессы и инструменты:

Agile: Использует методологии, такие как Scrum и Kanban, для управления процессом разработки.

DevOps: Использует инструменты и практики для автоматизации и мониторинга всего жизненного цикла приложения.

🤔 Как они могут работать вместе

Agile может быть использован для управления процессом разработки, разбивая работу на спринты и обеспечивая тесное взаимодействие внутри команды.

DevOps может быть использован для автоматизации процессов, развертывания и мониторинга, обеспечивая быструю и надежную доставку программного обеспечения.

Agile — это методология разработки, фокусирующаяся на итеративном подходе и гибкости, а DevOps — это культурный и методологический подход, направленный на интеграцию разработки и эксплуатации для обеспечения быстрой и надежной доставки программного обеспечения.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🤔 Какой из следующих инструментов часто используется для автоматизации развертывания?
Anonymous Quiz
63%
Puppet
31%
Docker
4%
Nagios
2%
Grafana
📌 В чем заключается роль DevOps \SRE\IE?

💬 Спрашивают в 13% собеседований

Роль DevOps, SRE (Site Reliability Engineering) и IE (Infrastructure Engineering) имеет много общего, но также включает специфические задачи и фокус в каждой области. Давайте рассмотрим каждую из них:

🤔 DevOps

🤔 Задачи и обязанности:

1️⃣ Автоматизация и интеграция: Разработка и внедрение CI/CD (Continuous Integration/Continuous Deployment) процессов для автоматизации развертывания приложений.

2️⃣ Мониторинг и логирование: Настройка систем мониторинга и логирования для отслеживания состояния систем и приложений.

3️⃣ Сотрудничество: Работа в тесной связке с командами разработчиков и операционных инженеров для обеспечения гладкой и быстрой доставки приложений.

4️⃣ Инфраструктура как код: Использование инструментов, таких как Terraform или Ansible, для автоматизации развертывания и управления инфраструктурой.

🤔 Почему это важно:

DevOps помогает ускорить выпуск программного обеспечения, повысить его качество и снизить риски за счет автоматизации и тесной интеграции процессов разработки и операций.

🤔 SRE (Site Reliability Engineering)

Задачи и обязанности:

1️⃣ Надежность и производительность: Обеспечение высокой доступности и производительности систем и приложений.

2️⃣ Инцидент-менеджмент: Обнаружение, расследование и устранение инцидентов, связанных с доступностью или производительностью.

3️⃣ SLA и SLO: Установление и соблюдение соглашений об уровне обслуживания (SLA) и целевых уровней обслуживания (SLO).

4️⃣ Автоматизация и инструментирование: Разработка инструментов для автоматизации процессов и улучшения надежности систем.

🤔 Почему это важно:

SRE фокусируется на обеспечении стабильной и предсказуемой работы систем, что критично для поддержания доверия пользователей и минимизации времени простоя.

🤔 IE (Infrastructure Engineering)

🤔 Задачи и обязанности:

1️⃣ Проектирование и развертывание: Проектирование, развертывание и поддержка физической и виртуальной инфраструктуры.

2️⃣ Сетевая архитектура: Настройка и управление сетями, включая маршрутизацию, балансировку нагрузки и безопасность.

3️⃣ Облачные решения: Работа с облачными провайдерами (AWS, Azure, GCP) для создания и поддержки облачной инфраструктуры.

4️⃣ Оптимизация: Постоянное улучшение и оптимизация существующей инфраструктуры для повышения производительности и эффективности.

🤔 Почему это важно:

IE отвечает за создание надежной и масштабируемой инфраструктуры, что является основой для работы всех приложений и сервисов компании.

🤔 Примеры кода и инструментов

🤔 Пример CI/CD пайплайна с использованием Jenkins:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh 'make build'
}
}
stage('Test') {
steps {
echo 'Testing...'
sh 'make test'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
sh 'make deploy'
}
}
}
}


🤔 Пример Terraform кода для создания виртуальной машины в AWS:
provider "aws" {
region = "us-west-2"
}

resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"

tags = {
Name = "example-instance"
}
}


🤔 Резюме

1️⃣ DevOps: Автоматизирует и интегрирует процессы разработки и развертывания.

2️⃣ SRE: Обеспечивает надежность и производительность систем.

3️⃣ IE: Проектирует и поддерживает инфраструктуру.

Для ребенка: DevOps помогает программам быстро работать, SRE следит, чтобы они не ломались, а IE строит и поддерживает компьютеры и сети для этих программ.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
📌 Чем gitlab ci артефакты отличаются от кэша как атрибуты джобы?

💬 Спрашивают в 13% собеседований

GitLab CI/CD предлагает два механизма для управления временными файлами, которые создаются и используются во время выполнения пайплайна: артефакты (artifacts) и кэш (cache). Они служат разным целям и имеют различные характеристики.

🤔 Артефакты (Artifacts)

Задачи и характеристики:

1️⃣ Временные файлы: Артефакты представляют собой временные файлы, созданные в процессе выполнения job (задания), которые сохраняются и могут быть использованы на следующих этапах пайплайна.

2️⃣ Срок хранения: Артефакты могут храниться на протяжении определенного времени, указанного в конфигурации (по умолчанию 30 дней).

3️⃣ Примеры использования: Компиляционные артефакты, такие как бинарные файлы, отчеты о тестировании, логи и артефакты для развертывания.

4️⃣ Доступ: Артефакты доступны только для последующих заданий в том же пайплайне или через веб-интерфейс GitLab.

5️⃣ Конфигурация: Определяются с помощью ключа artifacts в .gitlab-ci.yml файле.

Пример конфигурации артефактов:
job1:
script:
- make build
artifacts:
paths:
- build/
expire_in: 1 week


🤔 Кэш (Cache)

Задачи и характеристики:

1️⃣ Ускорение сборки: Кэш используется для ускорения сборок, сохраняя промежуточные файлы или зависимости между различными запусками пайплайнов.

2️⃣ Долгосрочное хранение: Кэш сохраняется в течение длительного времени, часто используется для кеширования зависимостей, таких как библиотеки или модули.

3️⃣ Примеры использования: Директории с зависимостями (например, node_modules для Node.js или vendor для PHP), промежуточные результаты сборок.

4️⃣ Доступ: Кэш доступен для всех пайплайнов и заданий в проекте, а не только для текущего пайплайна.

5️⃣ Конфигурация: Определяется с помощью ключа cache в .gitlab-ci.yml файле.

Пример конфигурации кэша:
job1:
script:
- npm install
cache:
paths:
- node_modules/

job2:
script:
- npm test
cache:
paths:
- node_modules/


🤔 Ключевые различия

1️⃣ Назначение: Артефакты предназначены для передачи файлов между заданиями в одном пайплайне, тогда как кэш используется для хранения файлов и данных, которые могут быть использованы в различных пайплайнах и заданиях для ускорения сборок.

2️⃣ Срок хранения: Артефакты имеют ограниченный срок хранения (обычно указывается), тогда как кэш может существовать дольше, и его срок хранения часто определяется политиками очистки.

3️⃣ Доступ: Артефакты доступны только в рамках текущего пайплайна, в то время как кэш доступен между разными пайплайнами и заданиями.

🤔 Резюме

1️⃣ Артефакты используются для передачи файлов между заданиями в одном пайплайне.

2️⃣ Кэш используется для ускорения сборок, сохраняя файлы и данные между разными пайплайнами.

Для ребенка: Артефакты — это как временные коробки, которые ты передаешь друзьям, когда работаешь над проектом. Кэш — это как шкафчик, где ты хранишь вещи, чтобы они были под рукой в следующий раз, когда будешь работать над проектом.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
📌 В чём основное преимущество systemd?

💬 Спрашивают в 13% собеседований

Основное преимущество systemd по сравнению с традиционными системами инициализации, такими как SysV init и Upstart, заключается в его расширенных функциональных возможностях и улучшенной производительности. Вот несколько ключевых аспектов, которые делают systemd более предпочтительным:

1️⃣ Параллельный запуск сервисов

Что это:
systemd позволяет запускать службы параллельно, в то время как SysV init запускает их последовательно.

Почему это важно:
Параллельный запуск значительно ускоряет время загрузки системы, что особенно важно для серверов и рабочих станций с большим количеством сервисов.

2️⃣ Упрощённое управление зависимостями

Что это:
systemd автоматически определяет и управляет зависимостями между службами, используя унифицированный формат конфигурации.

Почему это важно:
Это снижает вероятность ошибок конфигурации и облегчает управление службами, так как все зависимости четко определены и отслеживаются.

3️⃣ Мониторинг и управление сервисами

Что это:
systemd предоставляет встроенные механизмы для мониторинга состояния служб, их перезапуска при сбоях и сбора логов.

Почему это важно:
Это повышает надежность системы, так как службы автоматически перезапускаются в случае сбоев, а администратор может легко отслеживать их состояние и получать диагностическую информацию.

4️⃣ Удобные конфигурационные файлы

Что это:
systemd использует простые и читаемые файлы конфигурации в формате INI для определения служб и их параметров.

Почему это важно:
Эти файлы легко редактировать и понимать, что упрощает настройку и управление службами для администраторов.

5️⃣ Поддержка современных функций

Что это:
systemd поддерживает множество современных функций, таких как cgroups для управления ресурсами, таймеры для замены cron-джобов и сокет-активацию для запуска служб по запросу.

Почему это важно:
Эти функции позволяют более гибко и эффективно управлять ресурсами системы, автоматизировать задачи и улучшать общую производительность.

🤔 Примеры использования

🤔 Пример файла сервиса systemd:
[Unit]
Description=My Example Service
After=network.target

[Service]
ExecStart=/usr/bin/myservice
Restart=always

[Install]
WantedBy=multi-user.target


Этот файл конфигурации определяет сервис, который будет запускаться после сети и автоматически перезапускаться в случае сбоя.

🤔 Резюме

1️⃣ systemd запускает службы параллельно, что ускоряет загрузку системы.

2️⃣ systemd управляет зависимостями между службами, упрощая их настройку и управление.

3️⃣ systemd предоставляет встроенные механизмы для мониторинга и управления службами.

4️⃣ systemd использует удобные конфигурационные файлы.

5️⃣ systemd поддерживает современные функции для улучшения производительности и гибкости системы.

Для ребенка: systemd — это как умный помощник, который помогает компьютеру быстро включаться, следит за его программами и автоматически чинит их, если они сломаются.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
5
📌 Что хранится в etc fstab?

💬 Спрашивают в 13% собеседований

Файл /etc/fstab (файловая таблица файловых систем) содержит информацию о файловых системах и устройствах, которые должны быть автоматически подключены (монтированы) при загрузке системы или вручную. Этот файл является важным компонентом конфигурации системы, поскольку он определяет, какие разделы и устройства будут доступны при запуске операционной системы.

🤔 Основные поля в `/etc/fstab`

Каждая строка в /etc/fstab описывает одну файловую систему и содержит следующие поля:

1️⃣ Устройство (Device): Указывает, какое устройство или раздел должно быть подключено. Это может быть обозначение устройства (например, /dev/sda1), UUID или метка (label) файловой системы.

2️⃣ Точка монтирования (Mount Point): Директория, в которую будет монтироваться файловая система (например, /, /home, /mnt/data).

3️⃣ Файловая система (File System Type): Тип файловой системы (например, ext4, xfs, swap).

4️⃣ Параметры монтирования (Mount Options): Дополнительные параметры монтирования, которые определяют, как файловая система будет использоваться (например, defaults, ro для только чтения, noatime для отключения обновления времени доступа).

5️⃣ Dump: Поле, указывающее, будет ли файловая система использоваться для создания резервных копий утилитой dump. Значение 0 означает, что резервное копирование отключено, 1 — включено.

6️⃣ Порядок проверки (Pass): Определяет порядок проверки файловых систем при загрузке. Значение 0 отключает проверку, 1 означает, что файловая система будет проверена первой (обычно корневая файловая система), 2 — проверка будет выполняться после первой.

🤔 Пример содержимого `/etc/fstab`
# <файл-система> <точка монтирования> <тип> <параметры> <dump> <pass>
UUID=123e4567-e89b-12d3-a456-426614174000 / ext4 defaults 1 1
/dev/sda1 /boot ext4 defaults 1 2
/dev/sda2 none swap sw 0 0
UUID=987f6543-c21b-34a5-6789-0b1234567890 /home ext4 defaults 0 2


🤔 Расшифровка примера:

1️⃣ UUID=123e4567-e89b-12d3-a456-426614174000 / ext4 defaults 1 1:
- Файловая система с указанным UUID будет смонтирована в корень (/).
- Используется файловая система ext4.
- Параметры монтирования defaults.
- Будет участвовать в резервном копировании (dump = 1).
- Будет проверена первой при загрузке (pass = 1).

2️⃣ /dev/sda1 /boot ext4 defaults 1 2:
- Раздел /dev/sda1 будет смонтирован в /boot.
- Используется файловая система ext4.
- Параметры монтирования defaults.
- Будет участвовать в резервном копировании (dump = 1).
- Будет проверена после корневой файловой системы (pass = 2).

3️⃣ /dev/sda2 none swap sw 0 0:
- Раздел /dev/sda2 используется как swap (файл подкачки).
- Не имеет точки монтирования.
- Параметры монтирования sw.
- Не участвует в резервном копировании (dump = 0).
- Не будет проверяться при загрузке (pass = 0).

4️⃣ UUID=987f6543-c21b-34a5-6789-0b1234567890 /home ext4 defaults 0 2:
- Файловая система с указанным UUID будет смонтирована в /home.
- Используется файловая система ext4.
- Параметры монтирования defaults.
- Не участвует в резервном копировании (dump = 0).
- Будет проверена после корневой файловой системы (pass = 2).

🤔 Резюме

Файл /etc/fstab содержит информацию о том, какие файловые системы и устройства нужно подключать при загрузке системы и как это делать.

Для ребенка: в файле /etc/fstab записано, какие "шкафчики" на компьютере нужно открыть при включении и куда их поставить, чтобы они были удобны для использования.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
📌 Как убить зомби процесс?

💬 Спрашивают в 13% собеседований

Зомби-процессы (zombie processes) — это процессы, которые завершили свое выполнение, но их записи в таблице процессов остаются, потому что их родительский процесс еще не вызвал системный вызов wait() для получения информации о завершении дочернего процесса. Зомби-процессы сами по себе не потребляют ресурсов CPU или памяти, но они занимают записи в таблице процессов, что может быть проблемой, если их накапливается слишком много.

🤔 Как обнаружить зомби-процессы

Вы можете использовать команду ps для обнаружения зомби-процессов. Например:
ps aux | grep Z


В выводе ps зомби-процессы будут помечены как Z в колонке состояния (STAT).

🤔 Удаление зомби-процессов

Так как зомби-процессы уже завершены, их нельзя убить с помощью команды kill, как это делается с обычными процессами. Вместо этого нужно воздействовать на их родительский процесс. Вот шаги, которые можно предпринять для удаления зомби-процессов:

1️⃣ Найти родительский процесс зомби-процесса

Сначала нужно найти PID родительского процесса. Используйте команду ps или pstree для этого:
ps -l


Вывод будет примерно следующим:
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
5 Z user 1234 5678 0 80 0 - 0 - ? 00:00:00 process_name


Здесь 5678 — это PID родительского процесса.

2️⃣ Перезапустить родительский процесс

Если родительский процесс важен и его нельзя завершить, попробуйте перезапустить его. Это может быть сделано командой kill -HUP:
sudo kill -HUP 5678


Сигнал HUP (hang up) обычно заставляет процесс перечитать свои конфигурационные файлы и может завершить зомби-процессы. Если это не сработает, можно попытаться перезапустить процесс вручную.

3️⃣ Завершить родительский процесс

Если перезапуск не помог, возможно, придется завершить родительский процесс. Сделайте это командой kill:
sudo kill 5678


Если родительский процесс отказывается завершаться, можно использовать kill -9, чтобы принудительно его завершить:
sudo kill -9 5678


Учтите, что завершение родительского процесса может повлиять на работу системы, если этот процесс выполняет важные функции.

4️⃣ Перезагрузка системы

В крайних случаях, если родительский процесс нельзя завершить, а зомби-процессы продолжают накапливаться, может потребоваться перезагрузка системы. Это гарантированно очистит все зомби-процессы:
sudo reboot


🤔 Резюме

Зомби-процессы возникают, когда родительский процесс не получает информацию о завершении дочернего процесса. Для их удаления нужно воздействовать на родительский процесс, перезапустив его или завершив, если это необходимо.

Для ребенка: зомби-процессы — это как призраки, которые остались после завершения работы программы. Чтобы избавиться от них, нужно "разбудить" или "убрать" их главного.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍31
📌 Как сирота отличается от зомби процесса?

💬 Спрашивают в 13% собеседований

Сиротские процессы (orphan processes) и зомби-процессы (zombie processes) — это два разных состояния процессов в операционной системе, которые связаны с завершением или отсутствием родительских процессов. Вот основные различия между ними:

🤔 Зомби-процесс

Определение:
Зомби-процесс — это процесс, который завершил свое выполнение, но его запись в таблице процессов все еще существует, потому что родительский процесс не вызвал системный вызов wait() для получения информации о завершении дочернего процесса.

Состояние:
- Процесс завершен, но его запись в таблице процессов остается, чтобы передать статус завершения родительскому процессу.
- В таблице процессов такой процесс отмечается буквой Z (zombie).

Влияние:
- Не использует ресурсы CPU или памяти, но занимает запись в таблице процессов.
- Может стать проблемой, если накапливается много зомби-процессов, так как количество записей в таблице процессов ограничено.

Устранение:
- Родительский процесс должен вызвать wait() или waitpid(), чтобы убрать запись зомби-процесса.
- Если родительский процесс не справляется с этой задачей, его можно перезапустить или завершить.

🤔 Сиротский процесс

Определение:
Сиротский процесс — это процесс, у которого родительский процесс завершился до его завершения. В этом случае сиротский процесс "усыновляется" процессом init (обычно PID 1).

Состояние:
- Процесс продолжает выполняться, но его родительский процесс завершен.
- В таблице процессов он получает нового родителя — процесс init.

Влияние:
- Сиротские процессы продолжают выполняться и использовать ресурсы системы (CPU, память и т.д.).
- Не представляют особой проблемы для системы, так как процесс init корректно завершает их при их завершении.

Устранение:
- Процесс продолжается до своего нормального завершения, после чего его "усыновляет" процесс init и корректно завершает.
- Специальные меры для устранения сиротских процессов обычно не требуются.

🤔 Примеры и сравнение

🤔 Зомби-процесс:

1️⃣ Процесс child завершился.

2️⃣ Родительский процесс parent не вызвал wait().

3️⃣ Процесс child становится зомби и остается в таблице процессов, ожидая, пока parent получит статус завершения.
ps aux | grep Z


🤔 Сиротский процесс:

1️⃣ Процесс parent завершился.

2️⃣ Процесс child продолжает выполняться.

3️⃣ Процесс child усыновляется процессом init.
ps -ef | grep child


🤔 Резюме

1️⃣ Зомби-процесс — это процесс, который завершился, но еще не был убран из таблицы процессов, потому что его родительский процесс не вызвал wait().

2️⃣ Сиротский процесс — это процесс, который продолжает выполняться после завершения его родительского процесса и усыновляется процессом init.

Для ребенка: зомби-процесс — это как призрак программы, которая закончила работать, но еще не исчезла полностью. Сиротский процесс — это как ребенок, чьи родители ушли, и теперь за ним присматривает другой взрослый (процесс init).

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
3👾2🤯1
📌 Как работает https?

💬 Спрашивают в 13% собеседований

HTTPS (Hypertext Transfer Protocol Secure) — это расширение HTTP (Hypertext Transfer Protocol), которое добавляет уровень безопасности с использованием протоколов SSL (Secure Sockets Layer) или более современного TLS (Transport Layer Security). HTTPS обеспечивает конфиденциальность, целостность данных и аутентификацию между веб-клиентом (обычно браузером) и веб-сервером. Вот как работает HTTPS:

🤔 Основные шаги работы HTTPS

1️⃣ Инициация соединения

2️⃣ SSL/TLS рукопожатие

3️⃣ Установление защищенного соединения

4️⃣ Обмен данными

🤔 Инициация соединения

Когда пользователь вводит URL, начинающийся с https://, браузер инициирует соединение с веб-сервером через порт 443 (по умолчанию для HTTPS).

🤔 SSL/TLS рукопожатие

Рукопожатие SSL/TLS — это процесс установления защищенного соединения. Оно включает несколько шагов:

a. Клиентское приветствие (Client Hello)

Браузер отправляет сообщение Client Hello, содержащее:
- Версию SSL/TLS, которую поддерживает браузер.
- Набор поддерживаемых шифров (cipher suites).
- Случайное число (random number), которое используется для создания ключей шифрования.

b. Серверное приветствие (Server Hello)

Сервер отвечает сообщением Server Hello, содержащим:
- Версию SSL/TLS, выбранную сервером.
- Выбранный шифр.
- Случайное число сервера.

c. Сертификат сервера (Server Certificate)

Сервер отправляет свой цифровой сертификат, который содержит:
- Публичный ключ сервера.
- Информацию о сервере.
- Подпись удостоверяющего центра (CA), который выдал сертификат.

Браузер проверяет сертификат, чтобы удостовериться, что он подлинный и действительно принадлежит запрашиваемому серверу.

d. Ключевое сообщение (Key Exchange)

Браузер создает премастер-секрет (pre-master secret), шифрует его с использованием публичного ключа сервера и отправляет его серверу. Сервер расшифровывает премастер-секрет с использованием своего приватного ключа.

e. Генерация мастер-ключа (Master Secret)

И браузер, и сервер используют премастер-секрет и случайные числа, обмененные ранее, чтобы генерировать симметричный мастер-ключ, который будет использоваться для шифрования данных.

f. Завершение рукопожатия (Finish Handshake)

Обе стороны отправляют друг другу сообщение о завершении рукопожатия, зашифрованное с использованием симметричного ключа, чтобы удостовериться, что обе стороны правильно установили защищенное соединение.

3️⃣ Установление защищенного соединения

После успешного завершения рукопожатия создается защищенное соединение, используя симметричный ключ, который обеспечивает шифрование и дешифрование данных.

4️⃣ Обмен данными

Теперь все данные, передаваемые между браузером и сервером, шифруются с использованием симметричного ключа. Это обеспечивает:
- Конфиденциальность: Данные зашифрованы, что предотвращает их чтение третьими лицами.
- Целостность данных: Любые изменения данных в процессе передачи будут обнаружены.
- Аутентификация: Удостоверяет, что данные передаются между подлинным клиентом и сервером.

🤔 Резюме

1️⃣ HTTPS — это безопасная версия HTTP, использующая SSL/TLS для защиты данных.

2️⃣ Рукопожатие SSL/TLS включает обмен сертификатами и создание симметричного ключа для шифрования данных.

3️⃣ Обмен данными после установления соединения зашифрован и защищен.

Для ребенка: HTTPS — это как секретный код, который ты и твой друг используете для обмена сообщениями, чтобы никто другой не мог их прочитать или изменить.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3