Linux 通过命令提示符设置日期和时间
使用 date 命令显示当前日期和时间,或通过 ssh 会话设置系统日期/时间。您还可以以 root 用户身份从 X 终端运行 date 命令。您必须以 root 用户身份登录才能使用 date 命令。如果 Linux 服务器时间和/或日期错误,您需要从 shell 提示符将其设置为新值,则此功能非常有用。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 系统管理 |
先决条件 | date 命令 |
操作系统兼容性 | Alma • Alpine • Arch • Debian • Fedora • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • WSL |
预计阅读时间 | 6 分钟 |
Linux 显示当前日期和时间
只需输入日期命令:
$ date
示例输出:
Mon Jan 21 01:31:40 IST 2019
Linux 显示硬件时钟(RTC)
键入以下 hwclock 命令来读取硬件时钟并在屏幕上显示时间:
# hwclock -r
或者
以协调世界时(UTC)显示:
示例输出:
# hwclock --show
## OR ##
$ sudo hwclock --show --verbose
# hwclock --show --utc
2019-01-21 01:30:50.608410+05:30
Linux 设置日期命令示例
使用以下语法设置新数据和时间:
# date --set="STRING"
例如,将新数据设置为 2006 年 10 月 2 日 18:00:00,以 root 用户身份输入以下命令:
# date -s "2 OCT 2006 18:00:00"
或者
# date --set="2 OCT 2006 18:00:00"
您也可以使用以下语法简化格式:
# date +%Y%m%d -s "20081128"
Linux 设置时间示例
要设置时间,请使用以下语法:
# date +%T -s "10:13:13"
其中,
- 10:小时 (hh)
- 13:分(毫米)
- 13:第二(ss)
使用%p区域设置的 AM 或 PM 等效值,输入:
# date +"%T%p" -s "6:10:30AM"
# date +"%T%p" -s "12:10:30PM"
如何设置硬件时钟?
使用以下语法从系统时钟设置硬件时钟,并更新 /etc/adjtime 文件中的时间戳。例如:
# hwclock --systohc
或
# hwclock -w
想从硬件时钟设置系统时钟?尝试:
# hwclock --hctosys
或
# hwclock -s
关于基于 systemd 的 Linux 系统的说明
对于基于 systemd 的 Linux 系统,您需要使用 timedatectl 命令来设置或查看当前日期和时间。大多数现代发行版(如 RHEL/CentOS v.7.x+、Fedora Linux、Debian、Ubuntu、Arch Linux 和其他基于 systemd 的系统)都需要 timedatectl 实用程序。请注意,上述命令也适用于现代系统。
我如何知道我在 Linux 中使用 systemd 或 sys v init 或 OpenRC 作为 init 系统?
运行 type 命令或 command 命令来查看它的内容。例如:
$ type systemd
你得到任何输出了吗?以下是 Ubuntu 20.04 LTS 返回的内容:
systemd is hashed (/usr/bin/systemd)
换句话说,我正在使用 systemd 作为 init。Alpine Linux 版本 3.18 中的以下错误表明我没有使用基于 systemd 的 Linux 发行版进行 init:
-bash: type: systemd: not found
您可以通过输入以下 systemctl 命令来查看 systemd 版本:
$ systemctl --version
输出:
systemd 253 (253.4-1-arch) +PAM +AUDIT -SELINUX -APPARMOR -IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT -QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP -SYSVINIT default-hierarchy=unified
使用 timedatectl 命令显示当前日期和时间
在基于 systemd 的 Linux 发行版上输入以下 timedatectl 命令:
$ timedatectl
图 01:Systemd Linux timedatecetl 命令显示当前日期和时间
如何使用 timedatectl 命令更改当前日期?
要更改当前日期,请以 root 用户身份输入以下命令:
# timedatectl set-time YYYY-MM-DD
或者
$ sudo timedatectl set-time YYYY-MM-DD
例如,将当前日期设置为 2015-12-01(2015 年 12 月 1 日):
示例输出:
# timedatectl set-time '2015-12-01'
# timedatectl
Local time: Tue 2015-12-01 00:00:03 EST Universal time: Tue 2015-12-01 05:00:03 UTC RTC time: Tue 2015-12-01 05:00:03 Time zone: America/New_York (EST, -0500) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: no Last DST change: DST ended at Sun 2015-11-01 01:59:59 EDT Sun 2015-11-01 01:00:00 EST Next DST change: DST begins (the clock jumps one hour forward) at Sun 2016-03-13 01:59:59 EST Sun 2016-03-13 03:00:00 EDT
要更改日期和时间,请使用以下语法:
# timedatectl set-time YYYY-MM-DD HH:MM:SS
其中,
- HH:一小时。
- MM :等一下。
- SS:一秒钟,全部以两位数形式输入。
- YYYY:四位数的年份。
- MM:两位数的月份。
- DD:两位数的月份日期。
例如,设置日期“2015 年 11 月 23 日”和时间为“上午 8:10:40”,输入:
# timedatectl set-time '2015-11-23 08:10:40'
# date
我如何仅设置当前时间?
语法是:
示例输出:
# timedatectl set-time HH:MM:SS
# timedatectl set-time '10:42:43'
# date
Mon Nov 23 08:10:41 EST 2015
如何使用 timedatectl 命令设置时区?
要查看所有可用时区的列表,请输入:
要将时区设置为“Asia/Kolkata”,请输入:
验证:输出:
$ timedatectl list-timezones
$ timedatectl list-timezones | more
$ timedatectl list-timezones | grep -i asia
$ timedatectl list-timezones | grep America/New
# timedatectl set-timezone 'Asia/Kolkata'
# timedatectl
Local time: Mon 2015-11-23 08:17:04 IST
Universal time: Mon 2015-11-23 02:47:04 UTC
RTC time: Mon 2015-11-23 13:16:09
Time zone: Asia/Kolkata (IST, +0530)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
如何使用 NTP 将系统时钟与远程服务器同步?
只需输入以下命令:
# timedatectl set-ntp yes
验证它:
$ timedatectl
示例输出:
Local time: Mon 2015-11-23 08:18:49 IST
Universal time: Mon 2015-11-23 02:48:49 UTC
RTC time: Mon 2015-11-23 02:48:50
Time zone: Asia/Kolkata (IST, +0530)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
结论
Linux 用户可以使用 date 命令打印或设置系统日期和时间。基于 Systemd 的 Linux 用户可以使用 timedatectl 控制系统时间和日期。您还可以使用 Linux 命令行设置新的 timzone。使用 man 命令或 help 命令阅读以下手册页:
$ man 8 hwclock
$ man 1 date
$ man 8 timedatectl