Какими командами в Linux можно посмотреть, куда уходят ресурсы (CPU, память, диск, сеть)?

«Какими командами в Linux можно посмотреть, куда уходят ресурсы (CPU, память, диск, сеть)?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для мониторинга потребления ресурсов в Linux использую следующий набор утилит, часто комбинируя их для быстрой диагностики.

CPU:

  • top или htop — для интерактивного просмотра нагрузки и процессов, потребляющих CPU.
  • mpstat -P ALL 1 — показывает процент использования каждого ядра в реальном времени.
  • pidstat -u 1 — детализирует потребление CPU по процессам с обновлением каждую секунду.

Память (RAM и Swap):

  • free -h — общий объём использованной и свободной памяти.
  • vmstat 1 — показывает свопинг (si/so), активность памяти и общую статистику системы.
  • smem -s swap -r — сортирует процессы по использованию swap.

Диск (I/O):

  • iostat -xz 1 — ключевые метрики: %util (загрузка устройства), await (время отклика), r/s, w/s (IOPS).
  • iotop — аналог top для операций ввода-вывода, показывает процессы, активно работающие с диском.
  • df -h — проверка свободного места на файловых системах.

Сеть:

  • iftop или nload — визуализация трафика в реальном времени по сетевым интерфейсам.
  • nethogs — показывает трафик, сгруппированный по процессам (PID).
  • ss -tulpn или netstat -tulpn — список открытых портов и связанных с ними процессов.

Комбинированный мониторинг: Часто запускаю простой скрипт или команду watch для одновременного отслеживания нескольких метрик:

watch -n 1 "echo '=== CPU ==='; mpstat -P ALL 1 1 | tail -5; echo '=== MEM ==='; free -h; echo '=== DISK ==='; iostat -x 1 1 | tail -3"

Для долгосрочного сбора метрик и анализа трендов настраиваю Prometheus Node Exporter или аналогичные агенты.