我正在使用桌面运行Raspbian Stretch 4.9的近乎新鲜的图像,并且有一个程序可以每隔几分钟为计算机背景创建一个新图像。
我正在尝试使用pcmanfm创建一个cron作业以正确更新背景,并且在遵循建议here后,创建了以下脚本update.sh来设置背景:
!#/bin/bash
export DISPLAY=:0
export XAUTHORITY=/home/pi/.Xauthority
pcmanfm -w '/home/pi/folder/image.png'
该脚本是可执行的,当它从终端运行时,它按预期运行。我创建了一个crontab,让它自动运行:
* * * * * /home/pi/folder/update.sh > /home/pi/folder/log.txt 2>&1
当cron作业每分钟触发一次时,会出现一个弹出窗口,其中显示错误,表示"桌面管理器未处于活动状态。"用一个按钮" OK"解雇它,日志文件显示为:
** Message: x-terminal-emulator has very limited support, consider choose another terminal
我已经在crontab中直接尝试了这个命令
* * * * * DISPLAY=:0 && pcmanfm -w '/home/pi/folder/image.png' > /home/pi/folder/log.txt 2>&1
这次错误不同
Cannot open display:
我并不完全确定这有什么意义,但从环顾四周看来,cron的工作似乎很有可能。我不确定它是路径还是环境问题,因为我不知道有关这些事情的许多细节,但我不认为这应该是一个问题,因为我正在使用图像和脚本的完整路径。它不应该是权限错误,因为我在用户crontab和系统crontab上都尝试了这个,并且都失败了。 (此外,默认的pi用户默认具有root权限。)我不知道还有什么可以搜索或尝试,所以如果有人能指出我正确的方向或之前遇到过这个问题我正在寻求帮助。
答案 0 :(得分:2)
我有完全相同的问题,除了我正在运行Lubuntu 17.04。它最近在最近更新后出现,但无法确定何时。经过大量研究后,我开始怀疑其中一个XDG环境变量也必须输出。经过一些试验和错误,我发现导出XDG_RUNTIME_DIR解决了我的问题。你可能想尝试一下。
计算出值:echo $XDG_RUNTIME_DIR
从cron为我运行的工作壁纸更换器现在看起来像:
#!/bin/bash
...
export DISPLAY=:0
export XAUTHORITY=/home/krisz/.Xauthority
export XDG_RUNTIME_DIR=/run/user/1000
pcmanfm --set-wallpaper=${dir}/${file} --wallpaper-mode=crop
...