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

通过Webmin Cron执行Python脚本无法启动gnome-terminal问题求助

Cron调用gnome-terminal报错解决方案

问题原因

gnome-terminal属于图形界面程序,依赖X Window System的显示服务运行。Cron的默认执行环境没有携带DISPLAY环境变量,无法关联到当前用户的图形会话,因此触发连接显示服务失败的报错:

Unable to init server: Could not connect: Connection refused
Failed to parse arguments: Cannot open display:

修复步骤

  • 第一步:先确认当前桌面会话的DISPLAY参数,在已打开的普通终端中执行命令:
    echo $DISPLAY
    Ubuntu 20.04桌面默认返回值为:0,如果返回其他值记下来后续替换即可。
  • 第二步:修改触发脚本,主动注入DISPLAY环境变量,修改后代码如下:
    import os
    path = '/home/bob/scripts/'
    os.chdir(path)
    # 此处替换为你上一步查到的DISPLAY值
    os.environ['DISPLAY'] = ':0'
    os.system("gnome-terminal -- python /home/bob/scripts/test.py & ")
    
  • 第三步:给本地用户开放X服务访问权限,在当前桌面用户的终端执行命令:
    xhost +local:
    如需开机自动生效,可将该命令添加到系统「启动应用程序」列表中,每次桌面登录自动执行。
  • 第四步:确认Webmin中创建的Cron任务执行用户为当前登录桌面的用户(即bob),不要使用root用户执行该Cron任务,避免权限不匹配。

可选替代方案

如果仅需要监控脚本运行输出,无需固定弹出终端窗口,可直接将脚本输出重定向到日志文件,省去调用图形终端的步骤,修改命令如下:
os.system("python /home/bob/scripts/test.py >> /home/bob/scripts/test.log 2>&1 & ")
后续可直接查看/home/bob/scripts/test.log文件获取脚本的所有运行输出和报错信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:27:03