Учебник Unix / Linux для начинающих
Командная строка bash — основной инструмент разработчика и администратора. Научимся работать с файлами, правами, процессами и каналами.
Курс «Unix / Linux» состоит из 9 разделов и 47 уроков: Текстовая обработка: sed, awk и мощь конвейеров, Файловая система, диски и ссылки, Сеть Linux вглубь: ip, файрвол, SSH, Системное администрирование: systemd, логи, загрузка, Linux для разработчика и DevOps, Пользователи и права в Linux, Процессы и службы, Сеть и пакеты в Linux и Уроки по Linux. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Текстовая обработка: sed, awk и мощь конвейеров
- sed: потоковый редактор текста
sed в Linux: подстановка s///, флаги g/i/p, диапазоны и адресация строк, удаление и вставка, редактирование на месте -i, многокомандные скрипты sed.
- awk: язык обработки таблиц и отчётов
awk в Linux: поля $1..$NF, переменные NR и NF, паттерны и действия, блоки BEGIN/END, арифметика, printf-форматирование и агрегация по столбцам в отчётах.
- sort, uniq, cut, tr, paste: комбинаторика обработки
Утилиты обработки текста в Linux: sort по ключам и числам, uniq -c для подсчёта, cut по полям и символам, tr для замен и удаления, paste и join для слияния.
- xargs и find -exec: массовые операции над файлами
Массовые операции в Linux: find с условиями по имени/типу/времени/размеру, find -exec против xargs, безопасный -print0/-0, параллелизм xargs -P и ловушки с пробелами.
- Разбор логов одной строкой: конвейеры на практике
Анализ логов в Linux одной командой: конвейеры grep | awk | sort | uniq -c | sort -rn, топ IP и ошибок, подсчёт кодов ответа и реальные сценарии разбора access.log.
- sed: потоковый редактор текста
2 Файловая система, диски и ссылки
- Устройство файловой системы: FHS, inode, ext4
Иерархия каталогов Linux по FHS, что такое inode и метаданные файла, виртуальная ФС /proc, как ext4 хранит данные через экстенты и журнал, ls -i и stat.
- Разделы и монтирование: mount, fstab, df, du
Блочные устройства и разделы в Linux, lsblk и blkid, монтирование через mount и fstab по UUID, разница df и du, поиск каталога, забившего диск.
- Ссылки: жёсткие и символические
Жёсткие и символические ссылки в Linux: ln и ln -s, inode и счётчик ссылок, отличия и ограничения, разыменование, битые симлинки и приём атомарного деплоя.
- Спец-права: SUID, SGID, sticky bit и ACL
Специальные права Linux: числовая и символьная запись углублённо, SUID на passwd, SGID на общих каталогах, sticky bit на /tmp, гибкие права через setfacl и getfacl.
- LVM и управление томами
LVM в Linux: уровни PV, VG и LV, создание тома, расширение на лету через lvextend и resize2fs, снапшоты copy-on-write и сравнение LVM с обычными разделами.
- Устройство файловой системы: FHS, inode, ext4
3 Сеть Linux вглубь: ip, файрвол, SSH
- Управление сетью: ip и ss (замена ifconfig/netstat)
Команда ip вместо ifconfig и ss вместо netstat: адреса, маршруты, интерфейсы, активные соединения и открытые порты в современном Linux.
- DNS в Linux: резолвинг, /etc/hosts, resolv.conf
Как Linux превращает имя в IP: порядок резолвинга, /etc/hosts, /etc/resolv.conf, systemd-resolved и инструменты dig, host, nslookup для диагностики DNS.
- Файрвол: iptables, nftables и ufw
Файрвол Linux: цепочки INPUT/OUTPUT/FORWARD, правила и политики по умолчанию в iptables и nftables, обёртка ufw, открытие и закрытие портов.
- SSH вглубь: ключи, конфиг, туннели, rsync
SSH на уровне профи: ключи ssh-keygen, ssh-copy-id, файл ~/.ssh/config, проброс портов -L и -R, ProxyJump, ssh-agent, копирование scp и rsync.
- Диагностика сети: traceroute, tcpdump, nc, mtr
Диагностика сети Linux: где рвётся связь через traceroute и mtr, просмотр пакетов tcpdump, проверка порта netcat и разбор «сайт не открывается».
- Управление сетью: ip и ss (замена ifconfig/netstat)
4 Системное администрирование: systemd, логи, загрузка
- systemd вглубь: units, targets, зависимости
Типы юнитов systemd (service, socket, timer, target), написание своего .service, Wants/Requires/After, enable vs start и таймеры как замена cron.
- Логи системы: journalctl, rsyslog, logrotate
Чтение журнала systemd через journalctl (-u, -f, --since, приоритеты), постоянный журнал, классические логи /var/log и rsyslog, ротация через logrotate.
- Загрузка Linux: от BIOS/UEFI до systemd
Полная цепочка загрузки Linux: POST, загрузчик GRUB, ядро и initramfs, PID 1 systemd и targets; где что настраивается и как восстановить систему при поломке загрузки.
- Ядро, модули, /proc и /sys
Идентификация ядра (uname), управление модулями (lsmod, modprobe, insmod), виртуальные ФС /proc и /sys, настройка параметров через sysctl и чтение dmesg.
- Производительность и устранение неполадок
Методика диагностики Linux: load average, htop, vmstat, iostat, free, отличие нагрузки CPU от ожидания диска, поиск виновного процесса через lsof и strace.
- systemd вглубь: units, targets, зависимости
5 Linux для разработчика и DevOps
- Окружение: переменные, PATH, профили
Переменные окружения и export, поиск команды по PATH, .bashrc vs .profile vs .bash_profile, login и non-login shell, alias, локали LANG в Linux.
- Сборка из исходников: make, ./configure
Зачем собирать из исходников: ./configure && make && make install, -dev зависимости, основы gcc и make, prefix для своего каталога, checkinstall.
- Как работают контейнеры: namespaces и cgroups
Что под капотом у Docker: namespaces (pid/net/mnt/user), cgroups для лимитов CPU и памяти, chroot как предок изоляции, демонстрация контейнера через unshare.
- Мультиплексоры терминала: tmux и screen
tmux и screen: зачем нужны сессии, окна и панели, detach и attach для долгих задач по SSH, базовые горячие клавиши, конфиг tmux.conf для разработчика.
- Базовая защита сервера (оборонительно)
Оборонительная гигиена Linux-сервера: своевременные обновления, вход по SSH-ключам, отключение входа root, файрвол, fail2ban, минимальные привилегии, аудит портов через ss.
- Окружение: переменные, PATH, профили
6 Пользователи и права в Linux
- Пользователи и группы в Linux
Управление пользователями в Linux: useradd, usermod, groupadd, passwd, /etc/passwd, команды id и groups — с примерами и частыми ошибками.
- sudo и su: управление привилегиями
sudo и su в Linux: как запускать команды от root, переключать сессии, добавлять пользователей в sudo и безопасно редактировать sudoers.
- Права доступа: chown, chmod, umask
chown, chmod и umask в Linux: смена владельца, символьная и числовая нотация прав, маска по умолчанию — с примерами и таблицами.
- Пользователи и группы в Linux
7 Процессы и службы
- Мониторинг системы: top, df, free
Мониторинг Linux: top, htop, ps, df, du, free — как смотреть загрузку процессора, памяти и дискового пространства с примерами вывода.
- Управление службами: systemctl
systemctl в Linux: start, stop, restart, status, enable, disable — управление службами systemd, автозапуск и просмотр логов через journalctl.
- Планировщик задач: cron и crontab
cron и crontab в Linux: синтаксис расписания, примеры задач, @reboot, логирование вывода — автоматизация команд по расписанию.
- Мониторинг системы: top, df, free
8 Сеть и пакеты в Linux
- Сетевые команды: ping, curl, ssh
Сетевые команды Linux: ping, curl, wget, ip, ssh, scp — диагностика сети, скачивание файлов и удалённый доступ с примерами.
- Управление пакетами: apt и dnf
Управление пакетами Linux: apt для Debian/Ubuntu и dnf для Fedora/RHEL — установка, обновление, удаление и поиск пакетов с примерами.
- Архивы и сжатие: tar, gzip, zip
Архивы и сжатие в Linux: tar, gzip, bzip2, zip, unzip — создание, просмотр и распаковка архивов с примерами и сравнением форматов.
- Сетевые команды: ping, curl, ssh
9 Уроки по Linux
- Введение
- Командная строка в Linux
- Основы навигации в Linux
- Файлы в Linux
- Руководство в Linux
- Права доступа в Linux
- Шаблоны подстановки в Linux
- Работа с файлами в Linux
- Фильтры в Linux
- Конвейеры и перенаправление ввода-вывода в Linux
- Управление процессами в Linux
- Команда grep и регулярные выражения в Linux
- Написание bash-скриптов в Linux