Estou procurando uma maneira simples de determinar a quantidade aproximada de tempo por dia que gasto em um computador. Isso pode ser uma tarefa difícil se você tentar monitorar processos, pressionamentos de tecla, cliques do mouse e similares, porque pode-se fazer qualquer coisa, desde pensar em um problema de codificação, ler um artigo da Web, falar ao telefone ou sair andando pela Internet. cachorro. O computador não consegue ler minha mente. Como deixo os computadores 24 horas por dia, 7 dias por semana, os logins de monitoramento não funcionarão.
Eu tive a idéia de registrar quanto tempo o computador gasta no modo de proteção de tela. Meu erro não seria maior que o produto do tempo ocioso para o protetor de tela com o número de vezes que ele entra no modo de protetor de tela. Subtrair isso de 24 horas me daria uma estimativa razoável para meus propósitos.
O problema é: não sei como fazer logon quando o protetor de tela é ligado e desligado. Estou executando o Ubuntu 10.10 no momento na maioria das máquinas, prestes a começar a atualizar para o 11.04 em algumas delas.
Alguma ideia?
[edit] Depois de mais pesquisas, encontrei o dbus-monitor que parecia funcionar, mas está faltando um ingrediente importante. Aqui está o script que estou executando, que inicia o monitor como um daemon:
#!/bin/bash
RUNNING=`ps -A | grep "dbus-monitor"`
if [ ! $RUNNING ]; then
echo "(Re)starting dbus-monitor daemon"
nohup dbus-monitor "--profile" "type='signal',interface='org.gnome.ScreenSaver'" >> ${HOME}/sc.log &
fi
Aqui está a saída que ela produz após bloquear e desbloquear a tela algumas vezes:
sig 1304860712 153829 2 /org/freedesktop/DBus org.freedesktop.DBus NameAcquired
sig 1304860717 318732 462 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304860725 547928 463 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304861018 17 464 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304862919 403523 466 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
A segunda coluna é obviamente unix UTC em segundos. O ingrediente que falta é que ele não identifica se o protetor de tela está ativado ou desativado! Suponho que posso presumir que eles alternam a partir do momento em que NameAcquired acontece, mas me deixa desconfortável que possa haver um evento ausente ou extra que não posso prever que jogaria tudo fora de sincronia.
Muito obrigado por idéias.
jkcunningham