
Я хочу отслеживать использование процессора, использование чтения/записи на диск для определенного процесса, скажем ./myprocess
, .
Для мониторинга top
команд ЦП это кажется хорошим вариантом, а для чтения и записи iotop
— удобным.
Например, для мониторинга чтения/записи за каждую секунду я использую команду iotop -tbod1 | grep "myprocess"
.
Моя трудность в том, что я просто хочу сохранить только три переменные, а именно чтение/сек, запись/сек, использование процессора/сек. Не могли бы вы помочь мне со скриптом, который объединяет выходные данные трех вышеупомянутых переменных top
и iotop
сохраняет их в файле журнала?
Спасибо!
решение1
Как насчетPidStat?. Вы пробовали? Вам может понадобиться Pid для процесса, который вы хотите отслеживать, но это должно быть довольно легко получить с помощью команды ps
и небольшого количества awk
чопов.
Это часть пакета sysstat
, который можно установить в системах на базе .deb, введя командуapt-get install sysstat
решение2
Вы можете попробовать использовать prtstat ( sudo apt-get install psmisc
):
watch -n1 prtstat <PID> | tee mylog.log
он будет выгружать статистику процесса каждую секунду. Если вы заинтересованы в разборе этих данных, используйте сырую версию (-r).
Например, если вам нужен utime, вы можете расширить команду выше до:
prtstat -r 30557 | grep -w utime | awk '{print $4}'
решение3
Вы можете использоватьавдриядля этой задачи:
audria -d 1 $(pidof myprocess) | awk -F "," '{print $7, $28, $32}'
Это установит задержку на1во-вторых, монитормойпроцесси распечатать текущийПроцессор(поле 7),прочитано байт/с(поле 28) изапись байт/с(поле 32). Счетчики чтения/записи здесь исключают кэшированные байты, если вы хотите включить их, выберите поля26и30вместо.
audria также может выполнять ваш процесс, чтобы контролировать его с самого начала, если это необходимо. Вы также можете выбрать более короткий интервал или указать несколько PID для наблюдения.
решение4
Вы можете попробовать периодически просматривать содержимое /proc/$PID/status
; это должно дать вам достаточно информации, которую вы ищете.