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

Ubuntu服务器重启时crontab更新脚本偶发失败,提示域名解析错误求助

解决重启时自动更新脚本偶发网络失败的问题

你的判断完全精准——@reboot触发的crontab任务会在系统启动早期就运行,这时候网络服务(尤其是DNS解析模块)往往还没完全初始化完毕,就会出现这种偶发的Temporary failure resolving 'security.ubuntu.com'错误。下面给你几个靠谱的解决办法,按可靠性优先级排序:

1. 给脚本加网络就绪等待逻辑(最灵活)

在更新脚本开头加入一段循环检测,等网络稳定能正常解析域名后,再执行更新命令。比如可以直接检测Ubuntu安全源的连通性:

修改后的/home/shendric/update.sh:

#!/bin/bash

# 等待网络就绪:最多重试30次,每次间隔10秒(总计5分钟)
MAX_RETRIES=30
RETRY_INTERVAL=10

for ((i=1; i<=MAX_RETRIES; i++)); do
    # 尝试解析security.ubuntu.com,成功则跳出循环
    if nslookup security.ubuntu.com > /dev/null 2>&1; then
        echo "$(date): 网络已就绪,开始执行更新" >> /var/log/update_script.log
        break
    fi
    echo "$(date): 网络未就绪,第${i}次重试(等待${RETRY_INTERVAL}秒)" >> /var/log/update_script.log
    sleep $RETRY_INTERVAL
done

# 如果超过最大重试次数,记录错误并退出
if ((i > MAX_RETRIES)); then
    echo "$(date): 网络超时,无法执行更新" >> /var/log/update_script.log
    exit 1
fi

# 执行更新命令
apt-get update -y | tee -a /var/log/update_script.log
apt-get upgrade -y | tee -a /var/log/update_script.log
echo "$(date): 更新脚本执行完成" >> /var/log/update_script.log

记得确保脚本有执行权限:chmod +x /home/shendric/update.sh

2. 改用systemd服务(最可靠)

systemd支持配置服务依赖,可以明确让脚本在网络完全启动后再运行,比crontab的@reboot可控性强得多。

步骤1:创建systemd服务文件

新建/etc/systemd/system/post-update.service文件,内容如下:

[Unit]
Description=Post Reboot Package Update
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/home/shendric/update.sh
StandardOutput=append:/var/log/update_script.log
StandardError=append:/var/log/update_script.log

[Install]
WantedBy=multi-user.target

步骤2:启用服务

执行以下命令让服务开机自动运行:

sudo systemctl daemon-reload
sudo systemctl enable post-update.service

这样系统会在network-online.target(网络完全就绪的标志)之后启动你的更新脚本,彻底规避网络未就绪的问题。

3. 给crontab任务加延迟(最简单但最不可靠)

如果不想改脚本或配置systemd,可以临时给crontab任务加个固定延迟,比如等待60秒再执行:

@reboot sleep 60 && /home/shendric/update.sh

但这个方法的局限性很明显:不同机器的网络启动时间差异大,60秒可能在某些机器上不够,某些机器上又纯浪费时间,只适合临时测试用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:59:48