скрипт для регистрации всей статистики по определенному процессу

скрипт для регистрации всей статистики по определенному процессу

Я хочу отслеживать использование процессора, использование чтения/записи на диск для определенного процесса, скажем ./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; это должно дать вам достаточно информации, которую вы ищете.

Связанный контент