Я ищу простой способ определить приблизительное количество времени, которое я провожу за компьютером. Это может быть трудной задачей, если вы пытаетесь отслеживать процессы, нажатия клавиш, щелчки мыши и т. П., Потому что вы можете делать все, что угодно, от размышлений о проблеме кодирования, чтения веб-статьи, разговора по телефону или до ухода от прогулки собака. Компьютер не может читать мои мысли. Поскольку я оставляю компьютеры включенными круглосуточно, вход в систему мониторинга не будет работать.
Я натолкнулся на мысль записать, сколько времени компьютер проводит в режиме заставки. Тогда моя ошибка будет не больше, чем произведение времени простоя на экранную заставку с тем, сколько раз он переходит в режим заставки. Вычитание этого из 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
источник
Ответы:
Я хотел бы поблагодарить и внести свой вклад в простой, сырой сценарий (может быть улучшен), поместить его в автозагрузку приложений с помощью:
это также системный сбой / затемнение. Это не сильно проверено ... но работает отлично до сих пор. он создаст 2 файла, один в $ HOME (журнал), другой в / tmp (обходной путь sys)
logSessionLock.sh
журнал выглядит так:
источник
Пакет « Workrave » не только отслеживает, используете ли вы компьютер и помогает ли вы делать перерывы в течение дня, но также предоставляет хороший набор статистики, как в необработанном виде (в текстовом файле), так и через графический интерфейс пользователя (
Daily usage: 5:41:00 for Jul 21
). Статистика также включает в себя такие вещи, как минуты использования мыши, расстояние перемещения мыши, нажатия клавиш и т. Д.Установите его из официальных репозиториев, добавьте его в строку меню, щелкните правой кнопкой мыши и выберите «статистика». Вы получите календарь для выбора дня, о котором хотите узнать. Или посмотрите на данные в ~ / .workrave / historystats
источник
Если вы удалите --profile, вы получите формат с отсутствующими временными метками, но он имеет значение, активна ли заставка или нет.
Я использовал модификацию этого скрипта PHP, чтобы активировать или деактивировать вещи на основе моей заставки
Другой вариант заключается в использовании
gnome-screensaver-command --query
. Используя crontab, я позволяю биткойнам использовать все 4 ядра, когда хранитель экрана активен, но он получает только 1 ядро, когда я использую свой компьютер.DISPLAY: без настройки DISPLAY команда gnome-screensaver-command не сможет найти экран при запуске из cron. Это должно работать, когда тот же пользователь вошел в систему.
2>&1
: Это направляет любые ошибки в стандартный вывод, который фиксируется ...| grep -q 'is active';
: -q отключает grep, ничего не выводит. Но команда возвращает успех или неудачу, которые используются if.Я понимаю, что ни одно из них не является полным решением, но, надеюсь, этого достаточно, чтобы вы начали.
источник
Это более полный сценарий. Вы можете запускать его из cron каждую минуту, и если хранитель экрана активен, он будет записывать, как долго он был активен. Как только он отключится, он возьмет последнее измерение и добавит его в ~ / Screensaver.log. Если вы запустите его из cron, он может быть неточным в течение до 59 секунд каждый раз, когда заставка отключается.
источник
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] Я даю: как создать блок кода в комментарии? 4 пробела не работают.Я использую
uptime
команду, но она не дает времени системы активного / неактивного. uptime отображает в одной строке следующую информацию. Текущее время, продолжительность работы системы, количество пользователей, вошедших в систему, и средние значения загрузки системы за последние 1, 5 и 15 минут.источник