Получить использование ЦП и памяти одного процесса в Linux? - PullRequest
149 голосов
/ 03 августа 2009

Я хочу получить использование процессора и памяти для одного процесса в Linux - я знаю PID. Надеюсь, я могу получить его каждую секунду и записать его в CSV, используя команду «watch». Какую команду я могу использовать, чтобы получить эту информацию из командной строки Linux?

Ответы [ 17 ]

202 голосов
/ 03 августа 2009
ps -p <pid> -o %cpu,%mem,cmd

(Вы можете не указывать "cmd", но это может помочь при отладке).

Обратите внимание, что это дает среднее использование процессора процессом за все время его работы.

60 голосов
/ 17 августа 2012

Вариант ответа caf : top -p <pid>

Это автоматически обновляет загрузку процессора, так что это хорошо для мониторинга.

31 голосов
/ 21 июля 2014

Вы можете получить результаты по имени процесса, используя

ps -C chrome -o %cpu,%mem,cmd

опция -C позволяет использовать имя процесса, не зная, что это pid.

23 голосов
/ 13 марта 2014

Использовать pidstat (из sysstat - Ссылка ).

например. чтобы отслеживать эти два идентификатора процесса (12345 и 11223) каждые 5 секунд, используйте

$ pidstat -h -r -u -v -p 12345,11223 5
9 голосов

Запустить программу и контролировать ее

Эта форма полезна, если вы хотите легко оценить исполняемый файл:

topp() (
  $* &>/dev/null &
  pid="$!"
  trap ':' INT
  echo 'CPU  MEM'
  while sleep 1; do ps --no-headers -o '%cpu,%mem' -p "$pid"; done
  kill "$pid"
)
topp ./myprog arg1 arg2

Теперь, когда вы нажимаете Ctrl + C, он выходит из программы и прекращает мониторинг. Пример вывода:

CPU  MEM
20.0  1.3
35.0  1.3
40.0  1.3

Похожие: https://unix.stackexchange.com/questions/554/how-to-monitor-cpu-memory-usage-of-a-single-process

Проверено на Ubuntu 16.04.

5 голосов
/ 16 июня 2016

Как прокомментировано в ответе caf выше, ps и в некоторых случаях pidstat даст вам среднее время жизни pCPU. Для получения более точных результатов используйте top. Если вам нужно запустить top после запуска:

top -b -n 1 -p <PID>

или только для данных процесса и заголовка:

top -b -n 1 -p <PID> | tail -3 | head -2

без заголовков:

top -b -n 1 -p <PID> | tail -2 | head -1
4 голосов
/ 26 апреля 2013
ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr

или за процесс

ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr |grep mysql
4 голосов
/ 11 октября 2018

ps команда (не следует использовать):

top команда (следует использовать):

Используйте top для получения загрузки ЦП в реальном времени (текущий короткий интервал):

top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'

будет отображаться как: 78.6

4 голосов
/ 03 августа 2009

Вы можете использовать top -b и получить требуемый pid (с верхним запуском флага -b в пакетном режиме), а также использовать флаг -p и указать pid без использования grep.

2 голосов
/ 21 июля 2014
ps aux|awk  '{print $2,$3,$4}'|grep PID

где первый столбец - это PID, загрузка ЦП во втором столбце, использование памяти в третьем столбце.

...