如何通过命令行更改 ubuntu 的服务器日期和时间?

Pri*_*lia 56 server command-line time date

Ubuntu 服务器的当前日期和时间与时区日期和时间不同。我试过使用:

sudo date "30 Sep 2015 4:43:42"
Run Code Online (Sandbox Code Playgroud)

更改它但它没有更改日期和时间,只是在终端上打印了我更改的日期和时间,但是当我执行时:

sudo hwclock --show
Run Code Online (Sandbox Code Playgroud)

日期和时间仍然是旧的。

更改 Ubuntu Server 的日期和时间的正确方法是什么?

cha*_*aos 86

您可以使用以下命令设置系统日期

sudo date --set="2015-09-30 10:05:59.990"
Run Code Online (Sandbox Code Playgroud)

那么在使用的时候date,应该是正确显示的。

现在您还应该在系统的 BIOS 中设置硬件时钟,该设置在重新启动后仍然存在(在启动期间,系统时间设置为硬件时钟的值)。这样做hwclock

sudo hwclock --systohc
Run Code Online (Sandbox Code Playgroud)

这将获取系统时钟 (sys) 值并设置硬件时钟 (hc)。用hwclock命令检查它。无论hwclockdate现在应该显示相同的日期和时间。


要设置您的时区,您可以使用以下命令:

sudo dpkg-reconfigure tzdata
Run Code Online (Sandbox Code Playgroud)

顺便说一句:如果您使用这台机器作为服务器,我强烈建议您使用 NTP-Client通过网络同步时间。因此,您可以保证所有服务器的时间设置完全相同。这将在机器运行时同步时间。如果您的应用程序依赖于服务器上的同步时间,我推荐使用 NTP-Daemon。它在后台运行的时间越长,时间就越精确。

  • 我试图改变但它没有改变:- $ sudo date --set="2015-09-30 10:05:59.990" Wed Sep 30 10:05:59 +0530 2015 $ date May 23 Thu 15:10:37 +0530 2019 (2认同)

Nat*_*ram 32

  1. 搜索您的时区
timedatectl list-timezones
Run Code Online (Sandbox Code Playgroud)
  1. 设置时区
sudo timedatectl set-timezone America/Toronto
Run Code Online (Sandbox Code Playgroud)
  1. 使能够 timesyncd
sudo timedatectl set-timezone America/Toronto
Run Code Online (Sandbox Code Playgroud)

有了这个,时间应该被设置和同步。

您可以在本教程中查看更多信息:https : //www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-18-04

  • 无需手动设置小时和分钟即可修复它的最佳方法!非常感谢! (2认同)

小智 7

我不喜欢手动设置系统时间。所以为了解决这个问题,我不得不结合两个不同的答案。
要修复系统时间,您必须使用以下代码:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
Run Code Online (Sandbox Code Playgroud)

如this answer中给出的
然后您使用系统时钟同步硬件时钟

sudo hwclock --systohc
Run Code Online (Sandbox Code Playgroud)

正如@chaos 在此线程中给出的那样。