
Quero monitorar o uso da CPU e o uso de leitura/gravação de disco para um processo específico, por exemplo ./myprocess
.
Monitorar top
o comando da CPU parece ser uma boa opção e ler e escrever iotop
parece 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 top
e iotop
as 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 ps
comando e um pouco de awk
corte.
Faz parte do pacote sysstat
que 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/status
periodicamente; isso deve fornecer uma quantidade razoável das informações que você está procurando.