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

add-apt-repository在Shell脚本中执行超时,手动运行正常的问题求助

问题排查与解决

核心原因

你遇到的问题大概率是**add-apt-repository默认需要交互确认**,而脚本运行时处于非交互环境,命令会一直等待用户输入,最终被timeout 20判定为超时失败,触发重试逻辑。而手动执行时你会手动确认,所以能正常完成。

解决方案

给add-apt-repository添加-y参数,自动跳过确认步骤:

retry timeout 20 add-apt-repository -y \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

其他可能的排查点

如果添加-y后问题依旧,可以检查以下几点:

  • 确认lsb_release -cs在sudo环境下能正确输出当前Ubuntu版本代号(比如jammy、noble),可以在脚本里先打印该值验证:
    echo "Ubuntu codename: $(lsb_release -cs)"
    
  • 检查timeout命令的行为:Ubuntu默认使用GNU timeout,确保没有混用busybox版本(可以用timeout --version确认)
  • 验证网络连通性:脚本运行时的网络环境是否和手动执行一致,比如是否有代理差异(sudo可能不会继承当前用户的代理环境变量)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:24:30