Оглавление

Зачем нужна командная строка Linux?
Командная строка Linux — это мощный инструмент для управления системами, написания скриптов и автоматизации задач. Большинство DevOps-инженеров и системных администраторов используют терминал ежедневно для работы с серверами, создания CI/CD пайплайнов и управления конфигурацией. Этот справочник поможет вам быстро освоить основные команды Linux и углубить знания в администрировании.

Основные понятия:
В Linux командная строка запускается в оболочке, чаще всего — в bash (“Bourne Again SHell”). Она хранит историю команд и предоставляет простой интерфейс для выполнения задач с правами текущего пользователя. Знание базовых команд помогает избегать типичных ошибок, связанных с правами доступа и эффективнее использовать систему.

Основные команды для управления пользователями и группами

  • Создать нового пользователя:
  sudo adduser <username>

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

  sudo adduser devuser

Этот пример создаёт пользователя с именем «devuser». Используется в ситуациях, когда необходимо добавить нового разработчика или тестировщика в систему.

  • Добавить пользователя в группу:
  sudo usermod -aG <groupname> <username>

Это действие позволяет пользователю получить права группы.
Пример:

  sudo usermod -aG sudo devuser

Пользователь «devuser» добавляется в группу sudo для выполнения команд с повышенными правами. Полезно при добавлении привилегий новому администратору.

  • Удалить пользователя:
  sudo deluser <username>

Пример:

  sudo deluser testuser

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

  • Проверить группы пользователя:
  groups <username>

Отобразит группы, к которым принадлежит указанный пользователь.
Пример:

  groups devuser

Отображает группы для пользователя «devuser» и помогает убедиться, что у него есть необходимые права доступа.

Управление дисками и файловой системой

  • Показать подключенные устройства:
  lsblk

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

  • Просмотр информации о файловой системе:
  df -h

Показывает, сколько места занято и свободно на дисках.
Пример:

  df -h

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

  • Монтирование файловой системы:
  sudo mount /dev/<device> /mnt/<mount-point>

Пример:

  sudo mount /dev/sdb1 /mnt/backup

Монтирует устройство sdb1 в директорию /mnt/backup. Полезно при подключении внешних дисков для резервного копирования.

  • Размонтирование файловой системы:
  sudo umount /mnt/<mount-point>

Пример:

  sudo umount /mnt/backup

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

Работа с архивами и синхронизация

  • Создать архив tar:
  tar -cvf archive_name.tar /path/to/directory

Пример:

  tar -cvf project_backup.tar /home/devuser/project

Создаёт архив project_backup.tar из директории /home/devuser/project. Это удобно для архивации проектов перед переносом на другой сервер.

  • Распаковать архив:
  tar -xvf archive_name.tar

Пример:

  tar -xvf project_backup.tar

Используется для извлечения содержимого архива после получения бэкапа с другого сервера.

  • Синхронизировать файлы с удалённым сервером:
  rsync -avz /local/path/ user@remote_host:/remote/path/

Полезно для резервного копирования и синхронизации данных.
Пример:

  rsync -avz /home/devuser/data/ user@192.168.1.100:/backup/data/

Синхронизирует данные из локальной директории /home/devuser/data/ на удалённый сервер. Это удобно для периодического резервного копирования.

Управление пакетами и обновление системы

  • Обновить список пакетов и установить обновления (Debian/Ubuntu):
  sudo apt update && sudo apt upgrade

Пример использования:
Регулярное выполнение этой команды обеспечивает актуальность установленных пакетов и повышает безопасность системы.

  • Установить пакет:
  sudo apt install <package_name>

Пример:

  sudo apt install nginx

Устанавливает веб-сервер Nginx. Полезно при настройке веб-сервисов.

  • Удалить пакет:
  sudo apt remove <package_name>

Пример:

  sudo apt remove nginx

Удаляет установленный пакет Nginx из системы.

Управление процессами и ресурсами

  • Просмотр активных процессов:
  top

Обновляет информацию каждые 3 секунды и показывает ресурсы CPU и память.
Совет: Для более удобного управления процессами используйте команду htop. Она предоставляет более наглядный интерфейс и расширенные функции сортировки.

  • Завершение процесса:
  kill <PID>

Завершает процесс с указанным идентификатором.
Пример:

  kill 1234

Завершает процесс с PID 1234, что может быть полезно при остановке зависших приложений.

  • Системная статистика ввода-вывода:
  vmstat

Показывает состояние системы, включая статистику CPU и память.
Пример использования:
Полезно для диагностики загрузки системы при анализе производительности.

  • Мониторинг использования диска:
  iostat

Отображает статистику ввода-вывода дисковых устройств. Полезно для выявления узких мест в производительности дисковой системы.

Сетевые команды

  • Просмотреть сетевые интерфейсы:
  ifconfig

или

  ip addr show

Пример:
Используйте перед настройкой новых IP-адресов или проверкой подключений.

  • Проверка доступности хоста:
  ping <hostname_or_IP>

Пример:

  ping yandex.ru

Проверяет доступность yandex.ru и помогает диагностировать проблемы с подключением.

  • Отобразить активные подключения и открытые порты:
  netstat -plntu

или

  ss -plntu

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

  • Сниффинг трафика:
  sudo tcpdump -i <interface>

Отображает сетевой трафик, проходящий через указанный интерфейс.
Пример:

  sudo tcpdump -i eth0

Запуск на интерфейсе eth0 позволяет отслеживать активность сети для анализа трафика.

  • Трассировка маршрута до хоста:
  traceroute <hostname_or_IP>

Пример:

  traceroute yandex.ru

Показывает маршрут пакетов до yandex.ru, что полезно для диагностики сетевых задержек и проблем с маршрутизацией.

Управление сервисами

  • Запуск сервиса:
  sudo systemctl start <service_name>

Пример:

  sudo systemctl start nginx

Запускает сервис Nginx.

  • Остановка сервиса:
  sudo systemctl stop <service_name>

Пример:

  sudo systemctl stop nginx

Останавливает сервис Nginx.

  • Перезапуск сервиса:
  sudo systemctl restart <service_name>

Пример:

  sudo systemctl restart nginx

Перезапускает сервис Nginx после изменений в конфигурации.

  • Проверка статуса сервиса:
  sudo systemctl status <service_name>

Пример:

  sudo systemctl status nginx

Показывает текущий статус сервиса Nginx и выводит последние логи.

Безопасность и управление доступом

  • Настройка брандмауэра UFW (Uncomplicated Firewall):
    Разрешить порт:
  sudo ufw allow <port_number>

Пример:

  sudo ufw allow 22

Разрешает входящие подключения по SSH.

  • Запретить порт:
  sudo ufw deny <port_number>

Пример:

  sudo ufw deny 21

Блокирует входящие подключения по FTP.

  • Включить UFW:
  sudo ufw enable

Активирует брандмауэр с текущими правилами.

  • Просмотр статуса UFW:
  sudo ufw status verbose

Показывает активные правила и статус брандмауэра.

  • Генерация SSH-ключей:
  ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Создаёт пару приватного и публичного ключей для безопасного подключения по SSH.

Полезные советы DevOps

  • Используйте screen или tmux для управления сессиями: Это позволит восстанавливать сессии после разрыва соединения.
    Пример:
    Запустите tmux перед началом длительного процесса, чтобы при разрыве подключения можно было вернуться к сессии.
  • Автоматизируйте задачи с помощью сценариев shell: Скрипты bash помогут автоматизировать повседневные задачи, такие как резервное копирование, обновление систем и развёртывание приложений.
    Пример:
  #!/bin/bash
  tar -czvf /backup/$(date +%F)_project_backup.tar.gz /home/devuser/project

Этот скрипт создаёт сжатый архив проекта с датой в имени файла. Можно добавить его в cron для автоматического выполнения.

  • Используйте планировщик задач cron: Позволяет выполнять команды или скрипты по расписанию.
    Пример:
  crontab -e

Добавьте следующую строку для ежедневного выполнения бэкапа в 2 часа ночи:

  0 2 * * * /home/devuser/scripts/backup.sh
  • Следите за логами системы и приложений: Используйте команды tail, less, grep для анализа логов.
    Пример:
  tail -f /var/log/syslog

Позволяет в реальном времени просматривать системные логи.

  • Используйте алиасы для сокращения команд:
    Пример:
  alias ll='ls -la'

Добавьте эту строку в файл ~/.bashrc, чтобы команда ll выполняла ls -la.

  • Настройте SSH-доступ по ключам: Это повысит безопасность при удалённом подключении к серверам.

Заключение

Владение командами Linux — неотъемлемая часть работы DevOps-инженера и системного администратора. Этот справочник предоставляет базовые и продвинутые команды, которые помогут вам эффективно управлять системами, автоматизировать задачи и поддерживать безопасность серверов. Регулярно практикуйтесь и расширяйте свои знания, чтобы оставаться компетентным специалистом в области администрирования Linux.

Ссылки для дальнейшего изучения:

Эта шпаргалка поможет вам быстро найти нужные команды и применять их в повседневной работе. Сохраняйте её в закладках и делитесь с коллегами!