Я хочу получить использование процессора и памяти для одного процесса в Linux - я знаю PID. Надеюсь, я могу получить его каждую секунду и записать его в CSV, используя команду «watch». Какую команду я могу использовать, чтобы получить эту информацию из командной строки Linux?
ps -p <pid> -o %cpu,%mem,cmd
(Вы можете не указывать "cmd", но это может помочь при отладке).
Обратите внимание, что это дает среднее использование процессора процессом за все время его работы.
Вариант ответа caf : top -p <pid>
top -p <pid>
Это автоматически обновляет загрузку процессора, так что это хорошо для мониторинга.
Вы можете получить результаты по имени процесса, используя
ps -C chrome -o %cpu,%mem,cmd
опция -C позволяет использовать имя процесса, не зная, что это pid.
-C
Использовать pidstat (из sysstat - Ссылка ).
например. чтобы отслеживать эти два идентификатора процесса (12345 и 11223) каждые 5 секунд, используйте
$ pidstat -h -r -u -v -p 12345,11223 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.
Как прокомментировано в ответе 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
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
ps команда (не следует использовать):
ps
top команда (следует использовать):
top
Используйте top для получения загрузки ЦП в реальном времени (текущий короткий интервал):
top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
будет отображаться как: 78.6
78.6
-b
-n 2
2
-d 0.2
-p 6962
tail -1
awk '{print $9}'
Вы можете использовать top -b и получить требуемый pid (с верхним запуском флага -b в пакетном режиме), а также использовать флаг -p и указать pid без использования grep.
top -b
-p
ps aux|awk '{print $2,$3,$4}'|grep PID
где первый столбец - это PID, загрузка ЦП во втором столбце, использование памяти в третьем столбце.