我希望我的cron作业在执行时通过Ubuntu上的notify-send
命令向我报告。我已经通读了一些常见问题,这些问题表明shell脚本无法访问显示,可以通过在调用notify-send
之前添加以下内容来解决此问题:
export DISPLAY=:0.0
所以我在这方面还可以。
我现在所处的位置是,如果我从终端手动调用脚本,而不是从crontab
调用脚本,它将在桌面上正常工作并通知我。
情况如下:
<?php
`export DISPLAY=:0.0 && command -v notify-send && notify-send "Hello world"`;
(PHP中的反引号意味着在shell中执行)
root
的身份运行sudo -u root /usr/bin/php -q /var/www/html/cron.php &> /dev/null
这有效,并且我收到桌面通知
crontab
用户编辑我的root
,我使用:sudo -u root crontab -e
crontab
文件中,我的行是这样的:* * * * * /usr/bin/php -q /var/www/html/cron.php &> /dev/null
即使脚本100%执行,此通知也不会产生桌面通知(我在日志文件中获得了成功的结果)。
这里出了什么问题,为什么我没有收到桌面通知?
答案 0 :(得分:0)
您必须在脚本中设置PATH或从crontab导出它!
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin