gpt4 book ai didi

cron - 将通知发送与 cron 结合使用

转载 作者:行者123 更新时间:2023-12-02 07:20:15 26 4
gpt4 key购买 nike

我一直在尝试将 notify-send 与 cron 一起使用。我查看了 stackoverflow 和其他论坛上给出的大量答案。但我没有看到通知发送弹出窗口出现。我目前运行的是 Ubuntu 13.10。我已经能够让这个工作更早(大约 3 个月前,当我有 Ubuntu 11.10 时),但我不记得是如何做到的,我也不知道我在这里做错了什么。

我当前的 crontab 看起来像:

*/1 * * * * export DISPLAY=:0.0 && export XAUTHORITY=/home/harold/.Xauthority && /usr/bin/notify-send "$(date)"

我尝试了许多在线提供的解决方案,包括在 /usr/bin/notify-send ... 之前使用 sudo -u harold。我还尝试使用 export DISPLAY=:0 而不是 =:0.0。弹出窗口仍然没有出现。

我也尝试过创建一个脚本。运行脚本的 cron 作业如下所示:

*/1 * * * * cd /home/harold/bin && ./notify-send-test.sh

我的脚本(notify-send-test.sh)看起来像:

#!/bin/bash
#export DISPLAY=:0
#export XAUTHORITY=/home/harold/.Xauthority
/usr/bin/notify-send "$(date)"
echo "trying to notify at $(date)" >> /home/harold/bin/cronlog.txt

我尝试过使用注释行而不是使用它们。这些组合似乎都不起作用。我还尝试过使用 export DISPLAY=0.0

我每分钟都会在 cronlog.txt 文件中得到预期的输出。这意味着我的脚本正在执行,但通知发送没有执行。

我想知道我做错了什么。很高兴提供更多可能有用的信息。

第二个问题:还有一些关于 cron 无法使用某些环境变量的问题。我不明白这意味着什么以及它如何影响我使用 cron 的方式。如果有人能解释这一点那就太好了。

最佳答案

添加到 Sakthi 的答案中。

您可以通过输入dbus-launch来获取DBUS_SESSIONBUS_ADDRESS,而无需使用nautilus(或gnome或其他)(请参阅this answer)

所以脚本就是:

#!/bin/bash
export $(dbus-launch)
/usr/bin/notify-send "$(date)"

如果这不起作用,您可以尝试将其硬编码到您的用户 ID:

#!/bin/bash
userid=$(id -u)
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$userid/bus"
export DBUS_SESSION_BUS_ADDRESS
/usr/bin/notify-send "$(date)"

您可以在脚本中添加 echo $(env | grep DBUS_SESSION_BUS_ADDRESS) 来检查脚本执行时的 env 变量是什么。

关于cron - 将通知发送与 cron 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20523925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com