Сиротские процессы (orphan processes) и зомби-процессы (zombie processes) — это два разных состояния процессов в операционной системе, которые связаны с завершением или отсутствием родительских процессов. Вот основные различия между ними:
Определение:
Зомби-процесс — это процесс, который завершил свое выполнение, но его запись в таблице процессов все еще существует, потому что родительский процесс не вызвал системный вызов
wait()
для получения информации о завершении дочернего процесса.Состояние:
- Процесс завершен, но его запись в таблице процессов остается, чтобы передать статус завершения родительскому процессу.
- В таблице процессов такой процесс отмечается буквой
Z
(zombie).Влияние:
- Не использует ресурсы CPU или памяти, но занимает запись в таблице процессов.
- Может стать проблемой, если накапливается много зомби-процессов, так как количество записей в таблице процессов ограничено.
Устранение:
- Родительский процесс должен вызвать
wait()
или waitpid()
, чтобы убрать запись зомби-процесса.- Если родительский процесс не справляется с этой задачей, его можно перезапустить или завершить.
Определение:
Сиротский процесс — это процесс, у которого родительский процесс завершился до его завершения. В этом случае сиротский процесс "усыновляется" процессом
init
(обычно PID 1).Состояние:
- Процесс продолжает выполняться, но его родительский процесс завершен.
- В таблице процессов он получает нового родителя — процесс
init
.Влияние:
- Сиротские процессы продолжают выполняться и использовать ресурсы системы (CPU, память и т.д.).
- Не представляют особой проблемы для системы, так как процесс
init
корректно завершает их при их завершении.Устранение:
- Процесс продолжается до своего нормального завершения, после чего его "усыновляет" процесс
init
и корректно завершает.- Специальные меры для устранения сиротских процессов обычно не требуются.
child
завершился.parent
не вызвал wait()
.child
становится зомби и остается в таблице процессов, ожидая, пока parent
получит статус завершения.ps aux | grep Z
parent
завершился.child
продолжает выполняться.child
усыновляется процессом init
.ps -ef | grep child
wait()
.init
.Для ребенка: зомби-процесс — это как призрак программы, которая закончила работать, но еще не исчезла полностью. Сиротский процесс — это как ребенок, чьи родители ушли, и теперь за ним присматривает другой взрослый (процесс
init
).Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👾2🤯1
HTTPS (Hypertext Transfer Protocol Secure) — это расширение HTTP (Hypertext Transfer Protocol), которое добавляет уровень безопасности с использованием протоколов SSL (Secure Sockets Layer) или более современного TLS (Transport Layer Security). HTTPS обеспечивает конфиденциальность, целостность данных и аутентификацию между веб-клиентом (обычно браузером) и веб-сервером. Вот как работает HTTPS:
Когда пользователь вводит URL, начинающийся с
https://
, браузер инициирует соединение с веб-сервером через порт 443 (по умолчанию для HTTPS).Рукопожатие 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)
Обе стороны отправляют друг другу сообщение о завершении рукопожатия, зашифрованное с использованием симметричного ключа, чтобы удостовериться, что обе стороны правильно установили защищенное соединение.
После успешного завершения рукопожатия создается защищенное соединение, используя симметричный ключ, который обеспечивает шифрование и дешифрование данных.
Теперь все данные, передаваемые между браузером и сервером, шифруются с использованием симметричного ключа. Это обеспечивает:
- Конфиденциальность: Данные зашифрованы, что предотвращает их чтение третьими лицами.
- Целостность данных: Любые изменения данных в процессе передачи будут обнаружены.
- Аутентификация: Удостоверяет, что данные передаются между подлинным клиентом и сервером.
Для ребенка: HTTPS — это как секретный код, который ты и твой друг используете для обмена сообщениями, чтобы никто другой не мог их прочитать или изменить.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Anonymous Quiz
83%
Инфраструктура, которая никогда не изменяется после развертывания
9%
Инфраструктура, которая автоматически обновляется
6%
Инфраструктура, которая всегда тестируется перед развертыванием
2%
Инфраструктура, которая развертывается только вручную
🔥1
Inode (индексный узел) — это структура данных в файловой системе UNIX и UNIX-подобных систем, которая хранит информацию о файле или директории. Каждому файлу и директории в файловой системе соответствует уникальный inode. Inode не содержит имени файла, но хранит метаданные и информацию, необходимую для управления файлами.
Метаданные в inode:
ls -i filename
Вывод покажет номер inode, связанный с
filename
.123456 filename
Здесь
123456
— номер inode, связанный с файлом filename
.Inode — это структура данных, которая хранит информацию о файле, такую как размер, права доступа, временные метки и указатели на блоки данных. Это помогает эффективно управлять файлами, поддерживать жесткие ссылки, обеспечивать безопасность и улучшать производительность файловой системы.
Для ребенка: inode — это как карточка в библиотеке, которая содержит информацию о книге, например, где она находится на полке, кто ее автор и сколько страниц в книге.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Anonymous Quiz
13%
Тестирование и обеспечение качества выполняется позже в процессе разработки
64%
Тестирование и обеспечение качества перемещается на более ранние стадии разработки
15%
Развертывание кода переносится на более поздний этап
7%
Разработка кода выполняется после тестирования
🔥3
Dockerfile – это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки образа Docker. Эта инструкция обязательна, так как она определяет базовый (родительский) образ, от которого будет строиться ваш собственный образ.
Указывает на базовый образ, который используется для сборки нового образа Docker. Без этой инструкции Docker не сможет определить, с какого состояния начать сборку, и, соответственно, сборка образа будет невозможна.
# Использование официального образа Python 3.8 как базового
FROM python:3.8
FROM
выполняет несколько ключевых функций:Использование
FROM
позволяет существенно упростить процесс создания Docker-образов, избегая лишней работы по настройке и подготовке окружения. Также это обеспечивает стандартизацию и воспроизводимость среды, что критически важно в разработке программного обеспечения.FROM
– это первая и обязательная инструкция в любом Dockerfile, которая определяет базовый образ для вашего Docker-образа. Это как фундамент дома: без него нельзя построить стены и крышу.Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👀1
Anonymous Quiz
35%
Selenium
16%
JUnit
35%
OWASP ZAP
14%
Nagios
В Dockerfile две важные инструкции, которые определяют, какой исполняемый файл будет запущен при старте контейнера, это
CMD
и ENTRYPOINT
. Хотя обе инструкции выглядят похожими, между ними есть ключевые отличия в поведении и назначении.Задает команду и её аргументы по умолчанию, которые будут выполнены при запуске контейнера. Однако, если при запуске контейнера указаны любые другие команды, они заменят команду, заданную через него. Это делает его идеальным выбором для задания параметров по умолчанию, которые могут быть переопределены пользователем при запуске контейнера.
FROM ubuntu
CMD ["echo", "Hello, world!"]
При запуске этого контейнера без дополнительных параметров, будет выведено "Hello, world!". Но если при запуске указать другую команду, например
docker run <image> echo "Hello, Docker!"
, то будет выведено "Hello, Docker!".Конфигурирует контейнер так, что он будет запущен как исполняемый файл. Аргументы, указанные при запуске контейнера, передаются в него как дополнительные аргументы. Это означает, что команда, заданная в него, не заменяется, а дополняется аргументами, указанными при запуске контейнера.
FROM ubuntu
ENTRYPOINT ["echo", "Hello,"]
CMD ["world!"]
Здесь, если контейнер запущен без дополнительных аргументов, вывод будет "Hello, world!". Если же запустить контейнер с дополнительными аргументами, например
docker run <image> Docker
, то вывод будет "Hello, Docker".CMD
может быть полностью переопределена при запуске контейнера, в то время как ENTRYPOINT
предопределяет базовую команду, и любые аргументы, указанные при запуске, добавляются к этой команде.ENTRYPOINT
используется в комбинации с CMD
, где ENTRYPOINT
задает исполняемый файл, а CMD
задает аргументы по умолчанию, которые могут быть переопределены при запуске.CMD
и ENTRYPOINT
обе определяют, какая команда будет выполнена при запуске Docker-контейнера, но делают это по-разному. CMD
лучше использовать для задания параметров по умолчанию, которые могут быть изменены, а ENTRYPOINT
для установки фиксированной базовой команды, к которой можно добавлять аргументы.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤2👍2
Anonymous Quiz
3%
Хранилище исходного кода
92%
Хранилище артефактов, созданных в процессе сборки
1%
Хранилище данных мониторинга
3%
Хранилище конфигурационных файлов
🔥1
Swap (подкачка) — это область на жёстком диске или другом носителе данных, используемая операционной системой как виртуальная память. Swap предназначен для того, чтобы компенсировать нехватку оперативной памяти (RAM) путём перемещения частей данных из RAM на диск, что позволяет освободить RAM для новых задач. Это особенно актуально в ситуациях, когда приложения требуют больше памяти, чем физически доступно в системе.
Когда операционная система исчерпывает доступную RAM, она начинает использовать swap-пространство для хранения данных, которые редко используются. Доступ к данным на жёстком диске медленнее, чем к данным в RAM, поэтому использование swap может снизить производительность системы. Однако наличие swap может предотвратить завершение работы приложений или системы из-за нехватки памяти.
Зависит от конкретных условий использования и конфигурации системы:
Swap — важный элемент системы, который может улучшить её стабильность и надёжность, особенно в условиях ограниченного объёма оперативной памяти. Однако его использование должно быть сбалансировано с учётом потребностей приложений и характеристик системы, чтобы минимизировать возможное снижение производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Anonymous Quiz
86%
Методика тестирования, при которой преднамеренно вводятся сбои в систему для проверки устойчивости
1%
Методика создания резервных копий данных
11%
Методика развертывания кода без тестирования
2%
Методика оптимизации производительности приложений
DevOps — это культурная и профессиональная философия, объединяющая разработку ПО (Dev) и операционную деятельность (Ops), направленная на улучшение сотрудничества и продуктивности путём автоматизации инфраструктуры, рабочих процессов и непрерывного измерения производительности приложений и услуг. Это практика, которая стремится к ускорению процесса разработки программного обеспечения и повышению надёжности выпускаемых продуктов.
DevOps — это не просто набор инструментов, это подход к организации рабочего процесса, который делает упор на сотрудничество, автоматизацию и непрерывное улучшение. Цель — сделать процесс разработки, тестирования и выпуска программного обеспечения быстрее, менее болезненным и более предсказуемым.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Anonymous Quiz
3%
Управление контейнерами
86%
Автоматизация CI/CD процессов
3%
Мониторинг производительности
9%
Управление конфигурацией
🔥3👍1
ELK — это аббревиатура, обозначающая популярную комбинацию трёх продуктов компании Elastic, которые вместе образуют мощную платформу для поиска, анализа и визуализации данных, особенно больших объёмов лог-данных или временных рядов. Эти три продукта — Elasticsearch, Logstash и Kibana — часто используются для мониторинга, безопасности и оперативного анализа данных.
Платформа ELK широко используется в самых разных отраслях для решения задач мониторинга, анализа логов безопасности, оптимизации бизнес-процессов и многого другого. Благодаря своей открытости и масштабируемости, она остаётся одним из самых популярных решений в области обработки и анализа больших данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Anonymous Quiz
1%
Создание инфраструктуры вручную
97%
Автоматизация создания и управления инфраструктурой с помощью программного кода
0%
Мониторинг приложений
2%
Управление конфигурацией серверов
🔥2
Протоколы HTTP (HyperText Transfer Protocol) и HTTPS (HyperText Transfer Protocol Secure) являются основными протоколами для передачи данных в интернете, особенно в веб-разработке. Они используются для загрузки веб-страниц с сервера на клиентский браузер. Основное отличие между HTTP и HTTPS заключается в уровне безопасности, которым обеспечивается передача данных.
Его использование стало обязательным стандартом для всех веб-сайтов, особенно тех, которые обрабатывают конфиденциальную информацию. Google и другие технологические компании активно продвигают использование HTTPS, включая его как фактор ранжирования в SEO, что означает, что сайты с HTTPS получают преимущества в поисковой выдаче по сравнению с сайтами, работающими только на HTTP.
Процесс начинается с TLS-рукопожатия:
Основное отличие между HTTP и HTTPS заключается в том, что HTTPS предоставляет безопасный канал для передачи данных, что особенно важно для конфиденциальной коммуникации в интернете.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾2👍1
Anonymous Quiz
5%
Jenkins
95%
Docker
0%
Git
1%
Prometheus
👍1
В Dockerfile две инструкции, позволяющие добавлять файлы из локальной файловой системы в файловую систему Docker образа, это
COPY
и ADD
. Хотя на первый взгляд они могут казаться похожими, между ними есть несколько важных отличий, которые определяют выбор в зависимости от ситуации.COPY
более простая и прямолинейная инструкция, используемая для копирования файлов и каталогов из контекста сборки в файловую систему образа Docker. COPY
принимает исходный путь и путь назначения внутри файловой системы образа. Она строго копирует файлы, сохраняя их точные метаданные, без какой-либо дополнительной интерпретации.COPY ./localfile.txt /directory/in/container/localfile.txt
ADD
обладает всеми возможностями COPY
, но также включает в себя дополнительную функциональность. Также может автоматически распаковывать локальные архивные файлы в целевой каталог образа. Кроме того, она поддерживает загрузку файлов из URL, что делает её более многофункциональной по сравнению с COPY
.ADD ./localarchive.tar.gz /directory/in/container/
И файлы из архива будут автоматически распакованы в указанную директорию.
COPY
просто копирует файлы и папки, в то время как ADD
имеет дополнительные функции, такие как распаковка архивов и возможность загрузки файлов из URL.COPY
, если не требуется функциональность распаковки архивов или загрузки из сети, так как COPY
более прозрачна и предсказуема.COPY
и ADD
используются для добавления файлов в образ Docker, но COPY
предпочтительнее для стандартных операций копирования из-за своей простоты и прозрачности. ADD
полезна, когда нужно воспользоваться её дополнительными возможностями, но её использование может привести к менее предсказуемому поведению, особенно при работе с внешними источниками.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Anonymous Quiz
2%
Непрерывное развертывание кода
0%
Непрерывное обновление документации
97%
Непрерывное отслеживание состояния приложений и инфраструктуры
1%
Непрерывное управление конфигурацией
Термины "Deployment" и "Delivery" часто используются в контексте процессов разработки ПО, особенно в рамках DevOps и непрерывных практик (CI/CD - Continuous Integration/Continuous Deployment или Continuous Delivery). Они имеют разные значения и цели в процессе доставки программного обеспечения.
Цель — сделать выпуск новых версий программного обеспечения более быстрым и предсказуемым, снизить риски и уменьшить усилия, связанные с развертыванием и выпуском новых функций.
Continuous Delivery гарантирует, что каждое изменение готово к развертыванию и может быть выпущено в любой момент, но не обязательно автоматически разворачивается. Автоматически развертывает каждое изменение, минимизируя задержки между разработкой и доступностью функций для пользователей. Обе практики направлены на ускорение и оптимизацию процессов разработки и выпуска программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Anonymous Quiz
3%
Grafana
4%
Docker
90%
Ansible
3%
ELK Stack