我有 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
xfconf-query
我做了以下操作,它允许我从中调用crontab
:
首先,获取这个变量的值:
echo $DBUS_SESSION_BUS_ADDRESS
你会看到这样的路径:
unix:path=/run/user/1000/bus
然后在执行的脚本中使用crontab
:
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
xfconf-query ...
信用:https://bbs.archlinux.org/viewtopic.php?pid=1706208#p1706208
答案2
我只需将此脚本设置为作为会话和启动>应用程序自动启动项运行。
#!/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
答案3
为了使xfconf-query
命令在环境下工作,cron
您需要在 bash 脚本中包含以下内容,例如:
# set today's wallpaper; first set one env variable for xfconf-query
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorVGA-0/workspace0/last-image -s "${filename}"
信用:https://bbs.archlinux.org/viewtopic.php?pid=1706208#p1706208