linux
Linux: операционная система
Ты умеешь работать в оболочке — теперь изучи систему под ней: как Linux загружается, запускает сервисы, управляет пользователями и хранилищем и как поддерживать его живым, когда он ломается.
Начать трек → 01
Что такое Linux
«Linux» — это ядро плюс пользовательское окружение, собранное дистрибутивом. Ядро владеет оборудованием и границей системных вызовов; всё выше него — включая состояние самой системы — это файл, который можно прочитать. 02
Загрузка и init
Linux-машина загружается по цепочке: прошивка → загрузчик → ядро → initramfs → PID 1. Затем PID 1 (systemd) выводит систему к нужной цели (target). Понимание этой цепочки — это ровно то, как ты чинишь машину, которая не загружается. 03
systemd и сервисы
systemd моделирует всю систему как набор юнитов с явными зависимостями. systemctl — то, чем ты их запускаешь, включаешь и осматриваешь, а unit-файл — то, как ты превращаешь собственный процесс в полноценный, контролируемый сервис. 04
Управление пакетами
Менеджер пакетов превращает «хочу nginx» в разрешённый, версионированный, удаляемый набор файлов вместе с зависимостями. apt — это front-end, dpkg — движок, и в каждом семействе дистрибутивов те же два слоя. 05
Пользователи, группы, PAM
Идентичность в Linux — это UID/GID, хранимые в passwd и shadow. Права выходят за пределы обычного rwx — setuid, setgid, sticky, ACL — а sudo и PAM образуют слой политики, решающий, кто кем может стать. 06
Файловые системы и монтирование
Блочное устройство содержит файловую систему; монтирование прививает эту файловую систему в единое дерево каталогов по заданному пути. fstab делает монтирование переживающим перезагрузку — а одна плохая строка в fstab — классический способ не пустить себя в систему при загрузке. 07
Хранилище и LVM
LVM вставляет слой между дисками и файловыми системами, чтобы расширять тома, делать снапшоты и объединять диски без переразбивки. RAID добавляет избыточность — а senior-навык в том, чтобы восстановить деградировавший массив, не потеряв данные. 08
Процессы и ресурсы
Процесс — это родословная fork/exec, которую ядро планирует и учитывает. Сигналы — то, чем ты с ним общаешься, cgroups и rlimits — то, чем ты его ограничиваешь, а OOM killer — то, что случается, если ты этого не сделал. 09
Сеть
Сеть хоста — это интерфейсы, таблица маршрутизации и путь разрешения имён. Современный набор ip/ss их показывает, а nftables/firewalld — это пакетный фильтр ядра, который ты настраиваешь; теория протоколов живёт в треке networking. 10
Логи и journald
journald — это структурированное хранилище логов системы; journalctl запрашивает их по юниту, времени и приоритету. Постоянные журналы и logrotate ограничивают историю — а чтение сбоя по логам в обратном порядке — ключевой навык оператора. 11
Планирование задач
Повторяющаяся работа выполняется через cron или systemd-таймеры. cron — переносимая классика; таймеры — нативный для systemd вариант с лучшим логированием и обработкой зависимостей; а «почему задача не запустилась?» — отдельный навык отладки. 12
Настройка ядра
Ядро открывает тысячи параметров через sysctl и подгружает поддержку оборудования и функций в виде модулей. Namespaces и cgroups — те же примитивы, из которых собраны контейнеры, и именно отсюда начинается трек Docker.Проекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
Архитектурные паттерны
Как структурировать приложение, чтобы оно переживало изменения — связность и зацепление, направление зависимостей, гексагональная и чистая архитектура, DDD, CQRS, event sourcing и декомпозиция монолита без превращения в распределённый монолит.