无人值守升级所用的配置时间

无人值守升级所用的配置时间

在配置 Unattended-Upgrades 时,“/etc/apt/apt.conf.d/50unattended-upgrades”文件包含以下内容:

// 如果启用了自动重启并且需要,则在特定时间重启而不是立即重启 // 默认值:“现在” //Unattended-Upgrade::Automatic-Reboot-Time “02:00”;

我需要确定“02:00”是指 UTC 时间还是本地机器时间?就 systemd 的使用而言,使用 systemd“/lib/systemd/system/apt-daily.timer”设置时,此配置文件中的时间设置是否重要?

答案1

systemd默认解析本地时区的日期,除非另有说明。摘录自时间格式文档

如果没有明确指定,时区默认为当前时区. 它可以像上面一样放在空格后面,在这种情况下它可以是:“ UTC”,已安装的 IANA 时区数据库中的条目(“ CET”,“ Asia/Tokyo”等;完整列表可使用“ timedatectl list-timezones”获得(参见 timedatectl(1))),或“ ±05”,“ ±0530”,“ ±05:30”,“ Z”。

因此任何日期systemd这并不表明时区将是当地时区。

此外,"now"意味着在无人值守升级 升级运营这取决于apt-daily-upgrade.timer不开apt-daily.timer它只执行更新部分操作:

$ systemctl cat apt-daily.service | grep ^ExecStart=
ExecStart=/usr/lib/apt/apt.systemd.daily update
$ systemctl cat apt-daily-upgrade.service | grep ^ExecStart=
ExecStart=/usr/lib/apt/apt.systemd.daily install

通常默认情况下更新操作每天运行两次,升级/安装操作每晚运行一次。

当需要重新启动时,unattended-upgrade将运行shutdown如下所示的命令,因为它是一个 python 脚本:

$ grep /sbin/shutdown /usr/bin/unattended-upgrade
    cmd = ["/sbin/shutdown", "-r", when]

shutdown命令由systemd或者不是,都有自己的语法和时间格式规则(为了兼容性)并且不会接受任何任意日期,而只接受一些有限的格式,包括now当前hh:mm 本地时区的,以及中描述的一些其他格式shutdown(8)unattended-upgrade只会复制其配置文件中提供的参数,因此这对于命令来说必须是有效的shutdown

如果在设置中确定何时完成重启很重要,则可能应该避免选择时区更改期间的时间(例如:在 CET(欧洲中部时间)时区中选择 02:30 可能会在 CET 到 CEST 时区转换期间错过重启,其中 02:00 将变为 03:00,具体取决于方式shutdown和其具体systemd实施行为,尽管我很惊讶这没有被考虑到)。now在这方面总是安全的。

相关内容