← Назад к вопросам

Какие знаешь утилиты в Linux?

2.0 Middle🔥 181 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Утилиты Linux для DevOps-инженера

Как DevOps-инженер с более чем 10-летним опытом, я ежедневно использую десятки утилит Linux для мониторинга, отладки, автоматизации и управления инфраструктурой. Вот ключевые категории и инструменты:

1. Мониторинг и анализ производительности

Эти утилиты незаменимы для диагностики проблем с производительностью:

  • top/htop - интерактивные мониторинги процессов в реальном времени. htop предлагает цветной интерфейс и вертикальное/горизонтальное разделение:
htop -d 10  # Обновление каждые 10 секунд
  • vmstat - статистика виртуальной памяти, процессов, блоков ввода/вывода:
vmstat 1 5  # 5 отчетов с интервалом 1 секунда
  • iostat - мониторинг нагрузки на дисковые подсистемы:
iostat -dx 2  # Расширенная статистика каждые 2 секунды
  • netstat/ss - анализ сетевых соединений. ss - современная замена netstat:
ss -tulpn  # Все слушающие сокеты с процессами
  • dstat - универсальный инструмент, объединяющий функции vmstat, iostat, ifstat:
dstat -cmsdn  # CPU, memory, swap, disk, network

2. Файловые системы и диски

  • df/du - информация о свободном месте и использовании диска:
du -sh /var/log/*  # Размер директорий в человеко-читаемом формате
df -h  # Свободное место на файловых системах
  • lsblk/fdisk - работа с блочными устройствами и разделами:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT  # Структурированный вывод
  • find - поиск файлов с различными критериями:
find /var/log -name "*.log" -mtime -7 -size +100M

3. Сетевые утилиты

  • tcpdump - анализ сетевого трафика:
tcpdump -i eth0 port 80 -n  # HTTP трафик без разрешения имен
  • nc (netcat) - "швейцарский нож" для сетевых операций:
nc -zv example.com 80 443  # Проверка открытых портов

The curl and wget utilities are used for HTTP requests and file downloads:

curl -s -o /dev/null -w "%{http_code}" https://api.service.com/health
  • iptables/nftables - управление фаерволом:
iptables -L -n -v  # Показать все правила с детализацией

4. Обработка текста и логов

  • grep/ack/ag - поиск в тексте. ag (silver searcher) особенно быстр:
ag --python "def.*error" /path/to/code
  • awk/sed - мощные инструменты для обработки текста:
awk '{sum+=$1} END {print sum}' data.txt  # Сумма чисел в первом столбце
sed -i 's/old/new/g' file.conf  # Замена текста в файле
  • jq - работа с JSON в командной строке:
curl -s https://api.example.com/data | jq '.items[].name'
  • tail/head - просмотр начала/конца файлов:
tail -f /var/log/nginx/access.log  # Реальный мониторинг логов

5. Управление процессами и системами

.

  • ps/pgrep/pkill - управление процессами:
pgrep -f "java.*application"  # Поиск PID по строке процесса
  • systemctl - управление systemd сервисами (критично для современных дистрибутивов):
systemctl status nginx --no-pager -l  # Детальный статус сервиса
  • journalctl - просмотр журналов systemd:
journalctl -u docker --since "2 hours ago" --no-pager

6. Безопасность и аудит

  • auditd - система аудита безопасности:
ausearch -k file_access  # Поиск событий аудита по ключу

-Lists the open files and processes using them:

lsof -i :8080  # Какие процессы используют порт 8080
lsof /var/log/syslog  # Кто открыл файл лога

7. Утилиты для автоматизации и DevOps

  • cron/anacron - планировщики задач:
crontab -l  # Показать текущие cron задачи
  • rsync - синхронизация файлов:
rsync -avz --delete /source/ user@remote:/destination/
  • tar/gzip - архивация:
tar -czf backup.tar.gz --exclude="*.tmp" /data/
  • ssh/scp - безопасное удаленное управление:
ssh -i ~/.ssh/key.pem user@host "docker ps"

8. Контейнеры и оркестрация

  • crictl - CLI для CRI-совместимых рантаймов (containerd, CRI-O)
  • ctr - CLI для containerd
  • kubectl (хотя не входит в стандартные дистрибутивы) - обязателен для Kubernetes

Критическое мышление при выборе утилит

В реальной практике важно не просто знать утилиты, а понимать, когда и какую применять:

  • Для быстрой диагностики сети: ss + tcpdump
  • Для анализа проблем с памятью: free + vmstat + просмотр /proc/meminfo
  • При нагрузке на диск: iostat + iotop + анализ await в выводах
  • Для отладки сервисов: systemctl status + journalctl + strace при необходимости

Многие утилиты имеют альтернативы с улучшенным UX: htop вместо top, bat вместо cat, fd вместо find, exa вместо ls. Однако в скриптах автоматизации я предпочитаю стандартные POSIX утилиты для гарантии совместимости.

Ключевой навык - умение комбинировать утилиты в конвейеры (pipes) для решения комплексных задач:

# Пример: найти 10 самых частых IP в логах nginx за сегодня
grep "$(date +'%d/%b/%Y')" /var/log/nginx/access.log | \
awk '{print $1}' | \
sort | \
uniq -c | \
sort -rn | \
head -10

В DevOps-контексте эти утилиты становятся строительными блоками для мониторинга (интеграция в Prometheus), автоматизации (Ansible/Terraform) и отладки распределенных систем.