xfconf-запрос, crontab, “Отказавший к init libxfconf: Не мог автозапустить dbus-демона без $DISPLAY для X11”.

У меня есть 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

Я попробовал различные решения, включая комментарий здесь и этого, но ни один не работал.

1
задан 13 April 2017 в 15:37

2 ответа

Я сделал следующее, это позволяет мне вызывать xfconf-query от crontab:

Во-первых, получите значение этой переменной:

echo $DBUS_SESSION_BUS_ADDRESS

Вы будете видеть путь как это:

unix:path=/run/user/1000/bus

Затем использование:

env DBUS_SESSION_BUS_ADDRESS=[path] xfconf-query ....

Я не понимаю подробный механизм позади него, но это работает на меня :)

1
ответ дан 7 December 2019 в 13:43

Я просто установлю этот сценарий для выполнения как Сессия и Запуск> объект Автоматического запуска Приложения вместо этого.

#!/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
1
ответ дан 7 December 2019 в 13:43

Другие вопросы по тегам:

Похожие вопросы: