我正在尝试让 cron 在发现特定情况时提供屏幕警报。我知道脚本每分钟执行一次,但它不会显示在屏幕上。
执行的脚本是:
DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test"
从 Mandriva 发行版运行 Gnome。
有任何想法吗?
答案1
这是你的用户的 crontab,而不是 root 的 crontab?
我建议,至少为了进行调试,你应该创建一个脚本,如 John T 所述:
* * * * * /path/to/script.sh
脚本可能如下所示:
#!/bin/bash
{
echo "trying to notify at $(date)"
DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test"
echo "finished notify at $(date)"
} > /path/to/your-notify-debug.log 2>&1
请注意,DISPLAY 之前没有“:”,就像您的问题中似乎有的那样。确保使此脚本可执行(chmod +x /path/to/script.sh
)并让 cron 尝试运行它几次。然后检查写入日志文件的内容。
答案2
您需要能够连接到 DBUS 用户会话总线。这必须是会话总线,而不是系统总线。您可以通过执行
设置|grep DBUS_SESSION_BUS_ADDRESS
然后在你的脚本中你需要有
导出 DBUS_SESSION_BUS_ADDRESS={无论它是什么}
然后执行通知发送
由于每次登录时会话总线都会发生变化,您可能需要在登录脚本中添加一些内容以将 DBUS_SESSION_BUS_ADDRESS 写入文件,以便脚本可以读取并导出。