如何证明systemd-timesyncd
正在定期轮询 NTP 服务器以确保系统时钟保持“同步”?
我知道我可以通过运行来检查同步状态是否为是timedatectl
,而且它确实告诉我“是”,但那难道不是几个月前的陈旧状态吗?我没有看到任何证据表明任何软件组件实际上正在定期联系 NTP 服务器池进行实际检查。
根据我的理解,使用默认配置PollIntervalMaxSec
2048,它最多每 34 分钟应与 NTP 进行一次时钟比较。它应该这样工作吗?
如果我运行,journalctl -u systemd-timesyncd
我只会看到重新启动或 s 的同步事件证据apt upgrade
。事实上,几周过去了,却没有任何时钟同步日志条目。
对于我的时间敏感型应用程序,我担心如果几周/几个月过去而没有任何 NTP 检查,我的系统时钟可能会出现很大偏差。我希望它每天检查一次并证明确实如此。
这可能
systemd-timesyncd
不是最适合您的 NTP 客户端选择。您可能需要编辑您的问题以澄清时间敏感对于您的特定应用程序意味着什么:最新版本的
systemd-timesyncd
手册页内容如下:根据我的经验,大多数时间敏感的应用程序要么需要详细了解何时以及如何发生大步转换,要么需要完全保证在应用程序运行时只会进行逐步调整,而不会进行步进转换。我还没有读过源代码
systemd-timesyncd
(目前),但我看不出有任何方法可以systemd-timesyncd
保证它不会进行步进转换。即使
systemd-timesyncd
有健全性检查来防止在服务运行时将系统时间倒退,我还是可以看到与自动更新可能存在不良交互:如果systemd-timesyncd
通过自动更新重新启动(其本身或其依赖的某些库,例如glibc
),它可能会在重新启动服务时进行步骤转换systemd-timesyncd
,甚至可能“时间倒退”。例如,对于包含时间敏感数据的数据库,这将是纯粹的毒药。在现代无处不在的互联网连接环境中,随着系统管理员工作量和安全合规性要求的增加,没有自动更新正成为一种不切实际的解决方案。因此,系统管理员应尽可能将系统配置为能够容忍自动化 - 对于时间敏感的应用程序,这意味着,除其他事项外,要注意确保 NTP 同步服务可重新启动/重新配置,而不会对系统的“有效负载”应用程序造成问题。在我看来,这
systemd-timesyncd
可能不符合该标准。/var/lib/systemd/timesync/clock
D'Arcy Nader 已经提到的和文件的时间戳/run/systemd/timesync/synchronized
似乎是您可以进行的最佳每日检查。如果想要实时监控,也可以使用
timedatectl timesync-status --monitor
239以上版本的命令。注意
^*
当前最佳的含义;如果您在那里^?
,那么它就没有工作,也无法看到时间服务器;首先尝试停止任何防火墙,例如,service firewalld stop
然后等待 1 分钟,然后执行,service chronyd restart
然后等待 2 分钟,然后重新检查chronyc sources
。如果您快速输入并在 5 秒内检查所有这些,您将继续看到^?
。您首先必须确保它正在成功地与时间服务器通信。然后...如果它不起作用,跟踪输出中的内容将全部为零。此跟踪输出应该有意义。
有
/etc/chrony.conf
这两个未注释的和service chronyd restart
假设你的意思是
chonyd
,并且不是ntpd
那么好...... chronyd 和 ntpd 之间的区别引自
man systemd-timesyncd.service