
我有 crontab 運行的腳本,但作為 su,在某些時候它可能會通過 notification-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 的腳本。