Estou escrevendo um script que grava memória e uso da CPU em um arquivo de log, a cada hora em um cronjob. O arquivo de log será algo como isto:
"/n====CPU usage by core===="
Core0: 59.05% used
Core1: 57.68% used
"/n====RAM/CPU usage by process===="
PID | RAM used (KB) | %CPU used | COMM | USER
01 | 00003352 | 0.15% | /sbin/launchd | root
11 | 00009220 | 0.65% | /usr/libexec/Use | root
12 | 00005504 | 7.81% | /usr/libexec/kex | root
Ele provavelmente usará um comando para uso da CPU pelo core e outro comando para uso da RAM / CPU pelo processo, mas eu poderia usar um comando para ambos ou mais de dois comandos totais.
Os seguintes comandos mostram alguns ou todos os dados de que preciso, mas infelizmente não são soluções:
top
não possui o comando -b
no OS X, diferente do Linux. Isso significa que é auto-atualização e, portanto, é inadequado para gravar em um arquivo de log. Comando para obter uso% por CPU / núcleo?
htop
é um programa interativo inadequado para gravar em um arquivo de log. E mostra o uso da CPU pelo núcleo como um gráfico de barras ASCII de qualquer maneira. Comando para obter uso% por CPU / núcleo?
ps
pode subestimar o uso de memória, por exemplo, quando páginas
são compartilhados ou quando vários aplicativos usam o mesmo dinamicamente
bibliotecas vinculadas. Caso contrário, usaria ps -eo "pid rss pmem
pcpu comm user"
.
mpstat
não está no OS X e não está disponível no homebrew.
Ter meu usuário instalar o homebrew a partir da linha de comando é aceitável, mas tê-los construindo a partir do código-fonte e fazendo com que eles adicionem manualmente os comandos ao bash não.
Além disso, toda a temporização precisa ser feita no cronjob, por isso não posso usar comandos de atualização automática e eliminá-los após o primeiro ciclo.
Obrigado pela sua ajuda. :)