树莓派自动更新显示下载新图片问题求助
解决树莓派自动更新显示下载图片的问题
问题根源
你遇到的ioctl VT_GETSTATE报错,是因为fbi是直接操作Linux控制台帧缓冲的工具,并非X窗口程序,cron默认环境没有访问控制台tty的权限,设置DISPLAY=:0完全无效。
方案一:修复cron调用fbi的权限与参数
直接修改cron任务或脚本,指定控制台设备并获取权限:
- 优化
display-image.sh脚本:
#!/bin/bash # 静默杀死所有fbi进程 sudo killall -q fbi # 切换到树莓派默认的控制台tty1 sudo chvt 1 # 指定fbi使用tty1设备显示图片 sudo fbi -noverbose -a -T 1 /home/pi/code/display/images/*.png
给脚本加执行权限:chmod +x /home/pi/code/display/display-image.sh
- 修改cron任务(执行
crontab -e编辑):
# 每小时执行一次,和你的下载任务同步 0 * * * * /home/pi/code/display/display-image.sh
方案二:改用feh自动监听文件夹更新(更省心)
如果你的树莓派运行X桌面环境,feh是更适合的选择,它支持监听文件夹变化自动刷新显示,无需定时重启进程:
- 安装feh:
sudo apt update && sudo apt install feh -y
- 替换
display-image.sh脚本:
#!/bin/bash # 杀死旧的feh进程 killall -q feh # 全屏显示图片,自动适配,监听文件夹变化自动加载新图 feh --fullscreen --auto-zoom --monitor /home/pi/code/display/images/
- 开机启动与额外保障:
- 开机启动保留
/etc/profile里的调用命令即可 - 无需定时cron任务,
--monitor参数会自动检测文件夹内的图片更新并刷新显示 - 若要确保feh意外退出后重启,可添加cron定时检查:
*/5 * * * * pgrep feh || DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority /home/pi/code/display/display-image.sh
- 开机启动保留
关键注意事项
- 使用fbi时,确保树莓派未启动X桌面,或手动切换到tty控制台(按
Ctrl+Alt+F1),否则fbi无法抢占帧缓冲 - 使用feh时,必须在cron任务中指定
XAUTHORITY,否则无法访问X桌面的权限
内容的提问来源于stack exchange,提问作者Esshahn
相关产品推荐
相关产品推荐

