惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
S
Secure Thoughts
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Troy Hunt's Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
博客园 - 司徒正美
NISL@THU
NISL@THU
小众软件
小众软件
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
Hacker News: Ask HN
Hacker News: Ask HN
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园_首页
罗磊的独立博客
S
Securelist
N
News | PayPal Newsroom
大猫的无限游戏
大猫的无限游戏
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
爱范儿
爱范儿
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
J
Java Code Geeks
V
V2EX
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
I
Intezer
腾讯CDC
P
Privacy & Cybersecurity Law Blog
SecWiki News
SecWiki News
Google DeepMind News
Google DeepMind News
P
Palo Alto Networks Blog
Cloudbric
Cloudbric
Apple Machine Learning Research
Apple Machine Learning Research
N
News and Events Feed by Topic
Latest news
Latest news
L
LINUX DO - 最新话题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 【当耐特】
Last Week in AI
Last Week in AI
The Cloudflare Blog

Sonic's blog, since 2003…

Thinkpad 禁用F12键启动联想管家 – Sonic's blog, since 2003… 路由器改造NetCore N60Pro刷官方ImmortalWRT – Sonic's blog, since 2003… Windows下Dropbox无法启动,MS Teams重复重启,一个命令解决 – Sonic's blog, since 2003… 启用Imperva CDN情况下,使用Fail2Ban屏蔽恶意访问 – Sonic's blog, since 2003… Cloudflare Tunnel链接错误排查 – Sonic's blog, since 2003… 查看日志处理Synology Drive Client文章同步失败 – Sonic's blog, since 2003… 修复React2Shell漏洞导致服务器权限泄露 之二 – Sonic's blog, since 2003… 修复React2Shell漏洞导致服务器权限泄露 之一 – Sonic's blog, since 2003… OpenClash 深入解析:架构与原理 – 系列之一 – Sonic's blog, since 2003…
ubuntu如何设置自动执行apt upgrade – Sonic's blog, since 2003…
Sonic · 2025-12-26 · via Sonic's blog, since 2003…

在 Ubuntu 中设置自动更新和升级,最推荐、最标准的方法是使用 unattended-upgrades 工具。它比简单的 Cron 脚本更安全,因为它能处理包依赖关系、配置保留以及系统锁。

以下是详细的设置步骤:

方法一:使用 unattended-upgrades (官方推荐)

1. 安装并启用服务

大多数 Ubuntu 版本默认已安装此工具。如果没有,请先安装:

sudo apt update
sudo apt install unattended-upgrades

接下来,通过以下命令启用自动更新(会弹出一个蓝色界面,选择 Yes 并回车):

sudo dpkg-reconfigure --priority=low unattended-upgrades

这会自动创建 /etc/apt/apt.conf.d/20auto-upgrades 配置文件。

2. 配置更新范围(重要)

默认情况下,该工具通常只安装安全更新。如果你希望它像执行 apt upgrade 一样更新所有软件,需要修改配置文件。

打开配置文件:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

找到 Unattended-Upgrade::Allowed-Origins 部分。 你需要取消注释(去掉行首的 //)包含 -updates 的那一行。

修改前:

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-security";
        // Extended Security Maintenance; doesn't necessarily exist for
        // every release and this system may not be enabled
        "${distro_id}ESMApps:${distro_codename}-apps-security";
        "${distro_id}ESM:${distro_codename}-infra-security";
//      "${distro_id}:${distro_codename}-updates";  <-- 这一行通常是被注释的
//      "${distro_id}:${distro_codename}-proposed";
//      "${distro_id}:${distro_codename}-backports";
};

修改后(启用普通更新):

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-security";
        ...
        "${distro_id}:${distro_codename}-updates";  <-- 去掉双斜杠
        ...
};

3. 配置自动重启(可选)

如果更新了内核(Kernel),通常需要重启才能生效。你可以设置自动重启。

在同一个文件 (50unattended-upgrades) 中向下滚动,找到以下设置并修改:

// 设置为 true 启用自动重启
Unattended-Upgrade::Automatic-Reboot "true";

// 设置重启时间(例如凌晨 02:00)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

4. 自动清理旧内核和依赖(可选)

为了防止 /boot 分区填满,建议开启自动移除未使用的依赖:

Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

保存文件并退出 (Ctrl+O, Enter, Ctrl+X)。

5. 检查执行频率

检查 /etc/apt/apt.conf.d/20auto-upgrades 文件,确保内容如下:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
  • “1” 表示每天执行一次。
  • “0” 表示禁用。

6. 测试配置

你可以运行以下命令来模拟运行(不会真的安装),查看是否有报错:

sudo unattended-upgrades --dry-run --debug

方法二:使用 Crontab (简单粗暴,不推荐用于生产环境)

如果你不想使用专门的工具,只想强制每天运行命令,可以使用 Crontab。 注意: 这种方法在遇到配置文件冲突(需要按 Y/N)时可能会卡住或失败。

  1. 编辑 Crontab:

    sudo crontab -e
    
  2. 在文件末尾添加一行(例如每天凌晨 3 点执行):

    0 3 * * * apt update && apt upgrade -y && apt autoremove -y
    
    • -y 参数表示自动确认所有提示。

如何查看更新日志?

如果使用方法一 (unattended-upgrades),日志文件位于: /var/log/unattended-upgrades/

你可以查看最近的日志:

cat /var/log/unattended-upgrades/unattended-upgrades.log

总结建议

  • 个人电脑/测试机:推荐使用 方法一,并开启 -updates 源。
  • 生产环境服务器
    • 推荐使用 方法一,但通常只开启 -security (安全更新)
    • 对于普通的应用更新,建议人工手动执行,以免自动更新导致服务兼容性问题挂掉。
    • 自动重启功能在生产环境需谨慎开启。