Ubuntu 不支持小时级自动更新调度,因其底层依赖 systemd timer 硬编码的每日随机触发机制,APT 周期参数仅控制动作开关(如“1”表示启用每日执行),不指定具体时间;图形界面的“每周提示”是 update-manager 独立实现的发现后 168 小时逻辑,与定时器无关。

Ubuntu 不支持“每 X 小时检查一次”或“每周二下午 3 点执行”这类任意时间粒度的更新频率设置——它的底层定时机制只接受以“天”为单位的整数周期,且实际触发由 systemd timer(如 apt-daily.timer)硬编码控制,无法通过配置文件修改具体小时/分钟。
为什么不能自定义到小时级?
Ubuntu 的自动更新依赖 apt-daily.timer 和 apt-daily-upgrade.timer,这两个 timer 的触发时间由 systemd 随机偏移(jitter)+ 固定间隔共同决定,目的是避免全网设备在同一时刻涌向镜像源。即使你手动改了 OnCalendar=*,也会被 systemd 自动覆盖或忽略,因为 APT 周期任务本身不响应任意 cron 式调度。
-
apt-daily.timer默认每天随机触发(通常在凌晨 00:00–06:00 区间) -
apt-daily-upgrade.timer在apt-daily.timer完成后延迟启动(约 15–60 分钟),确保包列表已刷新 - 所有
/etc/apt/apt.conf.d/*.conf文件中的APT::Periodic::*参数值只能是整数(如"1"表示“每天”,"0"表示禁用),不支持小数或时间字符串
20auto-upgrades 中的数字到底控制什么?
这个文件里的数值不是“频率”,而是“是否启用某类动作”的开关标志,每个参数独立生效:
-
APT::Periodic::Update-Package-Lists "1":每天运行apt update(刷新可用包列表) -
APT::Periodic::Download-Upgradeable-Packages "1":每天下载已知可升级包(但不安装) -
APT::Periodic::Unattended-Upgrade "1":每天尝试安装已下载的安全更新(需配合50unattended-upgrades中的源白名单) -
APT::Periodic::AutocleanInterval "7":每 7 天运行apt autoclean(清理旧版本 .deb 缓存)
注意:"1" ≠ “每天上午 9 点”,它只表示“在下一次 timer 触发时执行该动作”。实际执行时间不可控,也无法精确指定。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
图形界面里“每周显示其他更新”是怎么实现的?
这是 update-manager(GUI 工具)自己做的本地逻辑,和底层 APT 定时器无关:
- 它每天调用
apt list --upgradable检查可升级包 - 对非安全更新(即来自
-updates源而非-security源的包),会记录首次发现时间 - 只有当该包“首次被发现超过 7 天”时,才弹出通知(不是按日历周,而是按发现后 168 小时)
- 这个行为无法通过命令行或配置文件调整,仅存在于桌面版的 GUI 层
所以如果你用的是服务器(无 GUI),或者通过 SSH 远程管理,这个“每周提示”根本不会出现——你看到的只有日志和邮件(如果配了)。
真正能调的只有“开/关”和“源范围”,不是“几点执行”
想让系统更安静或更积极,关键不是调时间,而是控制动作类型和适用范围:
- 要彻底禁用自动下载:把
APT::Periodic::Download-Upgradeable-Packages设为"0",否则即使不安装,也会悄悄占带宽 - 要阻止内核自动升级(常见翻车点):用
apt-mark hold linux-image-$(uname -r) linux-headers-$(uname -r) - 要只允许安全更新(最稳妥):确认
/etc/apt/apt.conf.d/50unattended-upgrades中只有"${distro_id}:${distro_codename}-security"在Unattended-Upgrade::Allowed-Origins里 - 要避免半夜重启:确保
Unattended-Upgrade::Automatic-Reboot是"false"(默认值),别信某些教程说它默认 true
所有这些操作都生效于下一次 timer 触发,而不是你保存配置的那一刻。别指望改完立刻看到效果,等几个小时或手动跑一次 sudo unattended-upgrades --dry-run 验证即可。

















