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 дописывает имена команд и файлов, стрелка вверх возвращает прошлые команды.
- Тренироваться лучше в виртуальной машине или контейнере, а не на рабочем сервере.