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
psaccteCONFIG_BSD_PROCESS_ACCTativado
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'