我正在寻找一种简单的方法来确定我每天花在电脑上的粗略时间。如果您试图监控进程、按键、鼠标点击等,这可能是一项艰巨的任务,因为人们可以做任何事情,从思考编码问题、阅读网络文章、打电话或走开狗。电脑无法读懂我的心思。由于我将计算机置于 24/7 监控登录状态将不起作用。
我想到了记录计算机在屏幕保护模式下花费的时间的想法。我的错误不会大于屏幕保护程序空闲时间与其进入屏幕保护程序模式次数的乘积。从 24 小时中减去这个时间会给我一个对我的目的来说是合理的估计。
问题是:当屏幕保护程序打开和关闭时,我不知道如何登录。我目前在大多数机器上运行 Ubuntu 10.10,即将开始在其中一些机器上升级到 11.04。
有任何想法吗?
[编辑] 经过更多的谷歌搜索后,我发现了 dbus-monitor,它看起来可以工作,但缺少一个重要的组成部分。这是我正在运行的脚本,它将监视器作为守护程序启动:
#!/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
Run Code Online (Sandbox Code Playgroud)
这是它在锁定和解锁屏幕几次后产生的输出:
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
Run Code Online (Sandbox Code Playgroud)
第二列显然是以秒为单位的unix UTC。缺少的成分是它无法识别屏幕保护程序是打开还是关闭!我想我可以假设它们从 NameAcquired 发生的时间开始切换,但这让我感到不安,因为可能有一个我无法预料的丢失或额外的事件,这会使一切不同步。
非常有想法。
坎宁安