script para registrar todas as estatísticas de um processo específico

script para registrar todas as estatísticas de um processo específico

Quero monitorar o uso da CPU e o uso de leitura/gravação de disco para um processo específico, por exemplo ./myprocess.

Monitorar topo comando da CPU parece ser uma boa opção e ler e escrever iotopparece ser uma opção útil.

Por exemplo, para monitorar leitura/gravação a cada segundo, uso o comando iotop -tbod1 | grep "myprocess".

Minha dificuldade é que quero apenas armazenar três variáveis, ou seja, leitura/seg, gravação/seg, uso da CPU/seg. Você poderia me ajudar com um script que combine as saídas das três variáveis ​​acima tope iotopas armazene em um arquivo de log?

Obrigado!

Responder1

Que talPidStat?. Tentaste? Você pode precisar do Pid para o processo que deseja monitorar, mas isso deve ser bastante fácil de obter com o pscomando e um pouco de awkcorte.

Faz parte do pacote sysstatque você pode instalar em sistemas baseados em .deb digitandoapt-get install sysstat

Responder2

Você pode tentar usar prtstat( sudo apt-get install psmisc):

watch -n1 prtstat <PID> | tee mylog.log

ele despejará as estatísticas do processo a cada segundo. Se você estiver interessado em analisar esses dados, use a versão bruta (-r).

Por exemplo, se quiser utime, você pode estender o comando acima para:

prtstat -r 30557 | grep -w utime | awk '{print $4}'

Responder3

Você pode usaraudriapara esta tarefa:

audria -d 1 $(pidof myprocess) | awk -F "," '{print $7, $28, $32}'

Isso definirá o atraso para1segundo, monitorarmeuprocessoe imprima o atualCPU(campo 7),ler bytes/s(campo 28) eescrever bytes/s(campo 32). Os contadores de leitura/gravação aqui excluem bytes armazenados em cache, se você quiser incluí-los, escolha os campos26e30em vez de.

O audria também é capaz de executar seu processo para monitorá-lo desde o início, se necessário. Você também pode escolher um intervalo mais curto ou especificar vários PIDs para observar.

Responder4

Você pode tentar consultar o conteúdo /proc/$PID/statusperiodicamente; isso deve fornecer uma quantidade razoável das informações que você está procurando.

informação relacionada