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

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

Ответ 1

ps -p <pid> -o %cpu,%mem,cmd

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

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

Используйте pidstat (из sysstat - Refer Link).

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

$ pidstat -h -r -u -v -p 12345,11223 5

Ответ 5

Запустите программу и следите за ней

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

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.

Ответ 6

Как прокомментировано в caf answer выше, ps и в некоторых случаях pidstat даст вам среднее время жизни pCPU. Чтобы получить более точные результаты, используйте 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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

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

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

будет звучать как: 78.6

Ответ 10

ps aux|awk  '{print $2,$3,$4}'|grep PID

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

Ответ 11

Чтобы использовать память только для вашего приложения (в отличие от используемых совместно используемых библиотек, вам нужно использовать интерфейс Linux smaps). Этот ответ объясняет это хорошо.

Ответ 12

ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep

PID - идентификатор процесса

etime - Продолжительность процесса/Продолжительность жизни

% cpu - использование процессора

% mem - Использование памяти

cmd - команда

Заменить имя процесса любым процессом, который вы хотите отслеживать, mysql nginx php-fpm и т.д.

Ответ 13

Все ответы здесь показывают только процент памяти для PID.

Вот пример того, как получить использование rss-памяти в КБ для всех процессов apache, замените "grep apache" на "grep PID", если вы просто хотите посмотреть конкретный PID:

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$6}'"

Это печатает:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$6}'                                                                                                                                                                                                          
Thu Jan 25 15:44:13 2018

12588 9328
12589 8700
12590 9392
12591 9340
12592 8700
12811 15200
15453 9340
15693 3800
15694 2352
15695 1352
15697 948
22896 9360

С CPU%:

watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$3,\$6}'"

Выход:

Every 5.0s: ps aux -y | grep apache | awk '{print $2,$3,$6}'                                                                                                                                                                                                       
Thu Jan 25 15:46:00 2018

12588 0.0 9328
12589 0.0 8700
12590 0.0 9392
12591 0.0 9340
12592 0.0 8700
12811 0.0 15200
15453 0.0 9340
15778 0.0 3800
15779 0.0 2352
15780 0.0 1348
15782 0.0 948
22896 0.0 9360

Ответ 14

Для тех, кто долго боролся с вопросом, почему не работает выбранный ответ:

ps -p <pid> -o %cpu,%mem

Без пробела между %cpu, и %mem.

Ответ 15

Это хороший трюк, чтобы следить за одной или несколькими программами в режиме реального времени, а также наблюдать за выходом некоторых других инструментов:   watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"

Ответ 16

(Если вы находитесь в MacOS 10.10, попробуйте накопительную -c опцию top:

top -c a -pid PID

(Эта опция недоступна в другом Linux, пробовали с Scientific Linux el6 и RHEL6)

Ответ 17

Выше списка процесса процессора и процессора

        ps axo %cpu,%mem,command | sort -nr | head

Ответ 18

Использование ЦП и памяти одного процесса в Linux, или вы можете получить топ-10 процессоров, используемых процессором, используя следующую команду

ps -aux - сортировать -pcpu | голова -n 11