Как мы составили справочник из 200+ команд Linux для новой команды системных администраторов

Исходная ситуация

Региональный интернет-провайдер «СетьПлюс» из Воронежа расширил штат и нанял пятерых junior-администраторов. Парни пришли с базовым пониманием Linux, но без системного опыта: каждый знал по 20-30 команд и постоянно гуглил остальное. Руководитель IT-отдела обратился к нам в itfresh.ru с конкретным запросом — составить практический справочник, который покрывает 90% повседневных задач администратора.

Ситуация была типичной: серверный парк из 80 машин на Debian и CentOS, всё работает, но новички тратили по 2-3 часа в день на поиск нужных команд. Нам нужно было не просто составить список, а создать шпаргалку с реальными примерами, которую можно держать открытой в соседнем терминале.

Файловые операции: find, xargs, rsync и компания

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

Навигация и просмотр:

# Рекурсивный поиск файлов старше 30 дней и больше 100 MB
find /var/log -type f -mtime +30 -size +100M

# Поиск и удаление временных файлов с подтверждением
find /tmp -name "*.tmp" -mtime +7 -exec rm -i {} \;

# Массовое переименование через xargs
find . -name "*.bak" -print0 | xargs -0 -I {} mv {} {}.old

# Копирование структуры каталогов без файлов
find /source -type d -exec mkdir -p /dest/{} \;

Синхронизация и копирование:

# rsync с прогрессом, сжатием и исключениями
rsync -avzh --progress --exclude='*.log' --exclude='.cache' \
  /var/www/ backup@192.168.1.50:/backups/www/

# Инкрементальный бэкап с хардлинками (экономия места)
rsync -avh --link-dest=/backups/latest \
  /var/www/ /backups/$(date +%Y%m%d)/

# Копирование только изменённых файлов за последние сутки
find /data -mtime -1 -type f | rsync -avh --files-from=- / /backup/

Архивация:

# tar с исключением и сжатием
tar czf backup-$(date +%F).tar.gz --exclude='*.log' --exclude='node_modules' /var/www

# Распаковка в конкретную директорию
tar xzf archive.tar.gz -C /opt/restore/

# Просмотр содержимого без распаковки
tar tzf archive.tar.gz | head -20

Обработка текста: grep, awk, sed, cut

Второй блок — текстовые утилиты. Для провайдера это критически важно: анализ логов, парсинг конфигов, выборка данных из CSV-отчётов биллинга.

# grep: поиск ошибок в логах с контекстом (3 строки до и после)
grep -n -C 3 'ERROR\|FATAL' /var/log/syslog

# grep: рекурсивный поиск IP-адресов в конфигах
grep -rn '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /etc/

# grep: подсчёт количества уникальных IP, стучавшихся по SSH
grep 'Failed password' /var/log/auth.log | grep -oP '\d+\.\d+\.\d+\.\d+' | sort -u | wc -l

AWK для табличных данных:

# Суммировать трафик из лога биллинга (5-я колонка — байты)
awk '{sum += $5} END {printf "Total: %.2f GB\n", sum/1073741824}' /var/log/billing.log

# Топ-10 IP по количеству запросов из access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# Вывести строки, где время ответа > 5 секунд
awk '$NF > 5.0 {print $0}' /var/log/nginx/access.log

SED для массовых замен:

# Замена IP-адреса во всех конфигах Nginx
sed -i 's/192\.168\.1\.10/10\.0\.0\.10/g' /etc/nginx/conf.d/*.conf

# Удаление комментариев и пустых строк из конфига
sed '/^#/d; /^$/d' /etc/ssh/sshd_config

# Вставка строки после совпадения
sed '/\[mysqld\]/a\max_connections = 500' /etc/mysql/my.cnf

CUT и другие утилиты:

# Извлечение имён пользователей и их шеллов
cut -d: -f1,7 /etc/passwd

# Сортировка процессов по памяти
ps aux | sort -rnk 4 | head -10

# Уникальные значения из CSV (2-я колонка)
cut -d',' -f2 clients.csv | sort -u

Управление процессами: ps, kill, nice, nohup

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

# Дерево процессов с PID и потреблением ресурсов
ps auxf | head -40

# Найти все процессы конкретного пользователя
ps -u www-data -o pid,ppid,%cpu,%mem,cmd

# Найти процесс по имени и убить его
pgrep -f 'python backup.py' | xargs kill -15

# Мягкое завершение → ожидание → принудительное
kill -15 $PID; sleep 5; kill -0 $PID 2>/dev/null && kill -9 $PID

Приоритеты и фоновые задачи:

# Запуск ресурсоёмкой задачи с пониженным приоритетом
nice -n 19 tar czf /backup/full-$(date +%F).tar.gz /var/www

# Изменение приоритета работающего процесса
renice -n 10 -p $(pgrep mysqld)

# Запуск задачи, которая переживёт закрытие SSH
nohup rsync -avz /data/ remote:/backup/ > /var/log/rsync.log 2>&1 &

# Альтернатива через screen
screen -dmS backup bash -c 'rsync -avz /data/ remote:/backup/ && echo DONE'
screen -r backup  # подключиться к сессии

Сеть: ss, ip, dig, curl, nmap

Для провайдера сетевой блок — самый востребованный. Мы включили команды от базовой диагностики до сканирования портов.

# ss: активные TCP-соединения с именами процессов
ss -tnlp

# ss: кто подключён к порту 443
ss -tn state established '( dport = :443 )'

# ss: подсчёт соединений по состояниям
ss -s

# ip: настройка сетевого интерфейса
ip addr add 10.0.0.5/24 dev eth0
ip link set eth0 up
ip route add default via 10.0.0.1

# ip: просмотр таблицы маршрутизации
ip route show

DNS-диагностика:

# dig: полный запрос с трассировкой
dig +trace example.com

# dig: проверка конкретного DNS-сервера
dig @8.8.8.8 example.com A +short

# dig: обратный DNS-запрос
dig -x 93.184.216.34

# dig: все записи домена
dig example.com ANY +noall +answer

HTTP-диагностика и сканирование:

# curl: проверка с таймингами
curl -o /dev/null -s -w 'DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n' https://example.com

# curl: отправка POST с JSON
curl -X POST -H 'Content-Type: application/json' -d '{"user":"test"}' http://api.local/v1/users

# nmap: сканирование подсети на открытые порты
nmap -sV -p 22,80,443,3306 192.168.1.0/24

# nmap: быстрое обнаружение хостов
nmap -sn 10.0.0.0/24

Диски и файловые системы: lsblk, df, mount, fdisk

Пятый блок — управление дисками. У провайдера регулярно добавляются новые диски, расширяются разделы, монтируется NFS.

# lsblk: обзор всех дисков и разделов
lsblk -f  # с информацией о файловой системе и UUID

# df: использование дисков в человекочитаемом формате
df -hT  # с типом файловой системы

# du: топ-10 самых тяжёлых каталогов
du -sh /var/* 2>/dev/null | sort -rh | head -10

# Создание раздела на новом диске
fdisk /dev/sdb <> /etc/fstab

LVM для гибкого управления:

# Создание LVM
pvcreate /dev/sdc
vgcreate vg_data /dev/sdc
lvcreate -L 50G -n lv_www vg_data
mkfs.xfs /dev/vg_data/lv_www

# Расширение LV на лету
lvextend -L +20G /dev/vg_data/lv_www
xfs_growfs /mnt/www  # для XFS
# или resize2fs /dev/vg_data/lv_www  # для ext4

Systemd и управление пакетами

Шестой блок — systemd и пакетный менеджер. Мы покрыли оба семейства, поскольку у «СетьПлюс» есть и Debian, и CentOS.

# systemctl: управление сервисами
systemctl start nginx
systemctl enable nginx  # автозапуск
systemctl status nginx  # статус с последними логами
systemctl restart nginx
systemctl reload nginx  # перечитать конфиг без рестарта

# systemctl: диагностика
systemctl list-units --state=failed  # упавшие сервисы
systemctl list-timers  # запланированные таймеры
systemctl cat nginx.service  # просмотр unit-файла

# journalctl: работа с логами
journalctl -u nginx --since '1 hour ago'  # логи за час
journalctl -u nginx -f  # follow — как tail -f
journalctl -p err -b  # только ошибки с момента загрузки
journalctl --disk-usage  # сколько места занимают логи
journalctl --vacuum-size=500M  # очистить до 500 MB

Пакетный менеджер:

# Debian/Ubuntu
apt update && apt upgrade -y
apt search nginx
apt show nginx
apt install nginx=1.24.0-1  # конкретная версия
apt autoremove  # удалить ненужные зависимости

# CentOS/RHEL
dnf check-update
dnf install nginx
dnf list installed | grep nginx
dnf history  # история установок
dnf rollback 15  # откат к транзакции

Результаты и выводы

Справочник мы оформили как внутреннюю wiki-страницу с поиском и разбивкой по категориям. Через месяц собрали обратную связь:

  • Скорость решения задач — новички стали закрывать тикеты на 40% быстрее. Раньше простая задача «найти и удалить старые логи» занимала 30 минут гугления, теперь — 2 минуты.
  • Количество ошибок — снизилось на 60%. Типичная ошибка «rm -rf с неправильным путём» ушла, потому что в справочнике были примеры с безопасными паттернами.
  • Самостоятельность — количество вопросов старшим администраторам сократилось втрое.

Ключевые принципы, которые мы использовали при создании справочника:

  • Группировка по задачам, а не по алфавиту.
  • Каждая команда — с реальным примером из инфраструктуры клиента.
  • Пометки «осторожно» у деструктивных команд (rm, dd, fdisk).
  • Ссылки на man-страницы и cheat.sh для углублённого изучения.

Если вы набираете новую команду и хотите сократить период адаптации, такой справочник — одна из лучших инвестиций. Мы в itfresh.ru готовы помочь с составлением справочника под вашу инфраструктуру.

Часто задаваемые вопросы

На практике для повседневной работы достаточно уверенно владеть 80-100 командами. Это покрывает файловые операции (ls, cp, mv, find, rsync), сеть (ss, ip, curl, dig), процессы (ps, kill, top), systemd и пакетный менеджер. Остальные можно подсматривать в справочнике.
Man-страницы описывают все флаги и опции команды, но не дают контекста — когда и зачем её применять. Справочник группирует команды по задачам и даёт конкретные примеры из реальной практики. Он не заменяет man, а дополняет его.
По нашему опыту тройка лидеров: rm -rf (удаление без восстановления), chmod -R 777 (открытие всех прав — дыра в безопасности) и dd (запись побитово — легко перепутать if и of). Для каждой такой команды мы добавляли предупреждения и безопасные альтернативы.
Мы рекомендуем выделять ответственного, который раз в квартал проверяет команды на актуальность. Deprecated-команды помечаются (например, ifconfig → ip, netstat → ss), добавляются новые инструменты. Формат wiki удобнее PDF, потому что правки вносятся моментально.
Базовые команды (find, grep, ps, kill) одинаковы на всех дистрибутивах. Различия в пакетном менеджере (apt vs dnf), системе инициализации (хотя сейчас почти везде systemd) и специфичных утилитах. Мы рекомендуем делать пометки, какие команды для какого дистрибутива.

Нужна помощь с проектом?

Специалисты АйТи Фреш помогут с архитектурой, DevOps, безопасностью и разработкой — 15+ лет опыта

📞 Связаться с нами
#linux команды#справочник linux#системное администрирование#find#grep#awk#sed#systemctl
Комментарии 0

Оставить комментарий

загрузка...