答案是使用date命令及其格式化选项可自定义时间显示格式,并通过hwclock和timedatectl管理硬件时间与系统时间同步。具体来说,date命令支持多种格式符如%Y、%m、%d等,可组合输出所需时间格式,结合+号与单引号实现精确控制,如date +'%Y-%m-%d %H:%M:%S';同时可用%F、%T等简写格式或%s获取Unix时间戳;系统时间由内核维护,硬件时间由RTC芯片保存,启动时系统读取硬件时间初始化自身,关机前通常将准确的系统时间写回硬件;通过sudo hwclock --show查看硬件时间,sudo hwclock --systohc或--hctosys进行双向同步;为保持时间精确,应配置NTP网络时间同步,并使用timedatectl设置正确时区,避免日志混乱、证书失效等问题。

在Linux系统里,想要知道现在是几点几分,或者更进一步,想把时间按照自己特定的格式打印出来,最直接也最强大的工具就是
date
其实,
date
date
date
输出大概是这样的:
Thu Nov 16 10:30:45 AM CST 2023
但如果只是这样,那它也称不上强大。
date
+
比如,我想显示成
年-月-日 时:分:秒
date +'%Y-%m-%d %H:%M:%S'
输出就会是
2023-11-16 10:30:45
这些格式代码其实有很多,每个都代表了时间的不同组成部分:
%Y
%m
%d
%H
%m
%S
%w
%a
%a
%F
%Y-%m-%d
%T
%H:%M:%S
我个人最常用的是
%F %T
%N
date +'%Y-%m-%d %H:%M:%S.%N' # 输出带纳秒的时间
这在需要非常精细的时间戳时特别有用,比如在一些性能测试或日志追踪场景里。当然,你也可以查看过去或未来的时间,这需要用到
--date
有时候,你可能会遇到一些特殊的字符,比如
%
''
%%
date
说实话,
date
项目名_YYYYMMDD_HHMM.log
date +'%Y%m%d_%H%M'
除了上面提到的那些基础格式符,
date
%d
MM/DD/YY
%r
HH:MM:SS AM/PM
%S
%Z
%Z
举个例子,如果你想知道当前是Unix时间戳多少,直接:
date +%s
这会返回一个长串数字,代表从1970年1月1日到现在的总秒数。我个人在做一些跨平台或者需要精确时间对比的时候,特别喜欢用这个,因为它不受时区影响,是个绝对时间点。
再比如,如果我想在日志里同时记录本地时间、时区以及Unix时间戳,我可以这样组合:
date +'%Y-%m-%d %H:%M:%S %Z (%z) | Unix timestamp: %s'
输出可能就是:
2023-11-16 10:45:30 CST (+0800) | Unix timestamp: 1700102730
man date
在Linux系统里,时间这东西其实有点‘两面派’。我们通常说的‘系统时间’(System Time),是内核维护的,你用
date
而另一面,是‘硬件时间’(Hardware Clock),也叫RTC(Real Time Clock)。它通常是主板上的一个独立芯片,由一个小电池供电,即使电脑关机了,它也能继续走字。你可以把它理解成你电脑主板上那个‘小手表’。
它们之间的关系是这样的:
我个人在工作中,就遇到过因为硬件时间不准导致系统启动后时间混乱的问题。比如,服务器突然断电重启,硬件时间因为电池没电或者设置问题不准,导致系统启动后日志时间都乱七八糟,排查问题简直是噩梦。
要查看硬件时间,我们通常会用到
hwclock
sudo hwclock --show
(注意,
hwclock
sudo
如果你想把系统时间同步到硬件时间,或者反过来:
sudo hwclock --systohc
sudo hwclock --hctosys
通常情况下,我们更倾向于让系统时间通过NTP保持精确,然后在关机时将这个精确的系统时间回写给硬件时间。这样,即使系统因为某些原因启动时无法立即同步NTP,也能有一个相对准确的初始时间。理解这两者的区别和联系,对于维护系统时间的准确性至关重要,尤其是在服务器环境里,时间不准可能导致证书失效、日志混乱、甚至分布式系统间通信故障等一系列问题。
光会看时间可不够,更重要的是要让它准。想象一下,如果服务器时间不准,你的日志文件时间戳是错的,或者加密证书因为时间问题失效,那可真是要命。我曾经就因为一个测试环境的时钟漂移问题,排查了整整一个下午,最后发现是NTP服务没配好。
在Linux中,确保时间精确主要有两个方面:时区设置和网络时间同步。
1. 时区设置: 时区这东西,直接影响你
date
timedatectl
这个命令会显示很多时间相关的信息,包括当前时区。或者直接看
/etc/localtime
/etc/timezone
以上就是如何在Linux中查看系统时间 Linux date时间格式化的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号