通知发送无法通过 ROOT crontab 运行

通知发送无法通过 ROOT crontab 运行

该脚本在用户的 crontab 中运行良好,但我需要从 ROOT crontab 运行,但却不起作用:

#!/bin/sh 
# cron.sh
# Notifies the user of date and time
source /home/user/.bashrc
pid=$(pgrep -u user openbox | head -n 1)
dbus=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | sed 's/DBUS_SESSION_BUS_ADDRESS=//' )
export DBUS_SESSION_BUS_ADDRESS=$dbus
export HOME=/home/user
export DISPLAY=:0
/usr/bin/notify-send 'title' "$(/bin/date)"

该脚本位于此处: crontab 脚本

该脚本位于 /home/user/cron.sh 上,具有所有权限(777)。我的根 crontab 是:

* * * * * /home/user/cron.sh

如果我在普通用户 crontab 中使用此脚本,它会工作并显示弹出文本,但不会在 root crontab 中工作。/var/log/syslogcrontab 触发时,Syslog() 不显示错误。

答案1

我非常确定notify-send需要以应该接收通知的用户身份运行。尝试用以下内容替换最后一行:

su user -c '/usr/bin/notify-send "title" "$(/bin/date)"'

su user -c命令切换用户user并将-c以下命令传递给 shell。

该语句应该切换到正确的用户并运行命令。

如果您想以另一个用户身份运行整个脚本,请查看Stack Overflow 上的此问答

相关内容