Зачем нужна командная строка 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.
Ссылки для дальнейшего изучения:
Эта шпаргалка поможет вам быстро найти нужные команды и применять их в повседневной работе. Сохраняйте её в закладках и делитесь с коллегами!