Linux CLI

Текстовый способ управлять Linux: вместо окон и кнопок — команды, которые вводятся в терминале.

Linux CLI (Command Line Interface, интерфейс командной строки) — способ работать с Linux через текстовые команды. Пользователь открывает терминал, вводит команду, например ls, и получает ответ тоже в виде текста. На серверах это основной, а часто и единственный способ управления: графической оболочки там обычно нет.

Как устроена командная строка

  • Терминал — окно, в котором печатают команды и читают ответы. К удаленному серверу подключаются по протоколу SSH, и терминал работает так же, как на своем компьютере.
  • Оболочка (shell) — программа, которая читает строку, разбирает ее и запускает нужную программу. В большинстве дистрибутивов это Bash, также популярны Zsh и Fish.
  • Утилиты — небольшие программы, каждая из которых делает одну вещь: показывает файлы, ищет текст, копирует, архивирует. Саму работу с файлами, памятью и устройствами выполняет ядро операционной системы, утилиты лишь передают ему запросы.

Команда состоит из имени программы, ключей и аргументов:

ls -l /var/log

Здесь ls — программа (вывести список файлов), -l — ключ (подробный формат), /var/log — аргумент (какую папку показать).

Главная сила — сочетание команд

Вывод одной команды можно передать на вход другой через вертикальную черту | (конвейер, pipe), а результат сохранить в файл через >. Так из простых утилит собираются решения конкретных задач. Например, посчитать, сколько строк с ошибками в журнале приложения:

grep "ERROR" app.log | wc -l

Или найти пять самых больших папок в текущем каталоге:

du -sh * | sort -rh | head -n 5

Команды, которые нужны в первую очередь

  • Навигация: pwd — где я, cd — перейти в папку, ls — что в ней.
  • Файлы: cp, mv, rm, mkdir — копировать, переместить, удалить, создать папку.
  • Просмотр: cat, less, tail -f — показать файл целиком, постранично или следить за новыми строками журнала.
  • Поиск: grep — по содержимому, find — по имени и свойствам файлов.
  • Права: chmod и chown — кому что разрешено, sudo — выполнить команду от имени администратора.
  • Процессы: ps, top, kill — что запущено, сколько ресурсов потребляет и как это остановить. Чем процесс отличается от потока, объясняет термин «Потоки и процессы».
  • Службы и журналы: systemctl запускает и останавливает сервисы, journalctl показывает их журналы.
  • Сеть: ssh — подключиться к серверу, scp — передать файл, curl — отправить HTTP-запрос.

Зачем командная строка, если есть графический интерфейс

  • Сервер без экрана. Серверу графика не нужна: она расходует память и процессор и добавляет лишние компоненты, которые нужно обновлять. Управление по SSH работает даже через медленный канал.
  • Автоматизация. Последовательность команд легко сохранить в скрипт и запускать по расписанию или в конвейере CI/CD. Нажатия кнопок так не повторить.
  • Воспроизводимость. Команду можно записать в инструкцию, отправить коллеге или проверить на код-ревью — на всех серверах она сработает одинаково.
  • Прозрачность. Видно, что именно сделано, а по истории команд можно восстановить ход работ.

Обратная сторона — команды нужно знать, а ошибка в одной строке может дорого стоить: rm -rf удаляет без корзины и без вопросов. Поэтому на рабочих серверах опасные действия выполняют только после проверки, а права обычных пользователей ограничивают.

Где это применяется на практике

На Linux работает большая часть серверной инфраструктуры: веб-серверы вроде Nginx, базы данных, контейнеры Docker и кластеры Kubernetes. Для администраторов и DevOps-инженеров командная строка — ежедневный инструмент. Типичный пример — разбор сбоя: инженер подключается к серверу по SSH и смотрит, что служба писала в журнал за последние полчаса:

journalctl -u payments --since "30 min ago"

Командная строка — и основной инструмент при импортозамещении: когда серверы переводят на российские дистрибутивы Linux — Astra Linux, РЕД ОС, ALT Linux, — установку, настройку и перенос данных выполняют и проверяют командами и скриптами.

С чего начать

  • man ls или ls --help — встроенная справка по любой команде.
  • Клавиша Tab дописывает имена команд и файлов, стрелка вверх возвращает прошлые команды.
  • Тренироваться лучше в виртуальной машине или контейнере, а не на рабочем сервере.