Я шукаю простий спосіб визначити приблизну кількість часу в день, який я проводжу за комп’ютером. Це може бути складним завданням, якщо ви намагаєтеся відстежувати процеси, натискання клавіш, клацання миші тощо, тому що можна робити що завгодно, роздумуючи над проблемою кодування, читаючи статтю в Інтернеті, розмовляючи по телефону або пішовши пішки собака. Комп'ютер не може прочитати мою думку. Оскільки я залишаю комп'ютери на цілодобовому моніторингу, вхід не працюватиме.
Я потрапив на думку про реєстрацію, скільки часу проводить комп’ютер у режимі заставки. Моя помилка тоді буде не більшою, ніж добуток заставки в режимі очікування до заставки, скільки разів він переходить у режим заставки. Віднімаючи це протягом 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