【发布时间】:2019-10-11 13:18:51
【问题描述】:
我希望我的 cron 作业在执行时通过 Ubuntu 上的 notify-send 命令在桌面上向我报告。我已经阅读了说明 shell 脚本无法访问显示的常见问题,通过在调用 notify-send 之前添加此问题来解决:
export DISPLAY=:0.0
所以我在这方面没问题。
我现在所处的位置是,如果我从终端手动调用它,而不是从crontab 调用,我的脚本可以在桌面上运行并通知我。
情况如下:
- 执行的脚本是一个 PHP 文件。调用 shell 命令的 PHP 命令是:
<?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
这可行,我会收到桌面通知
- 要为
root用户编辑我的crontab,我使用:
sudo -u root crontab -e
- 在我的
crontab文件中,我的行是这样的:
* * * * * /usr/bin/php -q /var/www/html/cron.php &> /dev/null
这个不会产生桌面通知,即使脚本 100% 执行(我在日志文件中有成功的结果)。
这里出了什么问题,为什么我没有收到桌面通知?
【问题讨论】:
-
我建议将您的脚本放在
.sh文件中,并在文件开头添加export PATH=$PATH:...。希望它应该能够从 crontab 执行它。
标签: bash cron notify-send