Estoy buscando una manera simple de determinar la cantidad aproximada de tiempo por día que paso en una computadora. Esta puede ser una tarea difícil si intenta monitorear procesos, pulsaciones de teclas, clics del mouse y similares, ya que uno puede hacer cualquier cosa, desde pensar en un problema de codificación, leer un artículo web, hablar por teléfono o salir caminando. perro. La computadora no puede leer mi mente. Desde que dejo las computadoras encendidas 24/7, los inicios de sesión de monitoreo no funcionarán.
Llegué a la idea de registrar cuánto tiempo pasa la computadora en modo de protector de pantalla. Mi error no sería mayor que el producto del tiempo de inactividad para el protector de pantalla con la cantidad de veces que entra en modo de protector de pantalla. Restar esto de 24 horas me daría una estimación que sería razonable para mis propósitos.
El problema es: no sé cómo iniciar sesión cuando el protector de pantalla se enciende y apaga. Estoy ejecutando Ubuntu 10.10 en este momento en la mayoría de las máquinas, a punto de comenzar a actualizar a 11.04 en algunas de ellas.
¿Algunas ideas?
[editar] Después de buscar más en Google, golpeé el monitor dbus que parecía funcionar, pero le falta un ingrediente importante. Aquí está el script que estoy ejecutando que inicia el monitor como un demonio:
#!/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
Aquí está la salida que produce después de bloquear y desbloquear la pantalla un par de veces:
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
La segunda columna es obviamente unix UTC en segundos. ¡El ingrediente que falta es que no identifica si el protector de pantalla está activado o desactivado! Supongo que podría suponer que cambian desde el momento en que ocurre NameAcquired, pero me inquieta que pueda haber un evento extra o perdido que no puedo anticipar, lo que desestabilizaría todo.
Muy obligado por las ideas.
jkcunningham
fuente
Respuestas:
Me gustaría agradecer y contribuir con un script simple y sin formato (puede mejorarse), ponerlo en aplicaciones de inicio con:
también está preparado el bloqueo / apagón del sistema. No se ha probado de forma exhaustiva ... pero funciona muy bien hasta ahora. creará 2 archivos, uno en $ HOME (el registro) y otro en / tmp (la solución alternativa de bloqueo del sistema)
logSessionLock.sh
el registro es así:
fuente
El paquete " Workrave " no solo rastrea si está usando su computadora y lo ayuda a tomar descansos durante el día, sino que también proporciona un buen conjunto de estadísticas, tanto en bruto (en un archivo de texto) como a través de una GUI (
Daily usage: 5:41:00 for Jul 21
). Las estadísticas también incluyen cosas como minutos de uso del mouse, distancia de movimiento del mouse, pulsaciones de teclas, etc.Instálelo desde los repositorios oficiales, agréguelo a su barra de menú, haga clic derecho y elija "estadísticas". Obtendrá un calendario para elegir el día que desea conocer. O mira los datos en ~ / .workrave / historystats
fuente
Si elimina el --perfil, obtendrá un formato con marcas de tiempo que faltan, pero tiene si el protector de pantalla está activo o no.
He usado una modificación de este script PHP para activar o desactivar cosas basadas en mi protector de pantalla
La otra opción es usar
gnome-screensaver-command --query
. Usando crontab, dejo que Bitcoin use los 4 núcleos cuando el protector de pantalla está activo, pero solo obtiene 1 núcleo cuando estoy usando mi computadora.DISPLAY: sin configurar DISPLAY, gnome-screensaver-command no podrá encontrar la pantalla cuando se ejecute desde cron. Esto debe ejecutarse cuando el mismo usuario inició sesión.
2>&1
: Esto dirige los errores a la salida estándar, que es capturada por ...| grep -q 'is active';
: -q hace que el grep sea silencioso, no genera nada. Pero el comando devuelve un éxito o un error que usa if.Me doy cuenta de que ninguno de estos es una solución completa, pero espero que sean suficientes para comenzar.
fuente
Este es un guión más completo. Puede activarlo desde cron cada minuto y si el protector de pantalla está activo, registrará cuánto tiempo ha estado activo. Una vez que se desactive, tomará la última medida y la agregará a ~ / Screensaver.log. Si lo ejecuta desde cron, podría ser inexacto hasta 59 segundos cada vez que el protector de pantalla se desactive.
fuente
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] Doy: ¿cómo se crea un bloque de código en un comentario? 4 espacios no funcionan.Uso el
uptime
comando, pero no da el tiempo activo / inactivo del sistema. uptime ofrece una visualización de una línea de la siguiente información. La hora actual, cuánto tiempo ha estado funcionando el sistema, cuántos usuarios están actualmente conectados y los promedios de carga del sistema durante los últimos 1, 5 y 15 minutos.fuente