Пять важнейших команд Linux, которыми должен овладеть каждый системный администратор прямо сейчас

Освойте командную строку с помощью этого основного руководства, охватывающего пять бескомпромиссных инструментов Linux, которые должен знать каждый системный администратор. Мы подробно рассмотрим `systemctl` для управления службами, `ss` для сетевого анализа, `dnf`/`apt` для предоставления ресурсов, `awk` для расширенной автоматизации и анализа данных, а также `ssh` для безопасного удаленного доступа и туннелирования. Изучите практическое использование, лучшие практики и расширенные флаги для оптимизации повседневных операций, улучшения устранения неполадок и повышения безопасности системы.

45 просмотров

Пять незаменимых команд Linux, которыми должен овладеть каждый системный администратор прямо сейчас

Системное администрирование Linux требует точности, эффективности и глубокой зависимости от интерфейса командной строки (CLI). Хотя современные инструменты и панели управления предоставляют полезные абстракции, возможность быстро диагностировать проблемы, управлять службами и автоматизировать задачи фундаментально зависит от освоения основного набора фундаментальных команд. Для эффективных системных администраторов владение этими инструментами не является опцией — оно является обязательным.

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

1. Управление жизненным циклом служб: systemctl

Команда systemctl — это основной интерфейс для управления службой systemd и системным менеджером, который управляет почти всеми современными дистрибутивами Linux (включая RHEL, CentOS, Ubuntu и Debian). Как системный администратор, вы должны уметь управлять состоянием и поведением системных служб, таймеров, сокетов и целей.

Основные операции systemctl

Понимание различий между состоянием во время выполнения (start/stop) и конфигурацией загрузки (enable/disable) имеет решающее значение.

Команда Описание Назначение
status Отображает подробный текущий статус, включая последние журналы. Устранение неполадок и немедленные проверки.
start / stop Изменяет состояние службы сейчас. Управление во время выполнения.
enable / disable Настраивает службу на запуск/незапуск при загрузке. Управление сохранением состояния.
restart Останавливает, а затем запускает службу (часто безопаснее, чем простая последовательность stop/start). Применение изменений конфигурации.
reload Указывает службе перезагрузить свои файлы конфигурации без прерывания (если поддерживается). Обновление конфигурации без простоя.
# Проверить статус веб-сервера
sudo systemctl status httpd.service

# Убедиться, что служба SSH запускается при загрузке и запустить ее сейчас
sudo systemctl enable sshd --now

# Список всех сбойных служб
systemctl list-units --type=service --state=failed

Лучшая практика: Всегда используйте systemctl status <service> после запуска или перезапуска службы, чтобы убедиться, что она работает правильно, и проверить наличие ошибок конфигурации в выводе.

2. Анализ сети и статистика сокетов: ss

Команда ss (Socket Statistics) — это современная, более быстрая замена устаревшей netstat. Она необходима для устранения неполадок сетевого подключения, определения открытых портов, проверки правил брандмауэра и диагностики узких мест производительности, связанных с сокетами.

Практические флаги ss

Системные администраторы используют ss в основном для проверки того, какие порты открыты и какие приложения слушают.

# Показать слушающие TCP-сокеты (t), UDP-сокеты (u), числовые адреса (n) и информацию о процессе (p)
ss -tulnp

# Найти процесс, слушающий порт 80
sudo ss -tuln | grep ':80'

# Показать все установленные соединения с сервером
ss -o state established

Расширенное использование: фильтрация и суммирование

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

# Показать TCP-соединения с исходным адресом 192.168.1.5
ss -n state established '( src 192.168.1.5 )'

# Суммировать статистику сокетов по протоколу
ss -s

3. Надежное развертывание программного обеспечения: dnf / apt

Независимо от того, управляете ли вы производными Red Hat (CentOS, Fedora, RHEL), используя dnf (или ее предшественник yum), или производными Debian (Ubuntu, Debian), используя apt, управление пакетами является основной задачей обеспечения безопасности и функциональности систем. Мастерство включает в себя не только установку, но и поддержание репозиториев, обработку зависимостей и управление обновлениями безопасности.

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

Задача dnf (RHEL/Fedora) apt (Debian/Ubuntu)
Обновить метаданные sudo dnf check-update sudo apt update
Применить обновления безопасности/системы sudo dnf upgrade sudo apt upgrade
Установить пакет sudo dnf install httpd sudo apt install apache2
Удалить пакет и зависимости sudo dnf autoremove <package> sudo apt autoremove --purge <package>
Поиск пакета dnf search <keyword> apt search <keyword>
# Пример: обновление и очистка сервера Ubuntu
sudo apt update && sudo apt upgrade -y
sudo apt autoremove

# Пример: установка пакета и просмотр сведений о пакете (RHEL/Fedora)
sudo dnf install vim-enhanced
dnf info vim-enhanced

Совет: Всегда выполняйте обновления поэтапно в производственной среде и понимайте разницу между незначительным upgrade и основным dist-upgrade (в системах apt) или основным обновлением системы (в системах dnf).

4. Расширенная обработка текста и отчетность: awk

Хотя grep отлично подходит для простого фильтрации, а sed обрабатывает потоковое редактирование, язык программирования awk является лучшим инструментом для анализа структурированных данных, отчетности и сложной обработки текста в скриптах. Системные администраторы часто используют awk для разбора файлов журналов, файлов конфигурации и вывода команд.

awk обрабатывает текст построчно, разделяя каждую строку на поля на основе разделителя (по умолчанию — пробел). Переменные $1, $2 и т. д. относятся к этим полям.

Синтаксис и примеры awk

# Синтаксис: awk 'PATTERN { ACTION }'

# Пример: вывести имя пользователя (поле 1) и оболочку (поле 7) из /etc/passwd (разделитель ':')
awk -F ':' '{ print "User: " $1 " | Shell: " $7 }' /etc/passwd

# Пример: найти все процессы, использующие более 10% ЦП, и вывести PID и использование ЦП
ps aux | awk 'NR>1 && $3 > 10 { print "PID: " $2 " | CPU%: " $3 }'

# Пример: суммировать размеры файлов, перечисленных 'ls -l' (поле 5)
ls -l | awk 'NR>1 { sum += $5 } END { print "Total Bytes: " sum }'

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

5. Безопасный удаленный доступ и туннелирование: ssh

Протокол Secure Shell (ssh) — это жизненно важный инструмент для удаленного администрирования Linux. Системные администраторы должны владеть не только базовым входом в систему, но и расширенными конфигурациями, управлением ключами и методами туннелирования для обеспечения безопасного и эффективного доступа к инфраструктуре.

Освоение аутентификации на основе ключей

Аутентификация по паролю подвержена атакам методом перебора. Системные администраторы должны полагаться на SSH-ключи для повышения безопасности.

  1. Сгенерируйте пару ключей: ssh-keygen -t ed25519
  2. Скопируйте открытый ключ на удаленный сервер: ssh-copy-id user@remote_host

Основные конфигурации и использование ssh

Локальный файл конфигурации SSH (~/.ssh/config) позволяет определять псевдонимы и постоянные параметры соединения, упрощая ежедневные операции.

# Пример записи в ~/.ssh/config
Host db-prod-server
    Hostname 192.168.10.50
    User sysadmin_user
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_prod
    LocalForward 8080 127.0.0.1:80

SSH-туннелирование (переадресация портов)

Туннелирование позволяет безопасно получать доступ к службам за брандмауэром или безопасно проксировать трафик. Два основных типа:

  • Локальное перенаправление (-L): Сопоставляет локальный порт на вашей машине с портом на удаленном сервере (или хосте, доступном с удаленного сервера).

    ```bash

    Доступ к базе данных, работающей на удаленном сервере (порт 3306), через локальный порт 5000

    ssh -L 5000:localhost:3306 user@remote_host
    ```

  • Удаленное перенаправление (-R): Сопоставляет удаленный порт со службой, работающей на вашей локальной машине. Полезно для предоставления внешним машинам безопасного доступа к вашим внутренним ресурсам.

    ```bash

    Удаленный хост может получить доступ к моему локальному веб-серверу (80) через его порт 8080

    ssh -R 8080:localhost:80 user@remote_host
    ```

Заключение

Владение этими пятью командами — systemctl, ss, dnf/apt, awk и ssh — выводит системного администратора Linux за рамки базового выполнения к истинному мастерству операционной системы. Они обеспечивают эффективный мониторинг, надежное обслуживание, критическое устранение неполадок и мощную автоматизацию.

Самым большим активом системного администратора является способность быстро взаимодействовать с системой через командную строку. Посвятите время не только использованию этих команд, но и изучению их менее известных флагов и расширенных возможностей. Непрерывная практика и интеграция в ваши скрипты автоматизации — вот ключи к полному использованию их потенциала.