Я хочу получить процессор и использование памяти одного процесса в Linux - я знаю PID. Надеюсь, я могу получить его каждую секунду и записать его в CSV, используя команду "смотреть". Какую команду я могу использовать для получения этой информации из командной строки Linux?
Получить использование ЦП и памяти одного процесса в 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
-b
: пакетный режим-n 2
: Количество итераций, используйте2
, потому что: При первом запуске он не имеет предыдущего образец для сравнения, поэтому эти начальные значения являются процентами с момента загрузки.-d 0.2
: время задержки (в секундах, здесь 200 мс)-p 6962
: PID монитораtail -1
: последний рядawk '{print $9}'
: 9-й столбец (номер использования процессора)
Ответ 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