我无法从crontab运行以下简单脚本:
#!/bin/bash
notify-send "battery.sh working"
该文件的权限是 rwxr-xr-x
,并且使用 bash battery.sh
和 sh battery.sh
命令运行正常 .
在我的crontab中,我尝试使用 bash
和 sh
运行它,具有绝对路径和本地路径 . 我目前的crontab如下所示:
* * * * * /home/marpangal/battery.sh
* * * * * sh battery.sh
* * * * * bash battery.sh
* * * * * sh /home/marpangal/battery.sh
* * * * * bash /home/marpangal/battery.sh
但是,cron不执行脚本,我没有收到来自notify-send的消息 .
2 回答
notify-send
需要DBUS_SESSION_BUS_ADDRESS
环境变量才能与当前桌面会话进行通信 . 由于cron
在几乎为空的环境中运行,因此该变量不可用 .但您可以直接在
battery.sh
脚本中设置它:这将查找
gnome-session
的进程ID,并从gnome-sessions
'环境中提取DBUS_SESSION_BUS_ADDRESS
(及其值) .现在
notify-send
能够在桌面会话中显示通知 .Flopps的回答给了我一个
-bash: warning: command substitution: ignored null byte in input
- 所以我尝试了不同的东西:我认为这不像原始导出那么灵活,但它在我的用户crontab中适用于我 .