cron - Pcmanfm 设置墙纸在 cron 中的 Raspbian 拉伸(stretch)上失败

标签 cron raspbian wallpaper stretch pcmanfm

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

我正在尝试创建一个 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 作业每分钟触发一次时,会出现一个弹出窗口,其中显示错误消息“桌面管理器未激活”。使用“确定”按钮关闭它,日志文件显示为:

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

最佳答案

我遇到了完全相同的问题,只是我运行的是 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
...

关于cron - Pcmanfm 设置墙纸在 cron 中的 Raspbian 拉伸(stretch)上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45873124/

相关文章:

transparency - iOS 7 - 将用户壁纸显示为 UIWindow 背景

windows-7 - 在程序关闭时使用批处理文件更改墙纸。可能的?

java - 在 Raspberry Pi 上运行 Javafx GUI

linux - 有没有办法找出特定 Raspberry Pi 内核的确切源代码树

android - 如何在Android中将壁纸设置为设备的整个屏幕

java - Spring SimpleTriggerContext 获取正确的 nextExecutionTime

ssh - Raspberry Pi 在重启时不会终止 SSH 连接

docker - crontab中的自定义外壳脚本

linux - 如何设置 cron 显示 gui 应用程序

cron - Jenkins - 监控外部 cron 作业