我遇到了问题。有类似以下消息
Mar 1 15:52:34 ubuntu systemd[1]: Time has been changed
Mar 1 15:52:34 ubuntu systemd[1]: snapd.refresh.timer: Adding 1h 16min 25.978183s random time.
Mar 1 15:52:34 ubuntu systemd[1]: apt-daily.timer: Adding 8h 21min 914.167ms random time.
Mar 1 15:52:34 ubuntu systemd[6041]: Time has been changed
每 5 秒在 /var/log/syslog 中。看起来好像有什么东西在不断改变时间。这真的很烦人,我知道出了问题,想修复它。而且 RTC 时间也不正确。
有关我的系统的一些信息:
- Ubuntu 16.04,4.4.0-64-generic,x86_64,在 VDS 上运行
timedatectl
:
Local time: Ср 2017-03-01 16:05:03 MSK
Universal time: Ср 2017-03-01 13:05:03 UTC
RTC time: Пт 2017-03-03 11:33:10
Time zone: Europe/Moscow (MSK, +0300)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
iptables
:
Chain INPUT (policy DROP)
Chain OUTPUT (policy ACCEPT)
链INPUT
子里有我的规则。
systemctl list-units | grep running
acpid.path loaded active running ACPI Events Check
init.scope loaded active running System and Service Manager
acpid.service loaded active running ACPI event daemon
asterisk.service loaded active running Asterisk PBX
atd.service loaded active running Deferred execution scheduler
cron.service loaded active running Regular background program processing daemon
dbus.service loaded active running D-Bus System Message Bus
[email protected] loaded active running Getty on tty1
hv-kvp-daemon.service loaded active running Hyper-V KVP Protocol Daemon
hv-vss-daemon.service loaded active running Hyper-V VSS Protocol Daemon
iscsid.service loaded active running iSCSI initiator daemon (iscsid)
lvm2-lvmetad.service loaded active running LVM2 metadata daemon
lxcfs.service loaded active running FUSE filesystem for LXC
mdadm.service loaded active running LSB: MD monitoring daemon
mysql.service loaded active running MySQL Community Server
[email protected] loaded active running OpenVPN connection to server
rsyslog.service loaded active running System Logging Service
snapd.service loaded active running Snappy daemon
ssh.service loaded active running OpenBSD Secure Shell server
systemd-journald.service loaded active running Journal Service
systemd-timesyncd.service loaded active running Network Time Synchronization
systemd-udevd.service loaded active running udev Kernel Device Manager
[email protected] loaded active running User Manager for UID 1000
vpsguard.service loaded active running VPSGUARD
acpid.socket loaded active running ACPID Listen Socket
dbus.socket loaded active running D-Bus System Message Bus Socket
lvm2-lvmetad.socket loaded active running LVM2 metadata daemon socket
snapd.socket loaded active running Socket activation for snappy daemon
我努力了:
sudo systemctl stop systemd-timesyncd.service
- 安装/卸载 NTP
sudo hwclock -w
我没有安装 sclockadj。我还询问了我的 VDS 提供商是否阻止任何 NTP 请求。没有,他们没有。
更新 1
我设置了另一个完全相同的 VDS#2。systemd[1]: Time has been changed
几分钟后收到此消息,该消息CRON[3684]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
出现后问题就消失了。但是我尝试升级 VDS#2,重启后这个时间又变了。
找到了这个线,也许它可以提供更多信息。看起来这是一个内核问题。
尝试降级内核、systemd、udev,但这些都不起作用。而且从一些回复中我可以看出,这不仅仅是我的主机和虚拟化的问题。
答案1
我在运行 Windows 8.1 Hyper-V 的 16.04 服务器上遇到了systemd[...]Time has been changed
每五秒记录一次消息的问题 。为了解决这个问题,我禁用了 Hyper-V 端的时间同步。/var/log/syslog
在 Hyper-V 管理器中,我突出显示了 VM,选择了 设置, 然后 集成服务,未选中时间同步,然后点击申请。
消息立即停止 - 无需重新启动虚拟机。
答案2
在 HyperV/Azure 上,可以通过创建 syslog 过滤器来禁用该消息。
在 /etc/rsyslog.d 中创建一个新文件
vi /etc/rsyslog.d/15-excludetime.conf
插入两行
:msg, contains, "Time has been changed" ~ :msg, contains, "apt-daily.timer: Adding" ~
重启 rsyslog
systemctl restart rsyslog.service
或者您可以禁用 VMBUS 上的主机时间同步。我将以下行放在 /etc/rc.local 下
echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind
答案3
我在 Microsoft Azure VM 上遇到了同样的问题。将硬件时钟设置为系统时间对我来说很有效;
hwclock -w