Командная строка Linux: ТОП-10 базовых команд для DevOps и администраторов

Командная строка Linux: ТОП-10 базовых команд для DevOps и администраторов

От навигации по файлам до сетевой диагностики — разбор команд, которые должен знать каждый IT-специалист.

Работа с Linux неизбежно связана с CLI — интерфейсом, открывающим доступ к мощности системы. Мы собрали самые часто используемые команды, без которых невозможно администрировать сервер, следить за производительностью и обеспечивать безопасность инфраструктуры.

Команды были выбраны, исходя из регулярности их использования специалистами различного профиля, но основной упор делался на тех, которые позволяют диагностировать проблемы и осуществлять эффективное администрирование, так как в этом случае они становятся неотъемлемой частью инструментария IT-специалиста для мониторинга производительности и управления инфраструктурой. Частое применение команд упрощает повседневные операции и является основой для большинства административных действий.

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

Первый блок команд охватывает работу с директориями (cd, ls). Команды ls и cd предназначены для просмотра содержимого директорий и навигации по ним.

Команда cd помогает перемещаться по файловой структуре Linux и поддерживает абсолютные (cd /etc/network/) и относительные (cd ../etc/network/) пути. Здесь в качестве аргумента можно использовать специальные символы: cd ~ для перехода в домашнюю директорию или cd - для возвращения пользователя в предыдущую рабочую директорию.

Команда ls позволяет отображать содержимое директорий, включая скрытые файлы и дополнительную информацию: ls -lah /home/user1/, где:

  • -l: подробный режим вывода (разрешения, владелец, размер файла);
  • -a: отображение скрытых файлов;
  • -h: вывод размера файлов в понятном пользователю формате (KB, MB, GB). Эта опция в данном значении встречается достаточно часто у разных команд.

Второй блок команд предназначен для работы с файлами и директориями (touch, mkdir, cp, rm).

Команда touch изначально разрабатывалась для изменения временных отметок (timestamp) файлов, но если ее задать с именем несуществующего файла, то тот будет создан. Этот «побочный» эффект популярен настолько, что многие пользователи и не подозревают об истинном назначении команды. Итак, touch file1 создаст новый пустой файл с названием file1 в текущей директории. Для создания новой директории используется команда mkdir, которая обладает похожим синтаксисом, но имеет интересную опцию -p, позволяющую создавать несколько вложенных директорий: mkdir -p dir1/dir2/dir3.

Команды cp и rm используются для копирования и удаления файловых объектов. Так, чтобы скопировать директорию mydir1 со всем ее содержимым в директорию mydir2, нужно ввести команду: cp -rv mydir1 mydir2, а удалить директорию mydir3 и все ее содержимое можно следующим образом: rm -rf mydir3. Основные опции для обеих команд:

  • -f: принудительно переписывают или удаляют существующие файлы без подтверждения (force);
  • -r: копируют или удаляют директории и содержимое внутри них (recursive).
  • -v: показывают процесс копирования или удаления файлов (verbose).

Третий блок команд используется для просмотра содержимого текстовых файлов (cat, less, head, tail).

  • cat: отображает весь файл целиком (не рекомендуется для больших файлов, так как отсутствует функционал скроллинга);
  • less: осуществляет интерактивный постраничный просмотр (можно прокручивать вверх и вниз), а также выполняет поиск по тексту;
  • head и tail: выводят первые и последние 10 строк файла соответственно.

Команда tail имеет специфичную опцию -f, с помощью которой можно мониторить изменение файла в реальном времени, что очень удобно для просмотра журналов событий: tail -f /var/log/syslog.

Четвертый блок команд связан с редактированием файлов.

Текстовых редакторов много, но самым простым и функциональным является nano, с помощью которого можно быстро и с минимумом подготовки внести изменения в любой текстовый документ. Для их сохранения нужно лишь помнить сочетание клавиш ctrl+o, а для выхода из редактора – ctrl+x.

Считается, что самым популярным и функциональным является редактор vi/vim, но у него есть несколько режимов работы и большое количество сочетаний «горячих» клавиш, что уже потребует от пользователя определенного опыта. Для перехода в режим редактирования необходимо нажать клавиши a или i. Непростым является и выход из редактора. Для этого требуется нажать клавишу esc, затем набрать :wq (что означает записать изменения и выйти) или :q! (для выхода из редактора без изменений).

Редактор vi/vim есть во всех дистрибутивах Linux, и его функционал настолько богат, что только о нем печатаются и постоянно переиздаются целые книги (см. "Learning the vi and vim editors" (7th Edition) by Arnold Robbins, Elbert Hannah, and Linda Lamb. Published by O’Reilly Media, 2008).

Отдельного упоминания заслуживают программы, с помощью которых можно автоматизировать процесс редактирования. Приведем только один пример пакетной замены некоторых параметров в конфигурационных файлах. Допустим, нам необходимо заменить вариант реагирования системы предотвращения вторжений suricata c «alert» на «drop», которые можно встретить в начале строки файла сигнатур: sed -i 's/^alert/drop/' /var/lib/suricata/rules/suricata.rules.

Следует обратить внимание на знак циркумфлекс перед alert (^): он сделает выборку по началу строк. И, если данное слово встретится в середине или конце сигнатуры, замена не будет произведена.

Команда sed также очень популярна у системных администраторов и вместе с awk заслужила отдельной книги по описанию своего функционала (см. "sed & awk" (2nd Edition) by Dale Dougherty, Arnold Robbins. Published by O’Reilly Media, 1997).

Пятый блок команд предназначен для поиска по файлу и на различных накопителях.

Для этого внутри открытого документа, как уже отмечалось выше, можно использовать less, но если требуется искать текст внутри файлов без предварительного их открытия, то здесь идеально подходит команда grep. Например, чтобы просмотреть в журнале все строки, где встречается слово «error» без учета регистра символов, можно использовать следующее сочетание: grep -i error /var/log/syslog. Опция --color выделит красным найденные совпадения.

Еще один интересный пример: конфигурационный файл прокси-сервера Squid имеет большое количество строк, большинство из которых представляют собой комментарии и примеры конфигураций (отмечены #). Так, в репозитории Debian 12 конфигурационный файл для версии 5.7-2 содержит 9155 строк. Но как в этих тысячах строк обнаружить работающую конфигурацию?

Для вывода всех незакомментированных строк из конфигурационного файла Squid с помощью утилиты grep необходимо использовать опцию -v, которая покажет строки, НЕ соответствующие заданному регулярному выражению, то есть они не будут начинаться в начале строки на #: grep -v '^#' /etc/squid/squid.conf. В результате 32 строки из 9155 в данном конфигурационном файле окажутся незакоментированными.

Еще нередко требуется осуществлять поиск файлов по различным критериям, для чего обычно используют команду find, которая может искать по имени, типу, датам изменений и другим параметрам.

Например, find /var/log -name '*.log' -type f -mtime +30 найдет все файлы, в названиях которых встречается расширение log и которые были созданы 30 дней назад или более. Данную команду можно комбинировать с параметром -exec для массового выполнения операций над найденными файлами.

Шестой блок команд связан c архивацией, сжатием и распаковкой файлов.

Команда tar используется для архивирования директорий, и ее название произошло от Tape ARchive, поскольку изначально она предназначалась для записи файлов на магнитную ленту. Основные опции команды:

  • - c: создать новый архив (create);
  • - f: указать файл архива (file);
  • - v: показать процесс обработки каждого файла (verbose);
  • - z, j, J: сжать соответственно gzip, bzip2, xz;
  • - t: вывести список содержимого архива (list);
  • - x: извлечь файлы из архива (extract).

В результате создать архив из всех файлов директории mydir1 с именем backup1.tar.gz можно с помощью команды tar czvf backup1.tar.gz mydir1/, а извлечь содержимое архива в текущую директорию – tar xjf backup2.tar.bz2 и посмотреть содержимое архива без его распаковки – tar tf backup3.tar.xz.

В седьмой блок входят команды по работе с процессами (ps, top, htop).

С помощью данных команд можно наблюдать за активными процессами и диагностировать нагрузку на систему.

Команда ps выводит мгновенный снимок списка процессов. Команда ps aux покажет их в полном объеме (a), включая службы (x) с дополнительной информацией (u), такие как использование процессора, памяти и другие параметры.

Также в Linux есть полноценные диспетчеры задач: top, который динамически обновляет список процессов с сортировкой по нагрузке, и htop, являющийся расширенной версией top с поддержкой цвета и более удобным управлением.

Помимо этого, полезной командой является kill, с помощью которой можно отправлять разнообразные сигналы процессам. Так, использование сигнала SIGKILL (-9) вынуждает систему немедленно прекратить работу процесса, игнорируя любые процедуры очистки ресурсов. Лучше применять сигнал SIGTERM (-15), который дает процессу возможность корректно завершить свою работу и освободить используемые ресурсы: kill -15 1340 (пример ID процесса). Однако иногда SIGTERM может не справиться с зависшим процессом, тогда используют SIGKILL.

Восьмой блок команд (df, du и free) позволяет контролировать аппаратные ресурсы компьютера: дисковое пространство и оперативную память.

Все три команды поддерживают опцию -h для вывода размеров файлов, разделов и объема памяти в удобном для чтения формате (например, KB, MB, GB).

Команда df используется для отображения общей информации о доступном пространстве на всех подключенных файловых системах. К примеру, команда df -Th выведет необходимую информацию с указанием типа файловых систем.

Команда du предназначена для вычисления размера директорий и отдельных файлов. Так, команда du -sh /home/user/ отобразит суммарный размер указанной директории, а du -ah /var/log – предоставит также размер каждого файла и директории.

Команда free служит для просмотра доступной оперативной памяти и ее распределения системой: free -h.

Девятый блок команд предназначен для сетевой диагностики (ip, ping, ss, ssh).

Команда ip используется для управления настройками IP-адресов, таблицами маршрутов и сетевыми интерфейсами. Наиболее популярные параметры для диагностики: addr (a) выводит информацию обо всех интерфейсах и их IP-адресах; route (r) просматривает таблицу маршрутизации; link (l) показывает статус и настройки активных сетевых интерфейсов. Полезными опциями здесь являются -с, -br, -4, которые подсвечивают разными цветами важные параметры, отображают информацию в табличном виде и оставляют только IPv4-адреса. Например: ip -c -br -4 a .

Команда ping отправляет ICMP-запросы удаленному хосту и проверяет его доступность путем измерения времени отклика. Проверить на компьютере возможность работы с сетью Интернет можно, указав: ping 8.8.8.8, где в качестве аргумента указан адрес публичного DNS-сервера Google.

Команда ss заменила устаревшую команду netstat и предоставляет подробную информацию о состоянии TCP/UDP-портов. Например, указав ss -tulpn на сервере, администратор выяснит номера (n) открытых TCP (t) или UDP (u) портов, причем дополнительно будут показаны идентификаторы процессоров (p), отвечающих за соединения.

Команда ssh применяется для защищенного подключения к удаленным серверам и сетевому оборудованию. Пример подключения на нестандартный порт сервера: ssh -p 2222 admin@rebrain.com.

Десятый блок команд посвящен безопасной работе в системе с пользователями, группами, паролями, владением и правами доступа (sudo, groupadd, useradd, passwd, chmod, chown).

Команда sudo позволяет выполнять команды с привилегиями суперпользователя (root). Список разрешений хранится в файле /etc/sudoers. Например, для установки системы управления контейнерами необходимо запустить команду apt с правами root: sudo apt install docker.io. А для удаления сканера TCP/UDP-портов требуется применить sudo apt remove nmap. Также для выполнения выключения или перезагрузки компьютера нужно указать sudo poweroff и sudo reboot соответственно.

Для создания группы пользователей применяется команда groupadd. Например, groupadd developers создаст соответствующую группу, а командой useradd можно завести нового пользователя в систему (рекомендуется указывать опцию -m для автоматического формирования для него домашней директории). Например, необходимо нового пользователя dev1 добавить в группы sudo,developers. Для этого нужно ввести команду: useradd -m -G sudo,developers dev1. Команда passwd позволяет изменять пароль пользователя, например: passwd dev1.

Если требуется удалить или отредактировать пользователя или группу, то надо использовать команды userdel, usermod и groupdel, groupmod соответственно.

Команда chmod изменяет права доступа файлов и папок. Основные режимы записи прав: чтение (read): r = 4; запись (write): w = 2; исполнение (execute): x = 1. Права выставляются в цифровом (сумма значений для каждого типа) или символьном [u (user); g (group); o (other); a (all); + (добавление прав); -(снятие прав); = (установка точного значения прав)] форматах.

Например: установить права полного доступа владельцу (u) и оставить только чтение-исполнение группе владения (g) и другим пользователям (o): chmod 755 file.txt; сделать скрипт доступным для запуска только владельцу: chmod u+x script.sh.

Команда chown меняет владельца и группу владения для файла или директории. Например, для соотнесения пользователя alice и группы devops к директории dir1 надо указать команду chown alice:devops dir1.

Заключение

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

Для углубленного изучения полного спектра команд полезно обратиться к специализированным справочникам (например, "Linux Phrasebook" (2nd Edition) by Scott Granneman. Published by Addison Wesley, 2015) или записаться на специализированные курсы, такие как Linux Basic и Advanced, предлагаемые на платформе Rebrain. Эти программы позволят вам приобрести практические навыки и уверенно ориентироваться в командном режиме Linux, открывая новые горизонты для профессионального роста и развития.

2
Начать дискуссию