TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #990 7.19K
​​Очередной пост на тему bash и работы в консоли. Думаю, это будет полезный для многих материал. Я собрал консольные утилиты и команды, которые использую для того, чтобы определить, кто и как нагружает CPU и Память в Linux. Традиционно напоминаю, что это не сборник лучших решений и инструментов. Это просто мой личный опыт. Не обязательно, что я всё делаю правильно и оптимально.

Сколько памяти занимает процесс. На примере mysqld.
ps -o vsz,rss,cmd --pid $(pgrep mysqld)

Список процессов с сортировкой по нагрузке на CPU.
ps aux --sort -pcpu

Этот список можно ограничить только десятью самыми прожорливыми процессами.
ps aux --sort=-pcpu,+pmem | head -n 11

Список процессов с сортировкой по занимаемой памяти.
ps aux --sort -rss
ps aux --sort -vsz

Наблюдаем через top за конкретным процессом.
top -c -p $(pgrep -d',' -f mysqld)

Информация о загрузке каждого ядра процессора. Утилита mpstat входит в состав пакета sysstat. Обычно в системных репах она есть.
mpstat -P ALL

Загрузка процессора в %. Этой простой метрики очень не хватает в Linux, особенно когда переходишь с Windows. Все колхозят на свой лад, чтобы получить эту метрику. Вот 2 варианта, которые есть у меня. При грубой прикидке, результат получается близкий к реальности.
top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'

awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' <(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)

Текстовый вывод нагрузки на процессор в консоль. Ингода бывает удобно выводить с каким-то интервалом информацию о нагрузке в консоль. Например, делать это в течении 60 секунд с интервалом в секунду можно с помощью sar, которая тоже есть в sysstat
sar 1 60

Определить, кто родитель процесса. Например, если указать pid worker процесса nginx, команда ниже покажет pid процесса master. В случае с nginx это не имеет большого смысла, но иногда нужно.
ps -o ppid= -p 5606

Посмотреть информацию о процессоре.
lscpu

В завершении скажу про полезную репу, которую я регулярно использую при анализе загрузки систем - https://github.com/brendangregg/perf-tools Там много полезных утилит. В контексте данной заметки для анализа процессов я использовал утилиту execsnoop.

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

#bash
  • 👍 3
More from @srv_admin
  1. Sep 23, 2026Очередная подборка статей авторов, которые согласились в ней участвовать. Кто не понимает,…
  2. Sep 23, 2026Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная ис…
  3. Sep 23, 2026Расскажу тем, кто не знает, и напомню тем, кто забыл, как я. Не надо в Proxmox в LXC конте…
  4. Sep 22, 2026Недавно случайно заметил любопытную информацию на тему Proxmox VE и новой функциональности…
  5. Sep 22, 2026✔️ Сети для всех — сообщество для тех, кто развивается в сетевом и системном администриров…
  6. Sep 22, 2026Я ранее уже рассказывал, что приобрёл себе домой полноценную серверную платформу на базе S…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →