1. Введение в архитектуру Linux и фундаментальные навыки работы в командной строке
Введение в архитектуру Linux и фундаментальные навыки работы в командной строке
В 1991 году Линус Торвальдс, тогда еще студент Хельсинкского университета, отправил в почтовую рассылку сообщение о том, что он делает «просто хобби, нечто не такое большое и профессиональное, как GNU». Сегодня это «хобби» управляет 100% самых мощных суперкомпьютеров мира, подавляющим большинством веб-серверов и облачных инфраструктур. Почему система, созданная энтузиастом, вытеснила коммерческие гиганты? Ответ кроется в её архитектурной прозрачности и беспрецедентной власти, которую она дает администратору через командную строку.
Анатомия системы: от «железа» до пользователя
Чтобы эффективно управлять Linux, нужно понимать, как распределяются роли внутри операционной системы. Представьте структуру Linux как луковицу, где каждый слой изолирует сложность предыдущего.
Ядро (Kernel)
Ядро — это сердце системы. Оно является единственным посредником между аппаратным обеспечением (CPU, RAM, диски) и программным обеспечением. Ядро Linux относится к типу монолитных. Это означает, что основные функции (управление памятью, планировщик процессов, драйверы устройств) работают в едином адресном пространстве.Ключевые задачи ядра:
Окружение (Shell и User Space)
Поверх ядра находится пользовательское пространство (User Space). Здесь живут библиотеки (например,glibc) и оболочки (Shell). Оболочка — это интерпретатор команд, который принимает ввод от пользователя, преобразует его в системные вызовы и возвращает результат.Важно понимать: Linux — это только ядро. То, что мы привыкли называть «операционной системой Linux», корректнее называть GNU/Linux, так как большинство базовых утилит (ls, cp, grep) были созданы в рамках проекта GNU.
Философия UNIX: «Делай что-то одно, но делай это хорошо»
Администрирование Linux строится на нескольких фундаментальных принципах, унаследованных от UNIX. Понимание этих догм избавляет от попыток искать в Linux логику Windows или macOS.
/dev/sda). Клавиатура — файл. Даже текущие настройки ядра представлены в виде файлов в виртуальных директориях /proc и /sys. Это позволяет использовать одни и те же инструменты для манипуляции данными, устройствами и сетевыми потоками.cat просто выводит содержимое файла, grep — ищет строки, sort — сортирует.Командная строка: интерфейс профессионала
Для обычного пользователя GUI (графический интерфейс) удобен, но для администратора он — препятствие. Командная строка (CLI) обеспечивает:
apt install nginx быстрее, чем искать кнопку в магазине приложений.Структура команды
Почти любая команда в Linux следует шаблону:command -options argumentsНапример: ls -la /var/log
ls — имя программы (list).-la — опции (флаги). -l (long) включает подробный вывод, -a (all) показывает скрытые файлы./var/log — аргумент, указывающий, содержимое какой папки мы хотим увидеть.Навигация и базовые операции
Работа в терминале начинается с понимания того, где вы находитесь. В Linux нет «Диска C:» или «Диска D:». Все начинается с корня, обозначаемого символом /.
Пути: абсолютные и относительные
/home/user/documents/report.txt. Он уникален и работает из любой точки системы./home/user, то путь к файлу будет просто documents/report.txt.Специальные обозначения:
. (точка) — текущая директория... (две точки) — родительская директория (уровень выше).~ (тильда) — домашняя директория текущего пользователя.Основной инструментарий
pwd (Print Working Directory) — «Где я?». Выводит полный путь к текущей папке.cd (Change Directory) — Перемещение. cd /etc перенесет вас в папку с конфигами, а cd .. — на уровень вверх.ls — Просмотр содержимого. Рекомендую всегда использовать ls -F (добавляет символы типов файлов) или ls -lh (делает размеры файлов читаемыми, например, 2K, 15M).mkdir (Make Directory) — Создание папок. Опция -p (parents) позволяет создать целое дерево: mkdir -p project/src/tests.touch — Создание пустого файла или обновление времени его изменения.cp (Copy) и mv (Move) — Копирование и перемещение. Важно: mv также используется для переименования файлов.rm (Remove) — Удаление. В Linux нет «Корзины». Удаленный файл через rm исчезает навсегда (если вы не используете сложные инструменты восстановления). Команда rm -rf (recursive, force) — это «ядерный вариант», удаляющий папку со всем содержимым без лишних вопросов.Работа с текстовой информацией
Поскольку «все есть файл» и конфиги текстовые, администратор Linux 80% времени проводит за чтением и правкой текста.
Просмотр файлов
cat — вываливает весь текст в терминал. Плохо подходит для больших файлов.less — «умный» просмотрщик. Позволяет листать файл вверх-вниз (стрелками), искать по нему (клавиша /) и выходить без засорения экрана (клавиша q).head и tail — показывают первые или последние 10 строк. tail -f /var/log/syslog — незаменимый инструмент, который в реальном времени отображает новые строки, записываемые в лог-файл.Редактирование: Nano vs Vi/Vim
В каждой системе Linux есть как минимум один текстовый редактор.^ означает клавишу Ctrl).i (insert), чтобы начать писать. Чтобы выйти, нажмите Esc, введите :wq (write and quit) и нажмите Enter. Знание базового Vim обязательно, так как он гарантированно есть на любом сервере, даже в режиме восстановления.Потоки данных и перенаправление
Это магия, которая делает командную строку Linux полноценным языком программирования. У каждого процесса есть три стандартных потока:
Операторы перенаправления
> — Перенаправить вывод в файл (старое содержимое удалится).ls /etc > configs.txt — список файлов запишется в файл.
>> — Добавить вывод в конец файла.2> — Перенаправить только ошибки.find / -name "secret" 2> /dev/null — искать файл и не показывать в терминале ошибки доступа (отправлять их в «черную дыру» /dev/null).
| (Pipe/Конвейер) — Передать вывод одной команды на вход другой.cat /etc/passwd | grep "root" — прочитать файл и отфильтровать только строки, содержащие "root".Справочная система: как не заучивать всё
Ни один системный администратор не помнит все флаги всех команд. Главный навык — умение пользоваться встроенной справкой.
Команда man (Manual)
Это «библия» Linux. Введитеman ls, и вы получите исчерпывающую документацию.
Структура man-страниц разделена на секции:
man 5 passwd расскажет о структуре файла /etc/passwd, а не о команде смены пароля).Если вы не знаете точное имя команды, используйте man -k keyword (или apropos keyword). Система найдет все страницы, где упоминается это ключевое слово.
Другие источники
--help: Большинство утилит поддерживают этот флаг для краткой справки по опциям.info: Более современная и гипертекстовая замена man, часто используемая в проектах GNU.type: Помогает понять, является ли команда встроенной в оболочку (builtin), внешней программой или алиасом (псевдонимом).Управление правами и концепция Superuser
В Linux строгая иерархия. Обычный пользователь не может сломать систему, потому что у него нет прав на запись в системные директории. Но администратору эти права нужны.
Root — всемогущий пользователь
Пользователь с UID (User ID) равным называется root. Он может всё: удалить любой файл, остановить любой процесс, изменить настройки ядра. Работа под root постоянно — плохая практика (одна опечатка вrm -rf может уничтожить сервер).sudo (SuperUser DO)
Это механизм, позволяющий обычному пользователю выполнять команды с привилегиями root.sudo apt update — система спросит ваш пароль, проверит, есть ли вы в списке разрешенных лиц (файл /etc/sudoers), и выполнит команду от имени суперпользователя.Практические нюансы работы в терминале
Освоение CLI — это не только знание команд, но и владение «горячими клавишами», которые экономят часы времени.
Tab. Система допишет его сама. Если вариантов несколько — нажмите Tab дважды. Это не только быстро, но и защищает от опечаток.history выведет список всех последних действий. Чтобы быстро найти команду из прошлого, нажмите Ctrl + R и начните вводить её часть.Ctrl + L очищает экран (аналог команды clear).Ctrl + C немедленно останавливает текущую команду.Переменные окружения и оболочка Bash
Когда вы вводите ls, система не ищет её по всему диску. Она заглядывает в специальную переменную окружения USER — имя текущего пользователя.
SHELL — путь к текущей оболочке.Вы можете создавать свои переменные: MY_VAR="Hello", и обращаться к ним через знак доллара: echo $MY_VAR. Это основа для будущей автоматизации и написания скриптов.
Архитектура загрузки (коротко)
Чтобы понимать, как система оживает, нужно знать этапы загрузки:
Если на этапе 3 или 4 что-то пойдет не так, администратор должен уметь войти в режим восстановления, используя навыки навигации и редактирования файлов, которые мы разобрали.
Границы ответственности администратора
Становление Junior System Administrator начинается с принятия ответственности за систему. Linux не будет мешать вам совершить ошибку. Если вы скомандуете системе стереть саму себя, она начнет это делать, пока не удалит файлы, необходимые для работы самой команды удаления.
Поэтому золотое правило: сначала читай, потом нажимай Enter. Используйте man, проверяйте пути с помощью ls, прежде чем запускать rm, и всегда делайте резервные копии конфигурационных файлов перед правкой (например, cp config.conf config.conf.bak).
В следующей главе мы детально разберем иерархию файловой системы (FHS) и научимся управлять правами доступа на уровне владельцев и групп, что является фундаментом безопасности любой Linux-системы.