在系统暂停时发送什么样的DBus信号?

我需要检测一台机器在Ubuntu 9.10和Fedora 13中何时睡觉。两者都使用UPower,所以我一直在寻找这种信号的“org.freedesktop.UPower”DBus总线。

我一直在用下面的命令来听UPower总线上的“睡眠”信号:

dbus-monitor --system "type='signal',interface='org.freedesktop.UPower',member='Sleeping'" 

当我睡觉机器(或者通过closures盖子,select“关机 – >暂停”或发送一个DBUS信息)我没有看到一个“睡眠”事件。

我注意到,当“org.freedesktop.UPower.AboutToSleep”方法被调用时,“Sleeping”事件被发送。 我可以通过调用手动执行此操作:

 dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.AboutToSleep 

我注意到“睡眠”信号被触发。 我的理解是任何睡觉电脑都必须先发送“AboutToSleep”信号。 这似乎并没有发生。 我已经在Fedora 13和Ubuntu 9.10上尝试了这些步骤,我看到了相同的结果。

任何人都可以解释发生了什么事情,或者提供给我一个替代的DBus信号来听吗?

非常感谢,

保罗

你的问题导致我在这里工作的东西:

 > annotate-output dbus-monitor --system "type='signal',interface='org.freedesktop.UPower'" 08:07:00 I: Started dbus-monitor --system type='signal',interface='org.freedesktop.UPower' 08:07:00 O: signal sender=org.freedesktop.DBus -> dest=:1.145 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired 08:07:00 O: string ":1.145" 08:07:22 O: signal sender=:1.20 -> dest=(null destination) serial=189 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Sleeping 08:07:41 O: signal sender=:1.20 -> dest=(null destination) serial=190 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Resuming 08:08:10 O: signal sender=:1.20 -> dest=(null destination) serial=192 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Sleeping 08:10:08 O: signal sender=:1.20 -> dest=(null destination) serial=193 path=/org/freedesktop/UPower; interface=org.freedesktop.UPower; member=Resuming 

所以,正如你所看到的,我得到了你似乎缺less的信号。 @ 08:07:22我把机器挂了,@ 08:07:41我又开始了。 @ 08:08:10我冬眠,08:10:08又重新启动。 在这里完美的作品。 我尝试添加,member='Sleeping'就像在你的文章,这也工作(只给了我睡觉事件)。

顺便说一句,我真的很喜欢注释输出

在Fedora14下,我使用相同的命令dbus-monitor –system“type ='signal',interface ='org.freedesktop.UPower'”可以用挂起信号监视信号。 检查你的UPowerconfiguration。