次のスクリプトがあります。
#!/bin/sh
notificationMessage="Your session is going to expire soon"
if [ $# == 2 ]; then
notificationMessage="Your session is going to expire in $2 hour"
fi
# echo "$notificationMessage"
sudo -u userA notify-send "Session Expiration Notification" "$notificationMessage" -u normal -t 10000
端末で上記のスクリプトを実行すると(次にログイン)リモートユーザー)、ユーザーA画面で通知を表示する機能。ただし、スクリプトがサービスで実行されている場合(次に実行)リモートユーザー)、通知は表示されませんユーザーA。
私は何が間違っていましたか?
注:リモートユーザーにはsudo
権限があります。
答え1
ただし、サービスでスクリプトを実行している場合(RemoteUserとして実行)、userAには通知は表示されません。
デフォルトでは、X.orgは単一のアクティブなユーザーセッションへのアクセスを制限します。この問題を解決する方法はいくつかあります。
- 使用
export DISPLAY=:0
とsudo your_currentuser notification_command
xhost +SI:localuser:remoteUser
remoteUser
Xアプリケーションがセッションで実行されるようにするには、ユーザーセッションで実行します。スクリプトでまだ使用する必要があります。export DISPLAY=:0
追加情報: