Какие знаешь утилиты в Linux?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Утилиты 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) и отладки распределенных систем.