У меня есть Xubuntu 16.04, и пытаюсь запустить следующий скрипт от 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
Это работает отлично, когда выполнено он от терминала. Однако от crontab я получаю эту ошибку.
Failed to init libxfconf: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11.
Вот моя crontab запись. Это было отредактировано с помощью crontab -e
.
*/5 * * * * (bash -x /home/brock/bin/vid-power) > /home/brock/Desktop/debug.log 2>&1
Вот полный вывод моего 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
Я попробовал различные решения, включая комментарий здесь и этого, но ни один не работал.
Я сделал следующее, это позволяет мне вызывать xfconf-query
от crontab
:
Во-первых, получите значение этой переменной:
echo $DBUS_SESSION_BUS_ADDRESS
Вы будете видеть путь как это:
unix:path=/run/user/1000/bus
Затем использование:
env DBUS_SESSION_BUS_ADDRESS=[path] xfconf-query ....
Я не понимаю подробный механизм позади него, но это работает на меня :)
Я просто установлю этот сценарий для выполнения как Сессия и Запуск> объект Автоматического запуска Приложения вместо этого.
#!/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