树莓派OS(Raspbian 10)使用at命令执行pyautogui脚本无响应如何解决
问题原因
- 相对路径无法找到脚本:
at命令执行后台任务时不会保留你提交任务时的工作目录,直接写./test1.sh无法定位到/home/pi路径下的脚本文件。 DISPLAY缺失报错:pyautogui是GUI操作库,依赖X11图形服务的DISPLAY环境变量识别要操作的图形会话。at属于系统后台调度服务,执行任务时不会继承当前用户登录的桌面会话环境变量,因此找不到DISPLAY参数触发报错。
解决方法
- 先在桌面打开终端,执行命令确认你的图形会话DISPLAY值,树莓派默认桌面输出通常为
:0
echo $DISPLAY
- 提交at任务时手动指定DISPLAY变量,且使用脚本的绝对路径,示例如下:
echo "DISPLAY=:0 /home/pi/test1.sh" | at 11:50
- 也可以直接把DISPLAY配置写入脚本开头,后续提交任务无需额外加参数,修改后的
/home/pi/test1.sh内容如下:
#!/usr/bin/python3 import os # 替换为上一步你查到的DISPLAY实际值 os.environ['DISPLAY'] = ':0' import pyautogui pyautogui.click(67, 20) #click Chromium icon
注意事项
如果修改后仍然报错权限不足,可在桌面终端执行一次如下命令,允许本地pi用户访问X11图形服务:
xhost +local:pi
如果确认at任务没有执行,可检查atd服务运行状态:
sudo systemctl status atd # 若未启动则执行如下命令开启并设置开机自启 sudo systemctl enable --now atd
内容的提问来源于stack exchange,提问作者zuputoddu
相关产品推荐
相关产品推荐

