J'ai Xubuntu 16.04 et j'essaie d'exécuter le script suivant à partir de crontab:
#!/bin/bash
status=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac)
vid="/dev/video0"
if [ -z "$status" ]; then
exit 1
fi
if [ -e "$vid" -a "$status" -gt 14 ]; then
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 14
Elif [ ! -e "$vid" -a "$status" -eq 14 ]; then
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 25
fi
Il fonctionne parfaitement lorsqu'il est exécuté à partir du terminal. Cependant, de crontab j'obtiens cette erreur.
Failed to init libxfconf: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11.
Voici mon entrée crontab. Il a été modifié à l'aide de crontab -e
.
*/5 * * * * (bash -x /home/brock/bin/vid-power) > /home/brock/Desktop/debug.log 2>&1
Voici la sortie complète de mon debug.log.
~/Desktop$ cat debug.log
++ xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac
Failed to init libxfconf: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11.
+ status=
+ vid=/dev/video0
+ '[' -z '' ']'
+ exit 1
J'ai essayé différentes solutions, y compris le commentaire ici et celui-ci , mais aucune n'a fonctionné.
J'ai fait ce qui suit, cela me permet d'invoquer xfconf-query
de crontab
:
Tout d'abord, obtenez la valeur de cette variable:
echo $DBUS_SESSION_BUS_ADDRESS
Vous verrez un chemin comme celui-ci:
unix:path=/run/user/1000/bus
Utilisez ensuite:
env DBUS_SESSION_BUS_ADDRESS=[path] xfconf-query ....
Je ne comprends pas le mécanisme détaillé derrière cela, mais cela fonctionne pour moi :)
Je vais simplement définir ce script pour qu'il s'exécute en tant qu'élément Session et démarrage> Démarrage automatique de l'application à la place.
#!/bin/bash
vid="/dev/video0"
while true; do
status=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac)
if [ -e "$vid" -a "$status" -gt 14 ]; then
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 14
Elif [ ! -e "$vid" -a "$status" -eq 14 ]; then
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 25
fi
sleep 5m
done