Я ищу простой способ определить приблизительное количество времени, которое я провожу за компьютером. Это может быть трудной задачей, если вы пытаетесь отслеживать процессы, нажатия клавиш, щелчки мыши и т. П., Потому что вы можете делать все, что угодно, от размышлений о проблеме кодирования, чтения веб-статьи, разговора по телефону или до ухода от прогулки собака. Компьютер не может читать мои мысли. Поскольку я оставляю компьютеры включенными круглосуточно, вход в систему мониторинга не будет работать.
Я натолкнулся на мысль записать, сколько времени компьютер проводит в режиме заставки. Тогда моя ошибка будет не больше, чем произведение времени простоя на экранную заставку с тем, сколько раз он переходит в режим заставки. Вычитание этого из 24 часов дало бы мне оценку, которая была бы разумна для моих целей.
Проблема: я не знаю, как войти, когда заставка включается и выключается. В настоящее время я использую Ubuntu 10.10 на большинстве машин, и на некоторых из них планируется начать обновление до 11.04.
Есть идеи?
[править] После еще одного поиска я наткнулся на dbus-монитор, который выглядел так, как будто он может работать, но в нем отсутствует важный компонент. Вот скрипт, который я запускаю, который запускает монитор как демон:
#!/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
Вот результат, который он выдает после блокировки и разблокировки экрана пару раз:
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
Второй столбец - это, очевидно, Unix UTC в секундах. Недостающий компонент - он не определяет, включена ли заставка! Я полагаю, что могу предположить, что они переключаются со времени, когда происходит NameAcquired, но меня тошнит от того, что может быть пропущенное или дополнительное событие, которое я не могу предвидеть, что приведет к потере синхронизации.
Очень благодарен за идеи.
jkcunningham