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

Какая команда в Linux показывает проценты загрузки CPU?

1.3 Junior🔥 172 комментариев
#Linux и администрирование#Мониторинг и логирование

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

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

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

Анализ команд для мониторинга загрузки CPU в Linux

В Linux не существует какой-то одной команды, которая бы показывала только проценты загрузки CPU. Мониторинг нагрузки на процессор — это комплексная задача, и для её решения существует целый арсенал инструментов, каждый со своей спецификой. Важное замечание: ключевые показатели — это не один общий процент, а разбивка по типам нагрузки (пользовательские процессы, система, ожидание ввода-вывода и др.). Список основных команд, которые должен знать DevOps Engineer, представлен ниже.

Основные и наиболее часто используемые команды

1. top / htop

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

  • В top общая строка загрузки CPU (например, %Cpu(s): 12.5 us, 6.2 sy, ...) показывает агрегированные проценты по всем ядрам с детализацией:
    *   **`us`** (user) — время выполнения пользовательских процессов.
    *   **`sy`** (system) — время выполнения процессов ядра.
    *   **`id`** (idle) — процент простоя.
    *   **`wa`** (wait) — время ожидания I/O.
    *   и другие (ni, hi, si, st).

  • Пример запуска top для быстрого анализа:
    top -bn1 | grep "%Cpu"
    
    Эта команда (-b — batch mode, -n1 — один цикл) выведет строку с загрузкой и завершит работу, что идеально для скриптов.

2. mpstat (из пакета sysstat)

Одна из лучших команд для детального анализа загрузки каждого CPU-ядра по отдельности. Показывает расширенную статистику, включая время работы на различных частотах, проценты прерываний и многое другое.

# Показать агрегированную статистику по всем ядрам (-P ALL) каждую секунду, 3 раза
mpstat -P ALL 1 3

Вывод будет содержать столбцы %user, %nice, %system, %iowait, %steal, %idle для каждого логического процессора.

3. vmstat

Команда дает сводную информацию не только о процессоре, но и о памяти, свопе, дисковом и прерываниях. Очень полезна для быстрой комплексной оценки.

# Вывод статистики каждую секунду
vmstat 1

Колонки, относящиеся к CPU:

  • r — количество процессов, ожидающих выполнения (runqueue).
  • us, sy, id, wa, st — аналогично top, но в процентном соотношении.

Специализированные и современные инструменты

4. sar (System Activity Reporter, часть sysstat)

Мощнейший инструмент для сбора, архивации и анализа исторических данных, в том числе и по CPU. Как DevOps, вы часто будете использовать его для расследования инцидентов "задним числом", если настроен сбор статистики через cron.

# Показать среднюю загрузку CPU за текущий день
sar

# Показать детальную статистику за определенное время (например, с 10:00 до 11:00)
sar -P ALL -s 10:00:00 -e 11:00:00

5. pidstat

Показывает загрузку CPU не глобально, а в разрезе отдельных процессов и потоков. Незаменим для идентификации "прожорливых" процессов.

# Показать загрузку CPU по процессам каждые 2 секунды
pidstat -u 2

# Показать загрузку по отдельным потокам указанного процесса
pidstat -t -p <PID> 1

6. Использование файловой системы /proc

Вся информация ядра о системе доступна через виртуальную файловую систему /proc. Необработанные данные о CPU можно получить из /proc/stat. Это основа, на которой работают многие из перечисленных выше утилит.

# Посмотреть сырые данные по CPU
cat /proc/stat

# Первая строка 'cpu' показывает сводку по всем ядрам.
# Для расчета процентов загрузки в скриптах берут два снимка с интервалом, вычисляют разницу значений и делят на общее прошедшее время.

Рекомендации для DevOps Engineer

  • Для интерактивного мониторинга вручную используйте htop (удобнее) или top.
  • Для скриптов и автоматизации берите mpstat -P ALL 1 1 или top -bn1. Данные из /proc/stat — для кастомных низкоуровневых решений.
  • Для детального анализа в реальном времени на уровне процессов и потоков применяйте pidstat.
  • Для расследования проблем после их возникновения — ваш лучший друг sar (при условии работающего sysstat).
  • Помните, что высокая загрузка CPU в %user/%system говорит о вычислительной нагрузке, а высокий %iowait или %steal (в виртуальных средах) указывает на проблемы с дисками или конкуренцию за физические ресурсы на гипервизоре соответственно.

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