进一步阅读

进一步阅读

我试图在 Ubuntu 18.04 (systemd 237) 上设置一个假时间,以测试每月定期任务的执行情况。

它在虚拟机(具有来宾添加的 virtualbox)上运行。

即使 ntp 同步已禁用,时间也会在几秒钟后自行重置回正确时间。

例子。

# Disable the sync
timedatectl set-ntp 0
# There aren't any ntp daemons running
systemctl -a | grep ntp    # Returns nothing

# This confirms there is no sync active
timedatectl status         
#                       Local time: Mo 2019-03-11 15:22:13 CET
#                   Universal time: Mo 2019-03-11 14:22:13 UTC
#                         RTC time: Mo 2019-03-11 14:22:13    
#                        Time zone: Europe/Berlin (CET, +0100)
#        System clock synchronized: no                        
# systemd-timesyncd.service active: no                        
#                  RTC in local TZ: no           

# Setting up the fake time       
timedatectl set-time '2015-11-20 16:14:50'

# It worked! Wuhuu!
timedatectl status         
#                       Local time: Fr 2015-11-20 16:14:51 CET
#                   Universal time: Fr 2015-11-20 15:14:51 UTC
#                         RTC time: Fr 2015-11-20 15:14:51    
#                        Time zone: Europe/Berlin (CET, +0100)
#        System clock synchronized: no                        
# systemd-timesyncd.service active: no                        
#                  RTC in local TZ: no

# 5 sec later
timedatectl status         
#                       Local time: Mo 2019-03-11 15:25:35 CET
#                   Universal time: Mo 2019-03-11 14:25:35 UTC
#                         RTC time: Fr 2015-11-20 15:14:51    
#                        Time zone: Europe/Berlin (CET, +0100)
#        System clock synchronized: no                        
# systemd-timesyncd.service active: no                        
#                  RTC in local TZ: no

如果没有同步服务,那么如何保持同步呢?

答案1

如果没有同步服务,[...]

但是还有。它内置于在来宾操作系统中运行的 VirtualBox 服务中。

不幸的是,来宾操作系统中的服务VBoxService同时完成了很多事情,停止它会完全消除它所做的一切。由于无法通过本机服务管理工具进行控制,因此唯一可用的细粒度控制是 Oracle 的工具:

VBoxManage 设置额外数据“虚拟机名称”“VBoxInternal/设备/VMMDev/0/Config/GetHostTimeDisabled”1

这不会禁用同步服务线程本身。它使该线程调用的管理程序调用返回失败。同步服务线程继续运行。只是反复获取主机时间失败。

进一步阅读

答案2

这似乎是由虚拟机与主机系统同步的服务引起的。就我而言(Virtualbox)禁用该服务解决了问题。

systemctl stop vboxadd-service.service

其他答案/评论中指定了更复杂的解决方案,但它们需要在主机端执行一个步骤。对于我的情况,考虑到与此模拟相关的所有测试都需要在来宾上执行,记录起来更简单。

相关内容