在 Cron 中使用notify-send 或 zenity

在 Cron 中使用notify-send 或 zenity

我正在尝试让 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 写入文件,以便脚本可以读取并导出。

相关内容