Материал открыт для чтения

Войдите, чтобы сохранять прогресс и результаты.

Войти
Linux: Старт в терминале

Старт: зачем DevOps-инженеру Linux и терминал

чтение ~8 минУрок 2 из 18

Почему Linux везде

module linux start Image01

Если ты хочешь стать DevOps-инженером, Linux не опция. Это базовая среда, в которой живёт большая часть серверной инфраструктуры: виртуальные машины, контейнеры, CI/CD-раннеры, Kubernetes-ноды, сетевые утилиты, системы мониторинга и большинство production-сервисов.

В 1991 году 21-летний Линус Торвальдс написал небольшое ядро ОС для своего ПК и выложил его в интернет. Сегодня это ядро работает на:

  • 500 из 500 самых мощных суперкомпьютеров мира
  • 96% публичных облачных серверов (AWS, Google Cloud, Azure)
  • всех Android-смартфонах - миллиарды устройств
  • Международной космической станции

Unix-подобные системы победили не потому, что они "красивее", а потому что они стабильные, предсказуемые, автоматизируемые и открытые. Для DevOps особенно важна автоматизация: то, что ты один раз сделал руками в терминале, позже можно превратить в скрипт, Ansible playbook, CI job или Dockerfile.


Ядро и дистрибутив

Ядро Linux - низкий уровень системы: управление памятью, процессами, устройствами, сетевыми соединениями и файловыми системами. Именно ядро решает, какой процесс получит процессор, какой файл можно прочитать, как обратиться к диску и как изолировать контейнер.

Дистрибутив - это готовая операционная система вокруг ядра. В него входят пакетный менеджер, командная оболочка, базовые утилиты, системные сервисы, настройки безопасности и документация.

Дистрибутив Для чего
Ubuntu Серверы, облака, обучение, много документации
Debian Стабильность. База для Ubuntu
Alpine Docker-контейнеры. Минимальный образ
RHEL/Rocky/Alma Корпоративные серверы

В этом курсе ты будешь работать на Ubuntu 24.04. Но команды cd, ls, grep, find, tar, структура /etc, /var/log, /home и общий подход будут почти такими же на Debian, Rocky, Alma и большинстве серверных Linux-систем.


Linux = DevOps

Типичный рабочий день DevOps-инженера:

Подключиться к серверу по SSH        -> Linux
CI/CD пайплайн запустился            -> раннеры работают на Linux
Docker-контейнеры задеплоились       -> внутри каждого контейнера Linux
Kubernetes масштабировал поды        -> каждая нода кластера - Linux
Prometheus собрал метрики            -> Prometheus работает на Linux

Контейнеры используют возможности ядра Linux: namespaces изолируют процессы, сеть и файловую систему, а cgroups ограничивают ресурсы. Kubernetes не заменяет Linux, а управляет Linux-машинами и контейнерами на них. Поэтому проблемы в Kubernetes часто заканчиваются обычной диагностикой в терминале: посмотреть файл, найти строку в логе, проверить путь, распаковать архив, сравнить вывод команд.

Без понимания Linux ты будешь работать вслепую. С пониманием Linux ты сможешь быстро отличить проблему приложения от проблемы окружения, прав доступа, диска, сети или конфигурации.


Терминал и shell

Терминал - это окно, через которое ты общаешься с командной оболочкой. Оболочка, или shell, принимает текстовую команду, разбирает её и запускает нужную программу. В Ubuntu чаще всего используется bash.

Одна команда обычно состоит из трёх частей:

команда опции аргументы

Примеры:

ls -la /var/log
head -n 5 /etc/hosts
grep -i error app.log
  • ls, head, grep - имена программ
  • -la, -n 5, -i - опции, которые меняют поведение команды
  • /var/log, /etc/hosts, app.log - аргументы, то есть объекты, с которыми работает команда

Когда ты набираешь ls, shell ищет исполняемый файл ls в директориях из переменной PATH. Поэтому команду можно запускать просто как ls, а не полным путём /usr/bin/ls.


Prompt: что показывает приглашение

Открываешь терминал, и курсор мигает после строки вроде:

root@server:~#

Это prompt - приглашение к вводу команды.

  • root - имя пользователя
  • server - имя хоста, то есть машины
  • ~ - текущая директория; символ ~ означает домашнюю директорию
  • # - ты работаешь как суперпользователь root

У обычного пользователя prompt часто заканчивается символом $:

alice@server:~$

В лабораторных этого курса ты работаешь от root. Это удобно для обучения, но важно помнить: root может удалить или изменить почти всё. Поэтому перед опасными командами проверяй текущую директорию через pwd и список файлов через ls.


Почему терминал быстрее мыши

GUI удобен, когда нужно разово нажать кнопку. Терминал удобен, когда нужно точно повторить действие, сохранить результат, автоматизировать процесс или выполнить операцию на удалённом сервере без графического интерфейса.

Например, в GUI ты открываешь файловый менеджер, ищешь директорию, сортируешь список и глазами выбираешь файлы. В терминале это превращается в одну команду:

find /var/log -name "*.log" -size +10M

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


Горячие клавиши терминала

Горячие клавиши экономят много времени и снижают количество ошибок при наборе команд.

Клавиша Что делает
Tab Автодополнение команды или пути; два нажатия показывают варианты
↑ / ↓ Перемещение по истории команд
Ctrl+R Поиск по истории
Ctrl+C Прервать выполнение текущей команды
Ctrl+D Завершить ввод или выйти из текущей shell-сессии, как exit
Ctrl+Z Приостановить текущий процесс
Ctrl+L Очистить экран, как команда clear
Ctrl+A Перейти в начало строки
Ctrl+E Перейти в конец строки
Ctrl+W Удалить одно слово влево
Ctrl+U Удалить всё от курсора до начала строки
Ctrl+K Удалить всё от курсора до конца строки
Alt+B Перейти на одно слово назад
Alt+F Перейти на одно слово вперёд
Ctrl+Shift+C Скопировать выделенный текст в большинстве терминалов
Ctrl+Shift+V Вставить текст в большинстве терминалов

Ctrl+C в терминале не копирует текст. Он посылает процессу сигнал прерывания. Для копирования в большинстве терминалов используется Ctrl+Shift+C, для вставки - Ctrl+Shift+V.

Практический пример: ты случайно запустил tail -f /var/log/syslog, и команда не завершается, потому что следит за файлом. Нажми Ctrl+C, чтобы вернуться к prompt.

Если набрал длинную команду и понял, что она не нужна, нажми Ctrl+A, затем Ctrl+K: курсор перейдёт в начало строки, а потом удалит строку целиком. Когда курсор уже в конце строки, часто достаточно Ctrl+U.

Если ошибка в начале длинной команды, не стирай её целиком. Нажми Ctrl+A, исправь начало и вернись в конец через Ctrl+E. Если нужно двигаться по словам, используй Alt+B и Alt+F.


man и --help

Linux поставляется со встроенной документацией для команд:

man ls
man find
man 5 crontab

Навигация в man: ↑/↓ - листать, /слово - искать, n - перейти к следующему совпадению, q - выйти.

Если нужен быстрый справочник по опциям, часто достаточно --help:

ls --help
cp --help
tar --help

В справке ты часто увидишь синтаксис ls [OPTION]... [FILE]....

Квадратные скобки означают, что часть необязательная. Многоточие означает, что аргументов может быть несколько. То есть ls, ls /etc, ls -la /etc /var/log - все эти варианты допустимы.


Open Source

Linux - свободное программное обеспечение. Исходный код открыт, его можно изучать, изменять и использовать без покупки лицензии на каждую машину.

Google, Meta, Microsoft, Amazon и тысячи независимых разработчиков участвуют в развитии Linux, потому что их инфраструктура зависит от него. Для тебя как DevOps-инженера это означает две вещи: знания Linux долго не устаревают, а поведение системы можно проверять не только по догадкам, но и по документации, исходникам и воспроизводимым командам.

Материал изучен?

Войдите, чтобы сохранить прогресс и перейти к практической лаборатории.

Войти и продолжить