如何在 Linux 上通过命令行更改日期和时间
问题:在 Linux 中,如何从命令行更改日期和时间?
保持 Linux 系统中的日期和时间最新是每个 Linux 用户和系统管理员的重要责任。许多应用程序依赖准确的计时信息才能正常运行。此外,不准确的日期和时间会使日志文件中的时间戳信息毫无意义,从而降低了它们对系统检查和故障排除的有用性。对于生产系统,准确的日期和时间更为重要。例如,零售公司的生产必须始终精确核算(并存储在数据库服务器中),以便财务部门可以计算当天、本周、每月和每年的费用和净利润。
我们必须注意,Linux 机器中有两种时钟:由内核维护的软件时钟(又名“系统时钟”)和(电池驱动的)“硬件时钟”,用于在机器断电时跟踪时间。在引导期间,内核将系统时钟设置为与硬件时钟相同的时间。此后,两个时钟彼此独立运行。
下面的文章介绍了在 Linux 上更改系统时钟和硬件时钟的几种方法。
方法一:date
命令
在 Linux 中,您可以使用 date
命令更改系统的日期和时间:
# date --set='NEW_DATE'
其中 NEW_DATE
是大多数自由格式的人类可读日期字符串,例如“Sun, 28 Sep 2014 16:21:42
”或“2014-09-29 16:21:42
”。
还可以指定日期格式以获得更准确的结果:
# date +FORMAT --set='NEW_DATE'
例如:
# date +’%Y%m%d %H%m’ --set='20140928 1518'

您还可以分别将日期或时间增加或减少天数、周数、月数或年数以及秒数、分钟数或小时数。您也可以将日期和时间参数组合在一个命令中。
# date --set='+5 minutes'
# date --set='-2 weeks'
# date --set='+3 months'
# date --set='-3 months +2 weeks -5 minutes'

最后,将硬件时钟设置为当前系统时间:
# hwclock --systohc
运行“hwclock --systohc”
的目的是用软件时钟更新硬件时钟。这是为了纠正硬件时钟的系统漂移,即硬件时钟始终以一定的速率增加或丢失时间。
另一方面,如果硬件时钟显示正确的日期和时间,但系统时钟没有显示,则可以按如下方式更新后者:
# hwclock --hctosys
无论哪种情况,hwclock
命令都会同步两个时钟。否则,下次重新启动后时间将是错误的,因为硬件时钟在电源关闭时保持时间。但是,请记住,这不适用于虚拟机,因为它们无法直接访问主机的硬件时钟。
如果您的 Linux 系统上的默认时区不正确,您可以按照此指南进行更改。
方法二:NTP
保持系统日期和时间准确的另一种方法是使用 NTP(网络时间协议)。在 Linux 上,ntpdate
命令可以使用 NTP 将系统时钟与公共 NTP 服务器或您自己的自定义 NTP 服务器同步。
您可以按如下方式安装 ntpdate
:
在 Debian 及其衍生版本上:
# aptitude install ntpdate
在基于 Red Hat 的发行版上:
# yum install ntpdate
使用 NTP 同步系统时钟:
# ntpdate -u <NTP server name or IP address>
# hwclock --systohc

与使用 ntpdate 进行一次性时钟同步不同,您还可以在系统上设置 NTP 守护进程,以便 NTP 守护进程始终在后台运行,通过 NTP 不断调整系统时钟。请参阅本指南进行设置。