como saber o uso dos meus aplicativos?

2

Eu quero saber há quanto tempo meus programas foram usados. Por exemplo, se eu usar meu navegador da Web, quero saber a hora de início e de fechamento para obter um total de tempo de uso.

Basicamente eu quero saber quando uma aplicação inicia quando termina, e em função do evento faz algo como registrar a hora em um arquivo.

Eu pesquisei sobre ouvir eventos do kernel ou algo assim, mas nada. Também tentei com supervisord mas ele diz que o processo fecha muito rápido e não registrou nada.

Outra das minhas tentativas foi usar a biblioteca pyinotify para monitorar as pastas /proc , mas isso foi uma falha completa.

Estou trabalhando no Ubuntu. Alguma dica?

Estas são minhas fontes

por Inkognito 02.06.2014 / 15:16

1 resposta

2

Você pode usar a contabilidade de processo do BSD. lastcomm não reporta o tempo decorrido, mas pelo menos no Linux, ele é armazenado no banco de dados de contabilidade e pode ser consultado com o comando dump-acct .

$ sudo accton on # activate process accounting
$ sleep 5.23
$ sudo dump-acct /var/log/account/pacct | grep '^sleep'
sleep       |v3|     0.00|     0.00|   523.00| 10031| 10031| 14632.00|     0.00|   15261      416|Mon Jun  2 17:09:37 2014

O tempo decorrido é o 5º campo (acima de 523 centi-segundos).

Os campos 3 e 4 são o tempo do usuário e a hora do sistema, ou seja, o tempo que a CPU (qualquer CPU) gasta executando esse processo (qualquer thread desse processo).

Note que (pelo menos no Linux), o processo é contabilizado quando ele (qualquer thread de seu) morre e como o nome do processo que ele tinha quando morreu. Isso significa que, por exemplo, em:

sh -c 'sleep 4; exec sleep 5'

Um processo executa sh e, em seguida, bifurca outro processo para executar sleep 4 e, em seguida, o primeiro processo executa sleep 5 (alterando o nome). No banco de dados de contabilidade, obtemos:

sleep           |v3|     0.00|     0.00|   400.00|  1000|  1000| 10320.00|     0.00|   28867    28866|Tue Jun  3 07:45:52 2014
sleep           |v3|     0.00|     0.00|   900.00|  1000|  1000| 10320.00|     0.00|   28866    28801|Tue Jun  3 07:45:52 2014

Esse é o processo que executa sh e, em seguida, sleep 5 é contabilizado como sleep por 900 segundos, e não há menção a sh .

Para firefox (um aplicativo altamente multiencadeado) infelizmente, no meu caso, vejo tempos muito curtos, porque o processo é contabilizado quando um segmento de vida curta morre.

    
por 02.06.2014 / 18:10