手动调用脚本时可以使用“通知发送”功能,但不能从crontab中调用

时间:2019-05-25 01:53:22

标签: bash cron notify-send

我希望我的cron作业在执行时通过Ubuntu上的notify-send命令向我报告。我已经通读了一些常见问题,这些问题表明shell脚本无法访问显示,可以通过在调用notify-send之前添加以下内容来解决此问题:

export DISPLAY=:0.0

所以我在这方面还可以。

我现在所处的位置是,如果我从终端手动调用脚本,而不是从crontab调用脚本,它将在桌面上正常工作并通知我。

情况如下:

  1. 执行的脚本是一个PHP文件。调用shell命令的PHP命令是:
<?php
`export DISPLAY=:0.0 && command -v notify-send && notify-send "Hello world"`; 

(PHP中的反引号意味着在shell中执行)

  1. 在两种情况下,我都以root的身份运行
  2. 从终端进行测试时,我运行:
sudo -u root /usr/bin/php -q /var/www/html/cron.php &> /dev/null

这有效,并且我收到桌面通知

  1. 要为crontab用户编辑我的root,我使用:
sudo -u root crontab -e
  1. 在我的crontab文件中,我的行是这样的:
* * * * * /usr/bin/php -q /var/www/html/cron.php &> /dev/null

即使脚本100%执行,此通知也不会产生桌面通知(我在日志文件中获得了成功的结果)。

这里出了什么问题,为什么我没有收到桌面通知?

1 个答案:

答案 0 :(得分:0)

您必须在脚本中设置PATH或从crontab导出它!

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin