在配置 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
在这方面总是安全的。