Перейти к основному содержимому

Linux

Разработчику Архитектору Инженеру

Linux

Play ITЗагрузка интерактивного демо…

Что такое Linux? Вот что вам нужно знать:

  • это целое семейство;
  • они бесплатны;
  • они имеют открытый исходный код;
  • с технической точки зрения, Linux - это только ядро.

Linux — семейство открытых ОС на ядре Linux (Linux kernel), созданном Линусом Торвальдсом в 1991 году. В отличие от Windows и macOS, Linux не принадлежит одной компании: ядро и большинство компонентов развивает сообщество под лицензиями GPL и BSD.

Полноценная система — это дистрибутив: ядро + GNU-утилиты + init/systemd + графическая подсистема + пакетный менеджер. Сравнение с Windows — Сравнение Windows и Linux; основы UNIX — Основы UNIX-систем; полная хронология от Bell Labs до Android — История операционных систем.


История Linux и UNIX — кратко

Современный Linux — не «одна программа», а конец длинной цепочки:

  1. Multics (MIT, GE, Bell Labs) — слишком сложен; Bell Labs ушла из проекта.
  2. Unix (1969, Томпсон и Ритчи на PDP-7) — компактная альтернатива; C и конвейеры; ветви BSD и System V.
  3. IBM PC (1981) — Unix недоступен из-за монополии AT&T; победил MS-DOS → Windows.
  4. GNU (1983, Столлман) — свободные утилиты и GPL; своего ядра долго не было.
  5. MINIX (1987, Таненбаум) — учебная модель; вдохновила ядро Linux (1991, Торвальдс).
  6. GNU/Linux (1992+) — ядро + окружение GNU; серверы, облако, Android (через AOSP).
КтоВклад сегодня
Кен ТомпсонUnix, C (с Ритчи); язык Go в Google
Деннис РитчиЯзык C, ключевые части Unix
Билл ДжойBSD, vi
Ричард СтоллманGNU, GPL
Линус ТорвальдсЯдро Linux, координация разработки
Энди ТаненбаумMINIX, учебные ОС

Развёрнутая хронология с контекстом AT&T, NeXT, Android и развилкой IBM — в статье История операционных систем. Биография создателя, путь от MINIX до Git и масштаб влияния на отрасль — в Линус Торвальдс — ядро Linux и Git.

Внимание

Сейчас будет много новых терминов — FHS, systemd, DE, Wayland.

Мы даём обзор по аналогии с главой Windows; детали администрирования — в 2.06.


Компоненты

Основные компоненты Linux:

КомпонентПримерыРоль
ЯдроLinux 6.xCPU, память, I/O, драйверы, безопасность
Init / службыsystemd, OpenRCЗагрузка и фоновые демоны
Shell / CLIbash, zsh, fishКомандная строка
DE / GUIGNOME, KDE PlasmaРабочий стол, окна, настройки
Display serverWayland, X11Отрисовка окон и ввод
Пакетыapt, dnf, pacmanУстановка и обновление ПО

image-2.png

Ключевые термины

  • Подсистема — выделенный блок ядра или user space с чёткой зоной ответственности и стандартным интерфейсом для остальной ОС. Примеры — VFS (виртуальная файловая система), сетевая подсистема, udev (устройства и hotplug), графический стек Wayland/X11, подсистема ввода-вывода.
  • Драйвер — модуль, через который ядро управляет устройством: загружаемый модуль ядра (.ko в /lib/modules/), прошивка (/lib/firmware/) или userspace-драйвер (CUPS, некоторые GPU). Приложения вызывают syscalls; ядро передаёт запрос драйверу.
  • Файловая система — способ хранения данных на разделе диска (ext4, xfs, btrfs, FAT32 и др.) — имена, inode, права rwx, журнал. FHS — стандарт расположения каталогов (/etc, /home) поверх смонтированных файловых систем; это отдельный уровень от формата ext4/xfs.
  • Рабочий стол (Desktop) — область GUI с обоями и иконками, которую рисует DE (GNOME, KDE). Файлы на рабочем столе обычно лежат в ~/Desktop или ~/Рабочий стол.
  • Контекстное меню — список действий по правому щелчку (ПКМ) на объекте в файловом менеджере или на панели DE; состав зависит от типа файла и установленных расширений.
  • Корзина (Trash) — каталог "мягкого" удаления: ~/.local/share/Trash (стандарт freedesktop). Файлы из GUI часто попадают сюда; rm в терминале удаляет сразу, без корзины. Восстановление — из файлового менеджера или trash-restore.

1. Ядро

Ядро Linux — монолитное ядро с модульными расширениями (loadable kernel modules, LKM). Управляет CPU, памятью, устройствами, сетью и файловыми системами. Выпуски — каждые 2–3 месяца; LTS-ветки (6.6, 6.12…) поддерживаются 2–6 лет для серверов и дистрибутивов.

Общая теория ядер — Ядро операционной системы. Память в Linux — Управление памятью в Linux. Планирование CPU — Планирование процессора — классические алгоритмы. I/O и драйверы — Подсистема ввода-вывода в ОС.


User space и kernel space

ПространствоКто работаетДоступПримеры
User spaceПриложения, shell, большинство демоновОграниченный; syscalls к ядруfirefox, nginx, sshd
Kernel spaceЯдро, модули .koПолный доступ к памяти и железуvmlinuz, nvidia.ko, ext4

Переход в kernel space — через системные вызовы (syscalls) — read, write, open, fork, execve. Обёртки — библиотека glibc (или musl в Alpine). Посмотреть список: man 2 syscalls, трассировка — strace -e openat ls.

Изоляция user space защищает систему: падение редактора редко роняет ОС. Ошибка в драйвере или модуле ядра — kernel panic (аналог BSOD в Windows; см. драйвер).


Подсистемы ядра

Подсистема — см. ключевые термины. В таблице ниже — основные подсистемы ядра Linux:

ПодсистемаФункции
Scheduler (CFS)Планирование потоков, приоритеты, cgroups
Memory ManagerВиртуальная память, страницы, swap, OOM killer
VFSЕдиный слой поверх ext4, xfs, btrfs, nfs…
Block / Network stackДиски, TCP/IP, сокеты, netfilter/iptables/nftables
Device model/dev, udev, hotplug, драйверы
SecurityUID/GID, capabilities, SELinux, AppArmor, namespaces

Модули ядра загружаются без перекомпиляции — modprobe nvme, lsmod, rmmod. Конфигурация — /etc/modprobe.d/. Параметры "на лету" — /proc/sys/ и sysctl.


Загрузка и ключевые процессы

Цепочка загрузки:

  1. BIOS/UEFI → загрузчик GRUB (или systemd-boot);
  2. vmlinuz + initramfs — временный образ с драйверами дисков и LVM;
  3. монтирование root, запуск PID 1 — обычно systemd (или init OpenRC);
  4. systemd поднимает службы, getty, графическую сессию.
PID / процессРоль
systemd (1)Init, cgroups, журналы, монтирование, службы
systemd-journaldЦентрализованные логи → journalctl
systemd-logindСессии, вход, power management
sshdУдалённый SSH-доступ
NetworkManagerУправление Wi‑Fi/Ethernet (desktop)

Kernel panic — аварийная остановка с сообщением на консоли; дамп — kdump/vmcore. Диагностика — journalctl -k -b -1 (предыдущая загрузка), dmesg, /var/log/kern.log.

Куда дальше

Процессы и fork — Жизненный цикл процесса в Linux. Управление процессами в Linux — Управление процессами в Linux. Сравнение с Windows — Сравнение Windows и Linux.


2. Дистрибутивы и пакеты

Дистрибутив (distribution) — готовая сборка Linux под конкретную аудиторию. Отличия — набор пакетов, политика обновлений, init, DE по умолчанию, поддержка.

По семействам пакетов

СемействоФорматМенеджерДистрибутивы
Debian.debapt, dpkgDebian, Ubuntu, Mint, Pop!_OS
Red Hat.rpmdnf, yum, rpmFedora, RHEL, Rocky, Alma
Arch.pkg.tar.zstpacmanArch, Manjaro, SteamOS
SUSE.rpmzypperopenSUSE, SLES
Universalflatpak, snap, appimageпереносимыеповерх любого дистрибутива

Примеры команд:

sudo apt update && sudo apt install htop # Debian/Ubuntu
sudo dnf install htop # Fedora/RHEL
sudo pacman -S htop # Arch
flatpak install flathub org.gnome.TextEditor # изолированный пакет

По назначению

КатегорияПримерыОсобенности
НачинающиеUbuntu, Linux Mint, Fedora WorkstationУстановщик, драйверы, DE "из коробки"
СерверыDebian, RHEL, Ubuntu ServerМинимум GUI, LTS, стабильность
Rolling releaseArch, openSUSE TumbleweedСвежие пакеты, чаще обновления
СпециализированныеKali, Tails, SteamOSPentest, анонимность, игры
МинимальныеAlpine, Tiny CoreКонтейнеры, встроенные системы

Открытая модель порождает сотни вариантов — от корпоративных RHEL до экспериментальных сборок. Для обучения обычно достаточно Ubuntu или Fedora; для серверов — Debian или RHEL-совместимые.


3. Интерфейс

Интерфейс Linux — CLI (shell) как основа и GUI (DE) как опция. Серверы часто работают без графики; рабочие станции — с полноценным рабочим столом.


Командная строка (Shell)

Shell — интерпретатор команд и скриптов между пользователем и ядром.

ShellОсобенности
bashСтандарт GNU, /bin/bash, скрипты .sh
zshАвтодополнение, темы (Oh My Zsh)
fishДружелюбный синтаксис из коробки
shМинимальный POSIX-shell для скриптов

Терминал — эмулятор (gnome-terminal, konsole, alacritty, tmux для сессий). Базовая навигация:

pwd # текущий каталог
ls -la # список файлов
cd /etc # смена каталога
cat file.txt # вывод файла
man ls # справка
history | grep apt # история команд

Переменные среды — PATH, HOME, USER. Конфигурация bash — ~/.bashrc, ~/.profile.


Графический интерфейс — стек

СлойКомпонентРоль
ПриложенияGTK, QtТулkits интерфейса
DEGNOME, KDE Plasma, XFCEПанель, меню, настройки, файловый менеджер
Display serverWayland (современный), X11 (legacy)Окна, ввод, композиция
ДрайверMesa, проприетарные NVIDIA/AMDOpenGL/Vulkan

Desktop Environment (DE) — аналог оболочки Windows (explorer.exe + панель задач):

DEСтильДистрибутивы
GNOMEМинимализм, вертикальный обзорFedora, Ubuntu по умолчанию
KDE PlasmaГибкая настройка, виджетыopenSUSE, Kubuntu, Neon
XFCEЛёгкий, классическая панельXubuntu, старые ПК
Cinnamon / MATE / LXQtАльтернативыMint, Lubuntu

Элементы GUI (по аналогии с Windows):

  • Рабочий стол — см. ключевые термины; обои, иконки; каталог ~/Desktop или ~/Рабочий стол;
  • Панель / dock — запуск приложений, часы, трей;
  • Меню приложений — по кнопке "Activities" (GNOME) или "Пуск" (KDE);
  • Файловый менеджер — Nautilus (GNOME), Dolphin (KDE), Thunar (XFCE); аналог Проводника;
  • Настройкиgnome-control-center, KDE System Settings; аналог "Параметров";
  • Монитор системы — GNOME System Monitor, KDE System Guard.

Wayland постепенно заменяет X11: лучше безопасность и масштабирование HiDPI; часть legacy-приложений X11 работает через XWayland.


Контекстное меню и базовые действия

Контекстное меню и корзина — см. ключевые термины. В терминале rm обходит корзину; в GUI удаление чаще отправляет файл в ~/.local/share/Trash.

В файловом менеджере и терминале:

ДействиеGUIТерминал
КопироватьПКМ → Копировать, Ctrl + Ccp source dest
ПереместитьВырезать / перетащитьmv source dest
УдалитьDel, корзинаrm file, rm -r dir
ПереименоватьF2mv old new
ПраваСвойства → Праваchmod 644, chown user:group
СвойстваПКМ → Свойстваls -l, stat file
Корзина и удаление

В файловом менеджере "Удалить" обычно перемещает объект в корзину — данные остаются на диске до "Очистить корзину" или trash-empty. Команда rm в shell удаляет файл сразу; восстановление возможно только из резервной копии или утилит вроде extundelete (не гарантировано).

ПКМ в терминале — вставка часто Ctrl + Shift + V (не Ctrl + V).

Практическое задание
  1. Откройте терминал: Ctrl + Alt + T (Ubuntu) или через меню приложений.
  2. Выполните ls -la ~ и найдите скрытые файлы .bashrc, .config.
  3. Откройте файловый менеджер и сравните те же каталоги в GUI.

4. Службы

Службы в Linux — демоны (daemons), управляемые чаще всего systemd. Аналог SCM Windows (services.exe).


Как устроен systemd

ПонятиеОписание
Unit.service, .socket, .timer, .mount — объект systemd
TargetГруппа units (аналог runlevel); multi-user.target, graphical.target
ДемонФоновый процесс без TTY: nginx, cron, docker
Сокет activationЗапуск службы по обращению к порту

Файлы unit: /usr/lib/systemd/system/ (пакеты), /etc/systemd/system/ (локальные override).

Управление службами

ДействиеКоманда
Списокsystemctl list-units --type=service
Статусsystemctl status ssh
Запуск / стопsudo systemctl start ssh / stop
Автозагрузкаsudo systemctl enable nginx / disable
Перезагрузка конфигаsudo systemctl daemon-reload
Логи службыjournalctl -u nginx -f

Типы запуска в unit-файле — enabled, disabled, static, masked (полный запрет).

Ключевые службы

СлужбаUnitНазначение
SSHssh.service / sshdУдалённый доступ
Сеть (desktop)NetworkManager.serviceWi‑Fi, Ethernet
Сеть (server)systemd-networkdСтатическая конфигурация
Журналsystemd-journaldЛоги → journalctl
Croncron.service / crondЗадачи по расписанию
Nginx/Apachenginx, httpdВеб-сервер
Dockerdocker.serviceКонтейнеры
Firewallufw, firewalld, nftablesФильтрация пакетов

Legacy SysVinit (/etc/init.d/, service nginx start) встречается на старых системах; современные дистрибутивы — systemd.

Осторожно

Отключение systemd-logind, dbus, NetworkManager или sshd (на удалённом сервере) может отрезать доступ к системе. Перед mask зафиксируйте исходное состояние: systemctl is-enabled имя.

Практическое задание
  1. systemctl status — общее состояние.
  2. systemctl list-units --type=service --state=running — активные службы.
  3. journalctl -b — логи текущей загрузки.

5. Утилиты

Утилиты — встроенные и пакетные инструменты для администрирования, диагностики и повседневной работы.


Файлы и каталоги

УтилитаНазначение
ls, cd, pwdНавигация
cp, mv, rm, mkdir, touchСоздание, копирование, удаление
find, locate, fdПоиск файлов — команды поиска
chmod, chown, umaskПрава доступа (rwx, octal)
tar, gzip, zipАрхивы
ln -sСимволические ссылки
mount, umount, df, duМонтирование и место на диске

Текст и поиск

УтилитаНазначение
cat, less, head, tailПросмотр файлов; tail -f — лог в реальном времени
grep, rg (ripgrep)Поиск по содержимому — команды поиска
sed, awkПотоковое редактирование и отчёты
wc, sort, uniq, cutОбработка текста

Поиск информации

В Linux поиск делят на две задачи: найти файл или программу (по имени, типу, дате, правам) и найти текст внутри файлов (по слову или шаблону). Ниже — девять часто используемых команд; примеры и флаги — в справочнике Linux-команд, поиск текста в IDE и Windows — grep, findstr и Select-String.

КомандаНазначение
findПоиск файлов и каталогов по имени, типу, времени изменения, правам доступа и другим параметрам. Обходит дерево каталогов в реальном времени — результат всегда актуален, но на больших дисках может быть медленным
locateБыстрый поиск по заранее построенной базе (/var/lib/mlocate/). После установки пакета plocate или mlocate базу обновляют: sudo updatedb
whichПоказывает путь к исполняемому файлу, который запустится из текущего PATH — удобно, когда в системе несколько версий одной программы
whereisНаходит бинарник, исходники и man-страницы для указанной команды
grepПоиск строк в файлах по текстовому шаблону или регулярному выражению; классическая утилита, есть на любой системе
fzfИнтерактивный поиск файлов и каталогов с нечётким совпадением (fuzzy search). Часто комбинируют с fd или find: список кандидатов в конвейер, выбор — в TUI
fdБыстрая и удобная альтернатива find для поиска по имени или шаблону; по умолчанию игнорирует скрытые каталоги и учитывает .gitignore
bfsВерсия find с обходом каталогов в ширину (breadth-first). На очень больших деревьях первые результаты появляются быстрее, чем у классического find
ripgrep (rg)Рекурсивный поиск текста в файлах с автоматическим учётом .gitignore; многопоточный, удобен в репозиториях кода

Краткий выбор инструмента:

  • «Где лежит файл config.yamlfind, locate или fd.
  • «Какая версия python запустится?»which python3.
  • «Где man-страница и бинарник nginxwhereis nginx.
  • «Где в логах слово ERROR?»grep или rg.
  • «Интерактивно выбрать файл из тысячи»fzf.

find, locate, which, whereis и grep входят в базовую поставку большинства дистрибутивов. fd, fzf, bfs и ripgrep обычно ставят из репозитория (sudo apt install fd-find fzf ripgrep в Ubuntu; пакет fd часто называется fd-find, исполняемый файл — fdfind).

find /var/log -name "*.log" -mtime -7 # логи за последнюю неделю
locate nginx.conf # быстро, если база свежая
which python3
whereis gcc
grep -rn "TODO" ~/project/
fd -e md . # все .md в текущем дереве
rg "import React" src/ # текст в коде, без node_modules

Сеть

УтилитаНазначение
ip a, ip rАдреса и маршруты (замена ifconfig)
ping, traceroute, tracepathДоступность и маршрут
ss -tuln, netstatОткрытые порты и соединения
dig, nslookup, hostDNS
curl, wgetHTTP/FTP-загрузки
ssh, scp, rsync, sftpУдалённый доступ и синхронизация
nmcliCLI NetworkManager
nmapСканирование портов (осторожно в чужих сетях)

Сценарий "нет сети":

  1. ip a — есть ли IP;
  2. ping -c 3 192.168.1.1 — шлюз;
  3. ping -c 3 8.8.8.8 — интернет без DNS;
  4. dig google.com — DNS;
  5. ss -tuln — слушающие порты.

Система и восстановление

УтилитаНазначение
ps, pgrep, kill, killallПроцессы
free -h, vmstatПамять
dmesg, journalctlЛоги ядра и systemd
fsckПроверка ФС (offline)
mkfs.ext4, fdisk, partedРазметка и форматирование
crontab -e, systemd-runПланирование задач
sudo, suПовышение привилегий
useradd, usermod, passwdУчётные записи

Пакетные менеджеры — см. раздел 2.


6. Менеджеры

Менеджеры — инструменты мониторинга процессов, ресурсов и оборудования. Между "сырыми" утилитами (ps, free) и полноценной автоматизацией.


htop / top — диспетчер процессов

top — классический монитор в терминале; htop — интерактивный (цвета, мышь, дерево процессов).

Клавиша (htop)Действие
F5Дерево процессов
F6Сортировка (CPU, MEM…)
F9Kill (SIGTERM / SIGKILL)
F10Выход
/Поиск процесса

Запуск: htop, top. Аналог Диспетчера задач Windows.

Сигналы: SIGTERM (15) — корректное завершение; SIGKILL (9) — принудительное; kill -9 PID — только если процесс не отвечает.


journalctl — журнал событий

Централизованные логи systemd — аналог Просмотра событий (eventvwr):

journalctl -b # текущая загрузка
journalctl -u nginx --since today
journalctl -k # только ядро
journalctl -p err -b # ошибки
journalctl -f # follow (как tail -f)

Файлы legacy: /var/log/syslog, auth.log, kern.log (Debian/Ubuntu).


lsof, iotop, nethogs — углублённая диагностика

УтилитаНазначение
lsofКакой процесс держит файл или порт: lsof -i :80
iotopДисковый I/O по процессам (аналог Resource Monitor)
nethogsТрафик по процессам
vmstat / iostat / mpstatCPU, память, диск (sysstat)

Диспетчер оборудования

Драйвер — см. ключевые термины. В Linux нет единого GUI вроде devmgmt.msc; оборудование смотрят через CLI и DE.

ИнструментНазначение
lsusb, lspci, lsblkСписок USB, PCI, блочных устройств
lshw, inxiПодробная информация о железе
dmesg | tailСообщения ядра о новых устройствах
udevadm infoПравила udev, hotplug
GNOME Settings → About / hardinfoGUI-обзор

Драйверы — модули ядра (/lib/modules/$(uname -r)/) или прошивки (/lib/firmware/). Проприетарные — пакеты nvidia-driver, linux-firmware.

Куда дальше

Команды терминала — 2.05 Terminal. Администрирование — Администрирование Linux-систем. Сравнение с Windows — Сравнение Windows и Linux.


Файловая система и структура каталогов Linux

Файловая система — см. ключевые термины. Ниже — FHS:

  • как каталоги от / организованы на смонтированных разделах ext4;
  • xfs;
  • др.

Linux монтирует все разделы в единое дерево от /. Съёмные носители и сетевые ресурсы подключают как подкаталоги — в отличие от букв C:, D: в Windows (см. Windows).

Структура описана стандартом FHS (Filesystem Hierarchy Standard). Компактная шпаргалка — Terminal / FHS, группы каталогов — администрирование / FHS.

Типичные ФС — ext4 (универсальная), xfs (большие тома), btrfs (снимки, сжатие), FAT32/exFAT (флешки), NTFS (чтение/запись с Windows-разделов через ntfs-3g).


Корневой каталог /

Корневой каталог — это вершина всей файловой системы. Он обозначается символом / и содержит все остальные каталоги. В отличие от Windows, где каждый диск имеет собственную букву (C:, D: и т.д.), в Linux все устройства подключаются как подкаталоги корня.


/bin — основные исполняемые файлы

Каталог /bin содержит базовые команды, необходимые для работы системы даже в режиме восстановления. Сюда входят такие утилиты, как ls, cp, mv, rm, cat, bash и другие. Эти программы доступны всем пользователям и критически важны для функционирования ОС.


/boot — файлы загрузчика и ядра

В /boot хранятся файлы, необходимые для загрузки операционной системы:

  • vmlinuz — сжатое ядро Linux;
  • initrd.img или initramfs — временная файловая система, используемая на ранних этапах загрузки;
  • конфигурационные файлы загрузчика (например, GRUB).

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


/dev — файлы устройств

Каталог /dev представляет физические и виртуальные устройства в виде специальных файлов. Например:

  • /dev/sda1 — первый раздел на первом SATA-диске;
  • /dev/ttyS0 — последовательный порт;
  • /dev/null — "чёрная дыра", куда можно отправлять данные без сохранения.

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


/etc — конфигурационные файлы

Все системные настройки хранятся в /etc. Здесь находятся:

  • /etc/passwd — информация о пользователях;
  • /etc/group — группы пользователей;
  • /etc/fstab — таблица файловых систем, монтируемых при старте;
  • /etc/hosts — локальное сопоставление имён и IP-адресов;
  • конфигурации служб — Apache, SSH, systemd и других.

Этот каталог не содержит исполняемых файлов — только текстовые конфигурации.


/home — домашние каталоги пользователей

Каждый обычный пользователь получает свой подкаталог в /home. Например, пользователь james будет иметь каталог /home/james. В нём хранятся:

  • личные файлы и документы;
  • скрытые файлы настроек (начинаются с точки): .bashrc, .profile, .ssh;
  • ключи аутентификации: ~/.ssh/id_rsa, ~/.ssh/authorized_keys.

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


/lib и /lib64 — системные библиотеки

Каталоги /lib/lib64 на 64-битных системах) содержат разделяемые библиотеки, необходимые для запуска программ из /bin и /sbin. Примеры:

  • libc.so — стандартная библиотека языка C;
  • libm.so — математическая библиотека.

Без этих библиотек даже базовые команды не смогут работать.


/media и /mnt — точки монтирования

  • /media используется для автоматического монтирования съёмных носителей — флешек, CD/DVD, внешних дисков.
  • /mnt предназначен для временного ручного монтирования файловых систем (например, сетевых томов или разделов при обслуживании).

Разделение этих каталогов помогает поддерживать порядок: автоматические подключения — в /media, административные — в /mnt.


/opt — дополнительное программное обеспечение

Каталог /opt предназначен для установки сторонних приложений, особенно тех, которые поставляются в виде самодостаточных пакетов (часто коммерческие или проприетарные программы). Каждое приложение обычно создаёт здесь свой подкаталог: /opt/myapp.


/proc — виртуальная файловая система процессов

/proc — это псевдофайловая система, предоставляемая ядром. Она не существует на диске, а генерируется динамически в памяти. Через неё можно получить информацию о:

  • работающих процессах (подкаталоги вида /proc/1234);
  • аппаратных ресурсах — /proc/cpuinfo, /proc/meminfo, /proc/partitions;
  • параметрах ядра: /proc/sys/.

Запись в некоторые файлы /proc позволяет изменять поведение системы на лету.


/root — домашний каталог суперпользователя

Каталог /root — это домашняя директория пользователя root (администратора). Он отделён от /home по соображениям безопасности и доступности: даже если /home находится на отдельном разделе и не смонтирован, root сможет войти в систему.


/run — временные файлы времени выполнения

Современные дистрибутивы используют /run для хранения данных, актуальных только во время сессии:

  • PID-файлы служб;
  • сокеты;
  • информация о текущих пользователях (/run/utmp).

Содержимое этого каталога очищается при перезагрузке.


/sbin — системные исполняемые файлы

Каталог /sbin содержит команды, предназначенные в первую очередь для системного администратора:

  • init, reboot, shutdown;
  • fdisk, mkfs, iptables;
  • ifconfig, route (в некоторых дистрибутивах).

Эти утилиты часто требуют прав суперпользователя.


/srv — данные сервисов

Каталог /srv предназначен для хранения данных, предоставляемых системой другим машинам или пользователям. Например:

  • /srv/www — веб-сайты;
  • /srv/ftp — файлы FTP-сервера;
  • /srv/git — репозитории Git.

Стандарт FHS рекомендует использовать именно этот путь для сервисных данных.


/sys — информация об оборудовании и драйверах

Подобно /proc, каталог /sys — это виртуальная файловая система, экспонирующая структуру устройств, шин и драйверов. Она используется в первую очередь для взаимодействия с подсистемой управления питанием, горячей заменой устройств (hotplug) и настройкой параметров оборудования через простые текстовые файлы.


/tmp — временные файлы

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


/usr — пользовательские программы и данные

Несмотря на название (Unix System Resources), каталог /usr содержит не пользовательские файлы, а второстепенные, но важные компоненты системы:

  • /usr/bin — большинство пользовательских команд — python, perl, git, gcc;
  • /usr/lib — библиотеки для программ из /usr/bin;
  • /usr/share — архитектурно-независимые данные — документация, значки, локализация;
  • /usr/local — программное обеспечение, установленное локально администратором (вне пакетного менеджера).

В современных системах /usr часто объединяется с корнем, но логически остаётся отдельной частью.


/var — переменные данные

Каталог /var хранит файлы, которые постоянно изменяются в процессе работы системы:

  • /var/log — системные журналы: syslog, auth.log, kern.log;
  • /var/mail — почтовые ящики пользователей;
  • /var/spool — очереди задач — печать, cron, почта;
  • /var/www — корневая директория веб-сервера (в некоторых дистрибутивах);
  • /var/run — устаревшее место для runtime-данных (теперь чаще используется /run).

Этот каталог критически важен для диагностики и мониторинга системы.


Практика — первые 30 минут в Linux

Маршрут для перехода с Windows (параллель Windows / практика):

  1. Навигацияpwd, ls -la, cd, mkdir ~/test; открыть тот же каталог в файловом менеджере.
  2. Процессыhtop или top; найти свой shell; kill зависший процесс.
  3. Сетьip a, ping -c 3 8.8.8.8, ss -tuln.
  4. Логиjournalctl -b -p err, просмотр /var/log/syslog (если есть).
  5. Пакетsudo apt install tree (или dnf/pacman) и tree -L 2 /etc.
  6. Службаsystemctl status ssh (или другая установленная служба).
  7. FHS — пройти /bin, /etc, /home, /var/log и сопоставить с таблицами ниже.
Система тормозит
  1. htop — кто грузит CPU/RAM.
  2. iotop — дисковый I/O.
  3. df -h — заполненность разделов.
  4. journalctl -b -p err — ошибки загрузки.
  5. free -h — память и swap; при нехватке RAM — OOM killer в dmesg.

Далее — основы UNIX, сравнение с Windows, планирование CPU, подсистема I/O.