linux - picard - Cron con notificar-enviar
musicbrainz picard debian (9)
Necesito mostrar una notificación de un trabajo cron. Mi crontab es algo como:
$ crontab -l
# m h dom mon dow command
* * * * * Display=:0.0 /usr/bin/notify-send Hey "How are you"
Revisé /var/log/syslog
y el comando se ejecuta en realidad cada minuto, pero no aparece la notificación. ¿Alguien puede ayudarme a entender por qué?
Creé un script / usr / bin que usa la técnica DISPLAY-: 0.0 http://pastebin.com/h11p2HtN
No tiene en cuenta XAUTHORITY. Tendré que investigar más a fondo.
En Ubuntu 14.04 la exportación de la pantalla no funcionó para mí. A continuación se muestra un script cron que estoy usando para apagar una máquina virtual cuando el estado de la batería de una computadora portátil es demasiado bajo. La configuración de línea DBUS_SESSION_BUS_ADDRESS es la modificación que finalmente consiguió que las advertencias funcionaran correctamente.
#!/bin/bash
# if virtual machine is running, monitor power consumption
if pgrep -x vmware-vmx; then
bat_path="/sys/class/power_supply/BAT0/"
if [ -e "$bat_path" ]; then
bat_status=$(cat $bat_path/status)
if [ "$bat_status" == "Discharging" ]; then
bat_current=$(cat $bat_path/capacity)
# halt vm if critical; notify if low
if [ "$bat_current" -lt 10 ]; then
/path/to/vm/shutdown/script
echo "$( date +%Y.%m.%d_%T )" >> "/home/user/Desktop/VM Halt Low Battery"
elif [ "$bat_current" -lt 15 ]; then
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
notify-send -i "/usr/share/icons/ubuntu-mono-light/status/24/battery-caution.svg" "Virtual machine will halt when battery falls below 10% charge."
fi
fi
fi
fi
exit 0
La línea correspondiente está aquí:
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
Encontré la solución aquí: https://askubuntu.com/a/346580/255814
He encontrado la respuesta:
$ crontab -l
# m h dom mon dow command
* * * * * export DISPLAY=:0.0 && export XAUTHORITY=/home/ravi/.Xauthority && sudo -u ravi /usr/bin/notify-send Hey "How are you"
Gracias ravi
Intente esto cuando llame a notify-send
en su script:
echo "PASSWORD" | sudo -u USER notify-send "your alert message"
Puede ser que puedas probar:
* * * * * env DISPLAY=:0.0 sudo -u ravi /usr/bin/notify-send Hey "How are you"
Respuesta simple y reducida:
01 * * * * export DISPLAY=:0.0 && notify-send Hey "How are you"
Si necesita el permiso de Xauthority
, aquí hay una forma generalizable utilizando la variable $LOGNAME
01 * * * * export DISPLAY=:0.0 && && export XAUTHORITY=/home/$LOGNAME/.Xauthority notify-send Hey "How are you"
Como lo señaló @tripleee, aquí no hay una necesidad real de sudo
Solo esto funciona para mi (Xubuntu)
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME xfce4-session)/environ)"; notify-send "hello world"
Si está en el entorno de gnome, necesita cambiar xfce4-session
a gnome-session
Consulte: https://askubuntu.com/questions/298608/notify-send-doesnt-work-from-crontab
Trabaja para mí en fedora 22:
Ponga esta línea en el script .sh antes de que se llame a la notificación de envío:
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)"
Yo uso i3 en Ubuntu 18.04. Mi manera de resolver esto es:
* * * * * XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "this is dog!"