Experimente o pacote psacct
(contabilidade GNU), ele deve fazer praticamente tudo que você precisa, depois de instalado e ativado ( accton
), então lastcomm
manterá relatório sobre os processos do usuário (veja também sa
e %código%). Veja isto para referência: arquivo de log de comandos executado pelo usuário
Pode ser necessário atualizar a versão para registrar o PID / PPID, consulte , caso contrário, suspeito que ele não será informado sobre dump-acct
sem fork()
.
Atualizar
Se o exec()
outputs lastcomm
na segunda coluna, significa que o processo foi um fork (que nunca chamou F
para substituir-se por um novo processo). A saída de exec()
deve mostrar o PID (e o PPID) no formato acct v3.
Uma alternativa ao psacct pode ser o novo (ish) dump-acct
, mas ainda não há uma grande quantidade de suporte para ele, veja taskstats
em sua fonte de versão do kernel. Isso pode ajudar você a iniciar o link link O exemplo de código específico é Documentation/accounting/taskstats.txt
, você precisará modificar a linha tasklogger.c
na função printf()
, em primeiro lugar para substituir print_delayacct2()
por %u
para os %llu
types e em segundo lugar para adicionar o campo __u64
(e talvez ac_uid
) que você precisa rastrear pelo usuário. Invoque-o com algo como ac_gid
(onde tasklogger -dl -m 0-1
indica CPUs 0-1). Você verá os detalhes em tempo real à medida que cada processo termina.
Existe também um módulo perl -m 0-1
disponível no CPAN, embora eu não tenha usado.
Você precisará processar os dados com base nos timestamps se quiser a contagem de processos simultâneos por usuário, isso não é tão simples quanto parece.
Atualização 2
Ok, as coisas para verificar o suporte Linux::Taskstats::Read
necessário são:
- kernel (oficial) > = 2.6.8 para suporte à contabilidade v3 (ou backport)
- kernel com
psacct
eCONFIG_BSD_PROCESS_ACCT
ativado
pacote de contabilidade com capacidade - v3 (
CONFIG_BSD_PROCESS_ACCT_V3
), conforme observado acima
Todos os acima devem ser verdadeiros no CentOS 6, eu verifiquei um 5.xe não tem psacct
, então você teria que reconstrua seu kernel para ativá-lo.
O CONFIG_BSD_PROCESS_ACCT_V3=y
original tem cerca de 15 anos, a versão Red Hat / CentOS retrocedeu o suporte a exibição de v3 e PID (não posso testá-lo agora, mas deve funcionar).
Para verificar a configuração do seu kernel:
zgrep BSD_PROCESS_ACCT /proc/config.gz /boot/config-'uname -r'