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
from crontab
:
まず、この変数の値を取得します。
echo $DBUS_SESSION_BUS_ADDRESS
次のようなパスが表示されます。
unix:path=/run/user/1000/bus
次に使用します:
env DBUS_SESSION_BUS_ADDRESS=[path] xfconf-query ....
私はその背後にある詳細なメカニズムを理解していませんが、私にとってはうまくいきます:)
代わりに、このスクリプトをSession and Startup> Application Autostartアイテムとして実行するように設定します。
#!/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