我有一个由 crontab 运行的脚本,但是作为 su,在某些时候它可能会通过notify-send发送通知,但我想将其发送给特定的用户(登录在$2,但只有一个人会同时登录)
我尝试了下面的方法,但是没有效果 ;(
export DISPLAY=:0.0
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
username=$2
pid=$(pgrep -u $username nautilus)
dbus=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | sed 's/DBUS_SESSION_BUS_ADDRESS=//' )
export DBUS_SESSION_BUS_ADDRESS=$dbus
提前感谢您的帮助!
答案1
我发现了这个并且效果很好:
DISPLAY=:0 sudo -u $2 notify-send "$path not found!
答案2
添加head -n 1
有效,因为现在有三行数据pgrep -u $LOGNAME gnome-session
。
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session | head -n 1)/environ)";
我正在使用它我的监控 ZFS 和 mdamd 脚本。