如何自动纠正流浪汉中的系统时钟

Sho*_*Sho 19 virtualbox vagrant centos6 server

如何纠正时区

上次,我想出了如何在vagrant服务器中调整系统时钟.但是,当我停止流浪汉再次启动时,系统时钟总是晚9个小时.我可以手动使用ntp命令进行调整,但我想知道如何自动调整系统时钟.

我已经尝试了以下,但它仍然无法正常工作.有什么建议吗?

如何在VirtualBox中同步主机唤醒时间?

Fré*_*nri 34

我使用的方法不应该是提供者特定的是在我的Vagrantfile中添加以下内容

  config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime", run: "always"
Run Code Online (Sandbox Code Playgroud)

您需要将'/ Europe/Paris'替换为您想要设置的时区


Ben*_*y K 7

接受的答案不够健壮,因为它不考虑在时区之间旅行的人,并且要求最终用户修改Vagrantfile而不是仅仅做vagrant up.

建立在Scott P.的答案上,这是一个更灵活的解决方案,可以自动将VM时区与主机的tz相匹配.在他的片段的Etc/GMT时区选择中有一个拼写错误/错误,根据POSIX GMT + 7套时钟落后 7小时(见维基解释),因此我们需要交换补偿:

Vagrant.configure("2") do |config|
require 'time'
offset = ((Time.zone_offset(Time.now.zone) / 60) / 60)
timezone_suffix = offset >= 0 ? "-#{offset.to_s}" : "+#{offset.to_s}"
timezone = 'Etc/GMT' + timezone_suffix
config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s /usr/share/zoneinfo/" + timezone + " /etc/localtime", run: "always"
end
Run Code Online (Sandbox Code Playgroud)


小智 6

我有:

\n\n
[vagrant@ansiblecontrol ~]$ date -s \\"$(curl -I google.com 2>&1 | grep Date: | cut -d\' \' -f3-6)Z\\"\ndate: extra operand \xe2\x80\x982018\xe2\x80\x99\nTry \'date --help\' for more information.\n
Run Code Online (Sandbox Code Playgroud)\n\n

这对我有用:

\n\n
sudo date -s "$(curl -I google.com 2>&1 | grep Date: | cut -d\' \' -f3-6)Z"\nSun Apr  1 16:36:59 CEST 2018\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以去掉了“\\”转义符。

\n


小智 5

自动设置时区的最简单方法是使用vagrant-timezone插件。

安装 vagrant-timezone 插件

vagrant plugin install vagrant-timezone
Run Code Online (Sandbox Code Playgroud)

之后,将以下内容添加到您的 Vagrantfile

if Vagrant.has_plugin?("vagrant-timezone")
    config.timezone.value = "UTC"
end
Run Code Online (Sandbox Code Playgroud)

您可以用此处列出的任何 tz 值替换“UTC” 。例如:“亚洲/加尔各答”。