
У меня есть скрипт, который запускается с помощью 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.