Ubuntu 20.04 在带有 MacOS 主机的 VirtualBox 中运行
使用python
而不是 shell 脚本。对于linux
在子进程中运行的命令。日期已更新,但在日期/时间自动重置后不久。已禁用 NTP。如何防止日期被重置回实际日期?
import re, shutil, csv, subprocess, yaml, click
from pathlib import Path
def cmd(cmd:str="ls -al", assertfail=True) :
up = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
str = [o.rstrip().decode() for o in up.stdout]
exitcode = up.wait()
if assertfail: assert exitcode == 0, f"[{exitcode}] {cmd} {str}"
return exitcode, str
if __name__ == '__main__':
# set date back before flash EOL date
import datetime as dt
n = dt.datetime.now()
if n.year > 2020:
systime = dt.datetime(n.year-1, n.month, n.day, n.hour, n.minute, n.second, n.microsecond).isoformat(sep=' ', timespec='milliseconds')
cmd("sudo timedatectl set-ntp off")
cmd(f"sudo date --set=\"{systime}\"")
# cmd("sudo hwclock --systohc")
cmd(f"sudo timedatectl set-time \"{systime}\"")
e, out = cmd("sudo timedatectl status")
print("\n".join(out))
e, out = cmd("date")
print(f"updated time {dt.datetime.now()} {out[0]}")
输出
Local time: Fri 2020-01-24 21:55:05 UTC
Universal time: Fri 2020-01-24 21:55:05 UTC
RTC time: Fri 2020-01-24 21:55:05
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
updated time 2020-01-24 21:55:05.980812 Fri 24 Jan 2020 09:55:05 PM UTC
您是否安装了 VirtualBox Guest Additions?如果是这样,那里有一个功能会定期更新 VM 时间以匹配主机,这可能会导致您似乎面临的情况。幸运的是,禁用它并不难。
打开终端
禁用
GetHostTimeDisabled
您不想与主机同步的虚拟机:启动虚拟机
注意:确保替换
{VM Name}
为您的虚拟机的正确名称。此设置是特定于 VM 且持久的,因此,即使您更新该 VM 的 Guest Additions 软件,也无需重新禁用该
GetHostTimeDisabled
功能。