3

我正在使用桌面运行几乎全新的 Raspbian Stretch 4.9 图像,并且有一个程序每隔几分钟就会为计算机背景创建一个新图像。

我正在尝试创建一个 cron 作业以使用 pcmanfm 正确更新背景,并且按照此处的建议,创建了以下名为 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 作业每分钟触发一次时,会出现一个弹出窗口,并显示错误消息“桌面管理器未处于活动状态”。使用“确定”按钮将其关闭,日志文件显示:

** 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 权限。)我不确定还有什么要搜索或尝试的,所以如果有人能指出我正确的方向或以前遇到过这个问题,我会寻求帮助。

4

1 回答 1

6

我遇到了完全相同的问题,除了我运行的是 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
...
于 2017-09-16T22:34:15.607 回答