bash - `notify-send` 在手动调用脚本时有效,但不能从 crontab
问题描述
notify-send
我希望我的 cron 作业在执行时通过Ubuntu 上的命令在桌面上向我报告。我已经阅读了说明 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
这有效,我收到桌面通知
crontab
要为用户编辑我的root
,我使用:
sudo -u root crontab -e
- 在我的
crontab
文件中,我的行是这样的:
* * * * * /usr/bin/php -q /var/www/html/cron.php &> /dev/null
这个不会产生桌面通知,即使脚本 100% 执行(我在日志文件中有成功的结果)。
这里出了什么问题,为什么我不会收到桌面通知?
解决方案
您必须在脚本中设置 PATH 或从 crontab 导出它!
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
推荐阅读
- javascript - 动漫js问题(完整功能)
- java - Eclipse 在 Ubuntu 16.04 上使 JVM 崩溃
- crystal-lang - 如何在 Crystal 中进行用户输入
- hive - 蜂巢中collect_list的计数并根据条件显示计数
- android - startForeground() 总是在三星 8.0 设备上显示一个弹出窗口
- sql - SQL根据不同情况从表中选择不同的记录
- scala - 在 countDistinct agg 函数中排除空字符串
- javascript - 在 node js express 中解析 req.body 中的数组
- ionic-framework - 带有浮动标签占位符颜色的离子输入在离子中没有变化
- iphone - 是否可以在 iPad 上使用 NFC?