До этого мы ставили систему и щёлкали команды, не задумываясь, что происходит под капотом. Этот урок - карта. Не зубрёжка, а понимание: где живёт ядро, что такое процесс, почему служба запускается сама, куда положили твои файлы и как машина вообще доходит от кнопки питания до приглашения в терминале. Когда в голове есть эта карта, ты перестаёшь бояться слов "демон", "монтирование" и "systemd" и начинаешь понимать, что искать, когда что-то сломалось.

Как это работает
Представь Linux как здание с двумя этажами. Внизу - ядро (kernel). Это единственная программа, которая напрямую командует железом: процессором, памятью, диском, сетевой картой. Только ядро имеет право трогать оборудование, и работает оно в защищённом режиме (kernel space).
Сверху - пространство пользователя (user space). Здесь живут все остальные программы: твой браузер, командная оболочка, веб-сервер. Они не лезут к железу руками. Когда программе нужно прочитать файл или отправить пакет в сеть, она вежливо просит ядро через системный вызов (syscall). Ядро проверяет права и делает работу. Такое разделение - причина, почему один кривой процесс обычно не роняет всю систему.
Любая запущенная программа - это процесс. У каждого есть номер PID (уникальный идентификатор) и владелец. Процессы рождаются от других процессов, образуя дерево. Корень дерева в современной системе - systemd с PID 1, он запускается первым и порождает всё остальное.
Программы, которые работают в фоне без терминала и обслуживают систему (логирование, сеть, печать, веб-сервер), называют демонами или службами. Их запуском, остановкой и перезапуском заведует systemd - менеджер служб. Ты говоришь ему "подними nginx", а он сам разруливает зависимости и порядок.
Ядро общается с железом через модули - драйверы, которые подгружаются по мере необходимости. Воткнул USB-флешку - ядро подхватило нужный модуль, и устройство появилось в системе.
Файлы в Linux - это одно общее дерево, растущее из корня /. Никаких C: и D:, как в Windows. Диски, разделы и даже флешки подключаются (монтируются) в какую-то папку этого дерева. Структура папок стандартизирована (FHS), поэтому /etc означает настройки на любом дистрибутиве.
Команды и примеры
Посмотреть, кто ты и как зовётся машина:
Код: Выделить всё
whoami # имя текущего пользователя
hostname # сетевое имя машины
uname -a # ядро, версия, архитектура
Код: Выделить всё
ps aux # снимок всех процессов: владелец, PID, CPU, память
ps aux | grep ssh # найти процессы по имени
top # интерактивный монитор (выход - q)
Службы через systemd (команды одинаковы во всех дистрибутивах):
Код: Выделить всё
systemctl status sshd # состояние службы
systemctl start nginx # запустить
systemctl enable nginx # включить автозапуск при загрузке
journalctl -u nginx # логи именно этой службы
Код: Выделить всё
lsblk # диски и разделы деревом
lspci # устройства на шине PCI
lsmod # загруженные модули ядра
Код: Выделить всё
/ корень всего
/etc конфиги системы и служб
/home домашние папки пользователей
/var изменяемые данные: логи (/var/log), кеши
/usr установленные программы и их файлы
Debian 13 и Ubuntu 24.04 (менеджер apt):
Код: Выделить всё
sudo apt update # обновить список пакетов
sudo apt install htop # поставить пакет
Код: Выделить всё
sudo dnf install htop # dnf сам обновит метаданные
Код: Выделить всё
ip a # адреса всех интерфейсов
ip route # таблица маршрутизации (где шлюз)
- Ищут диски C: и D:. Их нет. Всё - одно дерево от /, а флешки и диски монтируются в папки. Смотри lsblk.
- Путают остановить и выключить службу. start/stop - прямо сейчас, на один сеанс. enable/disable - про автозапуск после перезагрузки. Это разные вещи, нужны обе.
- Пробуют kill процесса с PID 1. Это systemd, его так просто не убить, и не надо. Чини конкретную службу через systemctl.
- Учат команды из старых статей: service и yum. На современных системах это systemctl и dnf. Старое местами ещё работает как обёртка, но опирайся на новое.
- Правят файл в /usr или /var вместо /etc. Настройки служб почти всегда в /etc. В /var лежат логи и данные, которые система пишет сама.
- Лезут sudo куда попало. Системные команды (установка пакетов, управление службами) требуют прав, но свои файлы в /home трогай без sudo, иначе наставишь чужого владельца.
Сделай на своём стенде по шагам и просто посмотри на вывод, ничего ломать не нужно.
- Выполни uname -a и hostname. Найди в выводе версию ядра.
- Запусти ps aux и найди строку с PID 1. Убедись, что это systemd.
- Открой top, посмотри 10 секунд, кто ест больше всего CPU, нажми q.
- Сделай lsblk и нарисуй на бумаге, какие у тебя диски и разделы.
- Глянь systemctl status на любую службу (например ssh или cron) и пойми, running она или нет.
- Выполни ip a и найди свой IP-адрес в локальной сети.
- Чем kernel space отличается от user space и зачем вообще их разделять?
- Что такое PID и какой процесс имеет PID 1 в современной Linux?
- В чём разница между systemctl start и systemctl enable?
- В какой папке дерева лежат настройки служб, а в какой - логи?
- Какой командой ставят пакет в Ubuntu и какой - в Fedora?