ルートクローン通知から送信

ルートクローン通知から送信

私のシステムでは、notify-send3つの環境変数を実行する必要があり、ログイン時に自動的に生成されるファイルに保存されます。

/home/anmol/.env_vars:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-PwezoBTpF3
export DBUS_SESSION_BUS_ADDRESS
XAUTHORITY=/home/anmol/.Xauthority
export XAUTHORITY
DISPLAY=:0
export DISPLAY

そして、crontabバッファに次のように入力しました。

PATH=/home/anmol/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

* * * * *  /home/anmol/display-notif.sh

どこdisplay-notif.sh含む:

#!/usr/bin/env bash

. /home/anmol/.env_vars
notify-send 'hello'

この設定では、notify-sendsudo cron()以外では実行できますが、crontab -esudo cron()では実行できませんsudo crontab -e

また、エラーが生成されたことを確認してみました。

* * * * *  /home/anmol/display-notif.sh 2>/home/anmol/log

ただし、ログファイルは空です。

sudo cronでどのように機能させるのですか?

Ubuntu 16.04を使用しています。

ベストアンサー1

この機能は(https://unix.stackexchange.com/a/344377/7286)Ubuntu 16.04で私のために働いた。

notify_all() {
    local title=$1
    local msg=$2

    who | awk '{print $1, $NF}' | tr -d "()" |
    while read u d; do
        id=$(id -u $u)
        . /run/user/$id/dbus-session
        export DBUS_SESSION_BUS_ADDRESS
        export DISPLAY=$d
        su $u -c "/usr/bin/notify-send '$title' '$msg'"
    done 
}

おすすめ記事