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

推荐订阅源

S
SegmentFault 最新的问题
Spread Privacy
Spread Privacy
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
SecWiki News
SecWiki News
腾讯CDC
P
Privacy International News Feed
Webroot Blog
Webroot Blog
J
Java Code Geeks
爱范儿
爱范儿
A
About on SuperTechFans
S
Secure Thoughts
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
DataBreaches.Net
Cloudbric
Cloudbric
Security Archives - TechRepublic
Security Archives - TechRepublic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Security Latest
Security Latest
Forbes - Security
Forbes - Security
小众软件
小众软件
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Threatpost
量子位
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
GbyAI
GbyAI
S
Security @ Cisco Blogs
T
The Exploit Database - CXSecurity.com
Help Net Security
Help Net Security
V
Visual Studio Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 聂微东
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Attack and Defense Labs
Attack and Defense Labs

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 (安全更新)
    • 对于普通的应用更新,建议人工手动执行,以免自动更新导致服务兼容性问题挂掉。
    • 自动重启功能在生产环境需谨慎开启。