Pcmanfm设置壁纸在cron中Raspbian伸展失败

问题描述:

我正在桌面运行几乎新鲜的Raspbian Stretch 4.9图像,并有一个程序每隔几分钟为计算机背景创建一个新图像。Pcmanfm设置壁纸在cron中Raspbian伸展失败

我想创建一个cron作业使用pcmanfm正确更新背景,被跟随的建议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

昨晚上运行我的笔记本电脑的更新(其中包括更新pcmanfm)后我做了同样事情的脚本停止了工作。我猜cron启动的脚本没有像图形登录的用户那样在同一个“用户空间”运行,所以有一些环境变量没有正确设置。不幸的是,我不是一个专业的Linux用户,但是如果我找到解决方案,我会继续挖掘和回发。 TLDR:我认为最近的更新打破了它。 –

我有完全相同的问题,除了我运行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 
...