无法从 cron 作业发送通知

无法从 cron 作业发送通知

我正在尝试使用 cron 作业来查看电池何时低于给定阈值,然后发送电池严重通知。但是,当我让 cron 作业每分钟执行一个脚本,并让该脚本向我发送通知时,它不起作用。

为了确保这不是脚本的权限问题或导致 cron 作业无法运行的原因,我让脚本创建了一个文件,并且它起作用了。这是 crontab 条目:

* * * * * /home/aravk/test.sh

并且,为了简化问题,这些是以下内容test.sh

#!/bin/sh
/usr/bin/dunstify hi

但是,没有显示任何通知。当我手动执行该脚本时,该脚本确实有效。我还尝试通过将 crontab 条目更改DISPLAY为 来设置环境变量,但它仍然不起作用。如何从 cron 作业执行的脚本发送通知?如果相关的话,我正在使用 Arch Linux。:0* * * * * export DISPLAY=:0 && /home/aravk/test.sh

答案1

我将其添加到我的 crontab 中,并且我的所有通知都有效(目前已使用禅宗通知发送):

DISPLAY=":0.0"
XAUTHORITY="/home/me/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

答案2

你必须让 crontab 作业访问一些环境变量。我刚刚在 Kali Linux 中解决了这个问题,所以打开终端并输入回车键export,将会显示一条包含变量信息的消息。

到达declare -x DISPLAY=":1"存在的行(值可能是0而不是1)只需将其复制DISPLAY=":1"并粘贴到您的crontab行中,然后转到declare -x XAUTHORITY="/run/user/1000/gdm/Xauthority"存在的行并复制此部分XAUTHORITY="/run/user/1000/gdm/Xauthority",然后也将其粘贴到您的crontab行中。

你的 crontab 会是这样的:

* * * * * DISPLAY=':1' XAUTHORITY='/run/user/1000/gdm/Xauthority' your_command

答案3

就我而言,问题在于将rootuser 与 一起使用notify-send。当我看到这sudo notify-send在终端上不起作用但只是notify-send(即当前用户)起作用时,我意识到了这一点。因此,我没有编辑通常/etc/crontab使用的rootcron 脚本, 而是为myusername.请检查我的整个答案这里

相关内容