Пять важнейших команд 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 для более надежной безопасности.
- Сгенерируйте пару ключей:
ssh-keygen -t ed25519 - Скопируйте открытый ключ на удаленный сервер:
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 первой линии. Держите небольшой набор проверенных команд в своих руководствах, а затем расширяйте их по мере необходимости в вашей среде.