Está a funcionar depois de substituir
* * * * * /home/anmol/display-notif.sh
com
* * * * * sudo -u anmol /home/anmol/display-notif.sh
No meu sistema, notify-send
requer que 3 variáveis de ambiente sejam executadas, que são mantidas em um arquivo gerado automaticamente no logon:
/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
E, no buffer do crontab, eu entrei:
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
onde display-notif.sh
contém:
#!/usr/bin/env bash
. /home/anmol/.env_vars
notify-send 'hello'
Embora eu possa executar notify-send
do cron não-sudo ( crontab -e
) por meio dessa configuração, não consigo fazer isso do sudo cron ( sudo crontab -e
).
Eu também tentei verificar se há algum erro sendo gerado:
* * * * * /home/anmol/display-notif.sh 2>/home/anmol/log
Mas esse arquivo de log está vazio.
Como faço para que isso funcione no sudo cron?
Estou usando o Ubuntu 16.04.
Esta função (do link ) funciona para mim no 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
}
Tags sudo cron graphics notify-send x11