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

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

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

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

Это руководство охватывает пять команд, которые вы будете постоянно использовать: systemctl, ss, apt или dnf, awk и ssh. Примеры сосредоточены на повседневных операциях, устранении неполадок и безопасном удаленном доступе.

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

Команда systemctl является основным интерфейсом для управления systemd — менеджером служб, используемым большинством современных серверных дистрибутивов, включая RHEL, Fedora, Debian и Ubuntu. Вы используете ее для управления службами, таймерами, сокетами и целями загрузки.

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

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

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

# Обеспечение запуска службы SSH при загрузке и запуск сейчас
sudo systemctl enable sshd --now

# Список всех неработающих служб
systemctl list-units --type=service --state=failed

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

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

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

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

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

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

# Найти процесс, прослушивающий порт 80
sudo ss -tulnp | 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

Независимо от того, управляете ли вы системами семейства RHEL с помощью dnf или системами семейства 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 remove <пакет> sudo apt remove <пакет>
Удалить неиспользуемые зависимости sudo dnf autoremove sudo apt autoremove
Поиск пакета dnf search <ключевое_слово> apt search <ключевое_слово>
# Пример: Обновление и очистка сервера Ubuntu
sudo apt update && sudo apt upgrade -y
sudo apt autoremove

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

Совет: Разносите обновления в производственной среде. В Debian и Ubuntu понимайте разницу между apt upgrade и apt full-upgrade. В системах семейства RHEL отделяйте рутинные обновления пакетов от обновлений основной версии ОС.

4. Продвинутая обработка текста и создание отчетов: awk

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

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

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

# Синтаксис: awk 'ШАБЛОН { ДЕЙСТВИЕ }'

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

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

# Пример: Суммировать размеры файлов, перечисленных командой 'ls -l' (поле 5)
ls -l | awk 'NR>1 { sum += $5 } END { print "Всего байт: " 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): Сопоставляет локальный порт на вашей машине с хостом и портом, доступным с удаленного сервера.

    # Доступ к базе данных, работающей на удаленном сервере (порт 3306), через локальный порт 5000
    ssh -L 5000:localhost:3306 user@remote_host
    
  • Удаленное перенаправление (-R): Сопоставляет удаленный порт с хостом и портом, доступным с вашей локальной машины. Полезно, когда удаленному серверу нужен временный доступ к локальной службе разработки.

    # Удаленный хост может получить доступ к моему локальному веб-серверу (80) через свой порт 8080
    ssh -R 8080:localhost:80 user@remote_host
    

Вывод

Если вы можете управлять службами с помощью systemctl, проверять сокеты с помощью ss, поддерживать пакеты в актуальном состоянии с помощью apt или dnf, разбирать текст с помощью awk и безопасно подключаться к системам с помощью ssh, вы справитесь с большинством задач администрирования Linux первой линии. Держите небольшой набор проверенных команд в своих руководствах, а затем расширяйте их по мере необходимости в вашей среде.