Как контролировать ЦП/использование памяти единственного процесса?

"административно запрещенный" определенное сообщение ICMP, махают рукой, останавливая, который кипит "Администратору, явно хочет это заблокированное соединение".

Проверьте свои iptables настройки.

187
04.02.2011, 19:06
12 ответов

На Linux, top на самом деле поддержки, фокусирующиеся на единственном процессе, хотя это естественно не имеет графика истории:

top -p PID

Это также доступно на Mac OS X с другим синтаксисом:

top -pid PID
151
27.01.2020, 19:28
  • 1
    И так как Вы не можете хотеть искать PID каждый раз, попробуйте что-то как top -p `pgrep -f /usr/bin/kvm`. –  Stefan Lasiewski 17.08.2010, 06:33
  • 2
    я использую Кактусы для контроля некоторых отдельных процессов, но установка полноценной установки Кактусов звучит слишком сложной для простой ситуации, которую спрашивают здесь. –  Stefan Lasiewski 17.08.2010, 06:34
  • 3
    @Stefan: я предполагаю, что должен был бы выполнить это удаленно? –  Josh K 17.08.2010, 07:00
  • 4
    @Josh: Да необходимо было бы выполнить Кактусы (Который требует MySQL, Apache и немногих других пакетов) на другом сервере. На большинстве дистрибутивов довольно просто установить Конфетку использования, или склонный - добираются. –  Stefan Lasiewski 17.08.2010, 23:48
  • 5
    @Stefan, если Вы хотите для проверки remotly, можно сделать ssh@remotehost 'вершина-p PID> ~hostname_pid.txt; exit'and –  klerk 13.05.2014, 23:02

htop большая замена к top. Это имеет... Цвета! Простые сочетания клавиш! Прокрутите список с помощью клавиш со стрелками! Уничтожьте процесс, не уезжая и без того, чтобы принимать во внимание PID! Mark несколько процессов и уничтожьте их всех!

Среди всех функций в странице справочника говорится, что можно нажать F для следования за процессом.

Действительно, необходимо попробовать htop. Я никогда не запускал top снова, после первого раза я использовал htop.

Отобразите единственный процесс:

htop -p PID

64
27.01.2020, 19:28
  • 1
    +1 для htop. Это - одна из первой программы, которую я устанавливаю в новой системе. Это делает мою жизнь намного легче. Структурный вид также очень удобен. –  Barthelemy 24.11.2010, 14:22
  • 2
    top также имеет цвета.Пресса z. –  tshepang 12.01.2011, 03:41
  • 3
    Вы правы! top имеет цвета! Слишком плохо его цвета довольно бесполезны, особенно по сравнению с htop (который исчезает, другие пользователи обрабатывают и выделяют базовое имя программы). –  Denilson Sá Maia 12.01.2011, 20:17
  • 4
    И htop -p PID будет работать также, точно так же, как пример, данный @Michael Mrozek. –  noisebleed 25.11.2014, 14:05
  • 5
    Затем только причина использовать вершину, то, потому что htop не доступен или не может быть установлен. Именно поэтому htop был создан, для обеспечения намного большего количества функций. –  lepe 13.04.2015, 05:55

Я обычно использую следующие два:

  1. Кронциркуль HP: его очень хороший инструмент для процессов контроля это можно проверить граф вызовов и другую информацию о низком уровне также. Но отметьте его свободное только персональным использованием.

  2. daemontools: набор инструментов для руководящих сервисов UNIX

5
27.01.2020, 19:28
  • 1
    я использовал daemontools в течение многих лет. Это является большим как супервизор/сторожевой таймер для других процессов. Как это помогает Вам контролировать ЦП/использование памяти для одного процесса? –  Stefan Lasiewski 19.08.2010, 07:05

Для использования той информации о сценарии, можно сделать это:

calcPercCpu.sh

#!/bin/bash
nPid=$1;
nTimes=10; # customize it
delay=0.1; # customize it
strCalc=`top -d $delay -b -n $nTimes -p $nPid \
  |grep $nPid \
  |sed -r -e "s;\s\s*; ;g" -e "s;^ *;;" \
  |cut -d' ' -f9 \
  |tr '\n' '+' \
  |sed -r -e "s;(.*)[+]$;\1;" -e "s/.*/scale=2;(&)\/$nTimes/"`;
nPercCpu=`echo "$strCalc" |bc -l`
echo $nPercCpu

используйте как: calcPercCpu.sh 1234 где 1234 является pid

За указанный $nPid это измерит среднее число 10 снимков использования CPU через всю 1 секунду (задержка 0,1 с каждый * nTimes=10); это обеспечивает хороший и быстрый точный результат того, что происходит в самый момент.

Настройте переменные к своим потребностям.

8
27.01.2020, 19:28
[1120303] Если вам нужны средние за период времени конкретного процесса, попробуйте накопительную опцию -c вершины:

icacls <directory> /grant <user>:f /t
 f  full access
/t  recurse
"-c a" найдена в top для Mac 10.8.5.

Для Scientific Linux опция -S, которая может быть установлена интерактивно.[1120308]

0
27.01.2020, 19:28

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

top -p $(pidof <process_name>)
2
27.01.2020, 19:28

Если у вас урезанный дистрибутив Linux, в котором top не имеет параметра для каждого процесса (-p) или связанных параметров, вы можете проанализировать вывод команды top для имени вашего процесса, чтобы получить информацию об использовании ЦП для каждого процесса.

while true;  do top -bn1 | awk '/your_process_name/ {print  $8}' ; sleep 1; done

8 представляет использование ЦП на процесс в выводе команды top в моем встроенном дистрибутиве Linux

1
20.08.2021, 13:40

Используя topи awk, можно легко создать, например,. разделенный запятыми журнал использования %CPU($9)+ %MEM ($10), который впоследствии может быть загружен в любой инструмент статистики и построения графиков.

top -b -d $delay -p $pid | awk -v OFS="," '$1+0>0 {
print strftime("%Y-%m-%d %H:%M:%S"),$1,$NF,$9,$10; fflush() }'

Вывод будет таким, как

2019-03-26 17:43:47,2991,firefox,13.0,5.2
2019-03-26 17:43:48,2991,firefox,4.0,5.2
2019-03-26 17:43:49,2991,firefox,64.0,5.3
2019-03-26 17:43:50,2991,firefox,71.3,5.4
2019-03-26 17:43:51,2991,firefox,67.0,5.4

Однако это не даст хороших результатов для больших $delay, потому что напечатанная метка времени на самом деле $delayотстает из-за того, как работает вывод top. Не вдаваясь в подробности, один простой способ обойти это — записать время, предоставленноеtop:

top -b -d $delay -p $pid | awk -v OFS="," '$1=="top"{ time=$3 }
$1+0>0 { print time,$1,$NF,$9,$10; fflush() }'

Тогда метка времени будет точной, но вывод все равно будет задержан на $delay.

9
20.08.2021, 13:40

Недостаточно репутации, чтобы комментировать, но для psrecord можно вызвать и напрямую, программным способом, прямо в Python:

from psrecord.main import monitor
monitor(<pid number>, logfile = "./test.log", plot="./fig.png", include_children=True)
2
20.08.2021, 13:40

Я немного опоздал, но я поделюсь своим трюком с командной строкой, используя только значение по умолчаниюps

WATCHED_PID=$({ command_to_profile >log.stdout 2>log.stderr & } && echo $!);
while ps -p $WATCHED_PID --no-headers --format "etime pid %cpu %mem rss"; do 
   sleep 1 
done

Я использую это как один -вкладыш. Здесь первая строка запускает команду и сохраняет PID в переменной. Затем ps напечатает прошедшее время, PID, процент использования ЦП, процент памяти и память RSS. Вы также можете добавить другие поля.

Как только процесс завершится, команда psне вернет «успех», и цикл whileзавершится.

Вы можете игнорировать первую строку, если PID, который вы хотите профилировать, уже запущен. Просто поместите нужный идентификатор в переменную.

Вы получите такой вывод:

  00:00  7805  0.0  0.0  2784
  00:01  7805 99.0  0.8 63876
  00:02  7805 99.5  1.3 104532
  00:03  7805  100  1.6 129876
  00:04  7805  100  2.1 170796
  00:05  7805  100  2.9 234984
  00:06  7805  100  3.7 297552
  00:07  7805  100  4.0 319464
  00:08  7805  100  4.2 337680
  00:09  7805  100  4.5 358800
  00:10  7805  100  4.7 371736
 ....
5
20.08.2021, 13:40
pidstat -p 7994 2 

03:54:43 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:54:45 PM     0      7994    1.50    1.50    0.00    3.00     1  AliYunDun
03:54:47 PM     0      7994    1.00    1.00    0.00    2.00     0  AliYunDun

каждые 2 секунды процесс печати 7994 загрузка процессора

4
20.08.2021, 13:40

Решение MacOS для создания следующего графика

plotted data of process cpu consumption

# Install dependencies
brew install gnuplot libmagic 

# Sample process. Replace 1234 with process ID
while :;do ps -p 1234 -o %cpu= >> procdata.txt;sleep 1;done

# Plot
gnuplot<<<'set term png;set output "procplot.png";plot "procdata.txt" with boxes'
0
20.08.2021, 13:40

Теги

Похожие вопросы