我制作了一个简单的bash脚本,该脚本使用pcmanfm从我的壁纸目录中更改了一张随机图片的壁纸。就像这样:
#!/bin/bash
pcmanfm -w "$(find /home/likewise-open/MAPS/lucas.cardeal/Pictures/Wallpapers -type f | shuf -n1)"
Run Code Online (Sandbox Code Playgroud)
我会自动想要它,所以您将脚本放在crontab上。但是,当crontab调用它时,它没有任何作用。我的脚本怎么了?我该如何解决?
谢谢
我在桌面上运行一个几乎全新的 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'
Run Code Online (Sandbox Code Playgroud)
该脚本是可执行的,当它从终端运行时,它会按预期运行。我创建了一个 crontab 来自动运行它:
* * * * * /home/pi/folder/update.sh > /home/pi/folder/log.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
当 cron 作业每分钟触发一次时,会出现一个弹出窗口,并显示“桌面管理器未处于活动状态”的错误消息。使用“确定”按钮关闭它,日志文件显示:
** Message: x-terminal-emulator has very limited support, consider choose another terminal
Run Code Online (Sandbox Code Playgroud)
我已经在 crontab 中直接尝试了该命令
* * * * * DISPLAY=:0 && pcmanfm -w '/home/pi/folder/image.png' > /home/pi/folder/log.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
而这次的错误是不同的
Cannot open display:
Run Code Online (Sandbox Code Playgroud)
我不完全确定这有什么意义,尽管环顾四周似乎 cron 工作可能很挑剔。我不确定这是路径问题还是环境问题,因为我不了解这些事情的很多细节,但我认为这应该不是问题,因为我使用的是图像和脚本的完整路径。这不应该是权限错误,因为我在用户 crontab 和系统 crontab 上都尝试过这个,但都失败了。(此外,默认的 pi 用户在默认情况下具有 root 权限。)我不知道还有什么要搜索或尝试的,所以如果有人能指出我正确的方向或以前遇到过这个问题,我会寻求帮助。