"административно запрещенный" определенное сообщение ICMP, махают рукой, останавливая, который кипит "Администратору, явно хочет это заблокированное соединение".
Проверьте свои iptables настройки.
На Linux, top
на самом деле поддержки, фокусирующиеся на единственном процессе, хотя это естественно не имеет графика истории:
top -p PID
Это также доступно на Mac OS X с другим синтаксисом:
top -pid PID
htop
большая замена к top
. Это имеет... Цвета! Простые сочетания клавиш! Прокрутите список с помощью клавиш со стрелками! Уничтожьте процесс, не уезжая и без того, чтобы принимать во внимание PID! Mark несколько процессов и уничтожьте их всех!
Среди всех функций в странице справочника говорится, что можно нажать F для следования за процессом.
Действительно, необходимо попробовать htop
. Я никогда не запускал top
снова, после первого раза я использовал htop
.
Отобразите единственный процесс:
htop -p PID
top
имеет цвета! Слишком плохо его цвета довольно бесполезны, особенно по сравнению с htop
(который исчезает, другие пользователи обрабатывают и выделяют базовое имя программы).
– Denilson Sá Maia
12.01.2011, 20:17
htop -p PID
будет работать также, точно так же, как пример, данный @Michael Mrozek.
– noisebleed
25.11.2014, 14:05
Я обычно использую следующие два:
Кронциркуль HP: его очень хороший инструмент для процессов контроля это можно проверить граф вызовов и другую информацию о низком уровне также. Но отметьте его свободное только персональным использованием.
daemontools: набор инструментов для руководящих сервисов UNIX
Для использования той информации о сценарии, можно сделать это:
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); это обеспечивает хороший и быстрый точный результат того, что происходит в самый момент.
Настройте переменные к своим потребностям.
icacls <directory> /grant <user>:f /t
f full access /t recurse"-c a" найдена в top для Mac 10.8.5.
Для Scientific Linux опция -S, которая может быть установлена интерактивно.[1120308]
Если вы знаете, что имя процесса вы можете использовать
top -p $(pidof <process_name>)
Если у вас урезанный дистрибутив Linux, в котором top не имеет параметра для каждого процесса (-p) или связанных параметров, вы можете проанализировать вывод команды top для имени вашего процесса, чтобы получить информацию об использовании ЦП для каждого процесса.
while true; do top -bn1 | awk '/your_process_name/ {print $8}' ; sleep 1; done
8 представляет использование ЦП на процесс в выводе команды top в моем встроенном дистрибутиве Linux
Используя 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
.
Недостаточно репутации, чтобы комментировать, но для psrecord можно вызвать и напрямую, программным способом, прямо в Python:
from psrecord.main import monitor
monitor(<pid number>, logfile = "./test.log", plot="./fig.png", include_children=True)
Я немного опоздал, но я поделюсь своим трюком с командной строкой, используя только значение по умолчанию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
....
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 загрузка процессора
Решение MacOS для создания следующего графика
# 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'
top -p `pgrep -f /usr/bin/kvm`
. – Stefan Lasiewski 17.08.2010, 06:33hostname
_pid.txt; exit'and – klerk 13.05.2014, 23:02