You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4 crontab启动Python脚本报错:Missing X server或$DISPLAY

解决树莓派crontab自启Chromium的DISPLAY环境变量问题

问题场景

树莓派4通过HDMI连接电视作为数字显示屏,配置crontab实现开机自启Python脚本自动播放广告:

@reboot sleep 60 && /usr/bin/python3 /home/pi/ads.py

脚本通过获取本机IP,启动Chromium全屏打开本地网页。终端直接运行脚本正常,但crontab启动时报错:

[186875:186875:0318/202225.133327:ERROR:ozone_platform_x11.cc(234)] Missing X server or $DISPLAY
[186875:186875:0318/202225.133388:ERROR:env.cc(225)] The platform failed to initialize. Exiting.

问题原因

cron进程的运行环境不包含用户登录时的X窗口系统环境变量,Chromium需要$DISPLAY变量来连接X服务器,因此启动失败。

解决方案

方案1:在crontab中指定DISPLAY变量

修改crontab配置,在执行脚本前添加DISPLAY=:0(树莓派默认X显示编号为:0):

@reboot sleep 60 && DISPLAY=:0 /usr/bin/python3 /home/pi/ads.py

也可以直接在Python脚本的Chromium启动命令中加入环境变量:

command = f"DISPLAY=:0 chromium-browser --start-fullscreen --noerrdialogs --hide-crash-restore-bubble --disable-gpu 'http://{ip}/index.php'"

方案2:使用普通用户crontab而非root

确保编辑的是pi用户的crontab,执行crontab -e(不要加sudo),root用户的环境变量与普通登录用户不一致,可能导致X权限问题。

方案3:补充XAUTHORITY变量(若方案1无效)

部分场景下还需要指定XAUTHORITY文件路径,crontab行修改为:

@reboot sleep 60 && DISPLAY=:0 XAUTHORITY=/home/pi/.Xauthority /usr/bin/python3 /home/pi/ads.py

验证

修改完成后重启树莓派,检查Chromium是否能正常全屏启动并加载广告页面。

内容的提问来源于stack exchange,提问作者Jennifer Hamilton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:07:11