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
fonte
Respostas:
Gostaria de agradecer e contribuir de volta com um script simples e bruto (pode ser aprimorado), coloque-o em aplicativos de inicialização com:
também é preparado um travamento / apagão do sistema. Não foi testado com muita força ... mas está funcionando muito bem até agora. ele criará 2 arquivos, um em $ HOME (o log) e outro em / tmp (a solução alternativa de falha do sistema)
logSessionLock.sh
o log é assim:
fonte
O pacote " Workrave " não apenas rastreia se você está usando o computador e ajuda a fazer pausas durante o dia, mas também fornece um bom conjunto de estatísticas, tanto brutas (em um arquivo de texto) quanto por meio de uma GUI (
Daily usage: 5:41:00 for Jul 21
). As estatísticas também incluem itens como minutos de uso do mouse, distância de movimento do mouse, pressionamentos de teclas etc.Instale-o nos repositórios oficiais, adicione-o à sua barra de menus, clique com o botão direito do mouse e escolha "estatísticas". Você receberá um calendário para escolher o dia que deseja conhecer. Ou veja os dados em ~ / .workrave / historystats
fonte
Se você remover o perfil -, obterá um formato com falta de registro de data e hora, mas ele possui se o protetor de tela está ativo ou não.
Eu usei uma modificação desse script PHP para ativar ou desativar as coisas com base no meu protetor de tela
A outra opção é usar
gnome-screensaver-command --query
. Usando o crontab, deixo que o bitcoin use todos os 4 núcleos quando o protetor de tela está ativo, mas só recebe 1 núcleo quando estou usando o meu computador.DISPLAY: sem definir o comando DISPLAY, o gnome-screensaver-command não conseguirá encontrar a tela quando executar a partir do cron. Isso deve ser executado como o mesmo usuário conectado.
2>&1
: Isso direciona quaisquer erros para a saída padrão, que é capturada por ...| grep -q 'is active';
: o -q deixa o grep silencioso, não produz nada. Mas o comando retorna um sucesso ou falha que é usado pelo if.Sei que nenhuma delas é uma solução completa, mas espero que seja suficiente para você começar.
fonte
Este é um script mais completo. Você pode ativá-lo do cron a cada minuto e, se o protetor de tela estiver ativo, ele registrará quanto tempo está ativo. Uma vez desativado, ele fará a última medição e a adicionará ao ~ / Screensaver.log. Se você executá-lo a partir do cron, pode ser impreciso por até 59 segundos cada vez que o protetor de tela é desativado.
fonte
date "+%Y %m %d %H %M
echo "$ SS_LAG $ DSTR" >> $ {HTDOCS} /data/work.log fidate "+%Y %m %d %H %M
echo "$ SS_LAG $ DSTR" >> $ {HTDOCS} /data/work.log fi [/ code] Eu dou: como você cria um bloco de código em um comentário? 4 espaços não funcionam.Eu uso o
uptime
comando, mas ele não fornece o tempo ativo / inativo do sistema. o tempo de atividade fornece uma linha de exibição das seguintes informações. O horário atual, há quanto tempo o sistema está em execução, quantos usuários estão conectados no momento e a média de carga do sistema nos últimos 1, 5 e 15 minutos.fonte