麒麟系统需精确配置更新时间窗以避免影响业务,可通过图形界面(控制中心→更新→高级选项→设置跨零点时段)、修改APT定时任务(禁用默认timer+自定义shell脚本+systemd timer)或约束unattended-upgrades(禁用内置调度+校验脚本+timer)三种方式实现。

如果您在麒麟操作系统中希望系统只在指定时间段内自动下载和安装更新,避免占用工作时间带宽或影响业务连续性,就必须精确配置自动更新的执行窗口,而不是仅依赖默认全天候策略。
通过图形界面设置更新时间段
该方式适合不熟悉命令行的桌面用户,操作直观,底层调用的是 kylin-update-manager 的时间调度逻辑。
1、打开“控制中心” → “更新” → 切换到“高级选项”标签页。
2、找到“更新时间段”区域,勾选“仅在指定时间段内执行更新”。
3、在下方两个下拉框中分别设置起始时间和结束时间,例如起始设为“22:00”,结束设为“06:00”——【注意:起止时间必须跨零点才可覆盖夜间时段,若设为08:00→18:00则实际无效】。
4、点击右下角“应用”按钮保存设置,无需重启服务,下次计划任务即按此窗口触发。
修改APT周期性配置文件限定执行时段
此方法直接干预底层APT定时机制,适用于服务器环境或需与 cron 精确对齐的场景,但需配合 systemd timer 实现时间窗控制。
方法一:禁用默认 daily 任务,改用自定义 timer
1、先停用系统自带的每日更新任务:sudo systemctl disable apt-daily.timer apt-daily-upgrade.timer
2、创建强制时间窗脚本:sudo nano /usr/local/bin/kylin-timebound-update.sh
3、写入内容:#!/bin/bash if [ $(date +\%H) -ge 22 ] || [ $(date +\%H) -lt 6 ]; then apt-get update && unattended-upgrade -d; fi
4、赋予执行权限:sudo chmod +x /usr/local/bin/kylin-timebound-update.sh
5、创建 timer 单元:sudo nano /etc/systemd/system/kylin-nightly-update.timer
6、填入配置:[Unit] Description=Run update only between 22:00 and 06:00 [Timer] OnCalendar=*-*-* 22,23,00,01,02,03,04,05:00 Persistent=true [Install] WantedBy=timers.target
7、启用并启动:sudo systemctl daemon-reload && sudo systemctl enable --now kylin-nightly-update.timer
配置 unattended-upgrades 的时间过滤逻辑
unattended-upgrades 本身不支持原生时间段设定,但可通过 shell wrapper + systemd timer 实现硬性约束,这是最可靠且可审计的方式。
第一步:确认 unattended-upgrades 已安装并启用
sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades
第二步:编辑其配置文件,关闭自动触发
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
将 APT::Periodic::Unattended-Upgrade 行改为 "0",彻底禁用其内置调度器。
第三步:新建校验脚本并绑定 timer
sudo nano /usr/local/bin/nightly-upgrade-check.sh
写入:#!/bin/bash HOUR=$(date +\%H) if [[ $HOUR == "22" || $HOUR == "23" || $HOUR =~ ^0[0-5]$ ]]; then /usr/bin/unattended-upgrade -d fi
第四步:创建对应 timer 并激活
sudo systemctl daemon-reload && sudo systemctl enable --now nightly-upgrade-check.timer


















