Linux修改日期时间

1.修改时区为东八区
执行代码:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2.修改日期,如修改为2013年4月13日
执行代码:date -s 04/13/2013

3.修改时间。如修改为17:30
执行代码:date -s 17:30:00

然后将当前时间和日期写入BIOS,避免重启后失效
执行代码:hwclock -w

==========================================

2013.04.04补充:
今天发现自己的一个VPS,安装的是Centos系统,其时间无法用上面的命令修改,后经过百度解决了问题,现整理一下思路:

检查本机是否安装了 nptd 服务(可以不开机启动),如果没有,则 yum install -y ntp

检查 /etc/ntp.conf 里面的时间同步服务器是否有问题(一般是没有问题的)。

执行 ntpd -gq && hwclock -w 同步时间并写入BIOS
(g选项允许调整15分钟以上,q选项是在同步成功后退出)
发现仍然无效,时间仍然相差了近20分钟

编辑 /etc/sysctl.conf 文件,添加一行 xen.independent_wallclock = 1,然后执行 sysctl -p 命令重新加载内核配置

再一次执行 ntpd -gq && hwclock -w 重新同步时间,然后再使用 date 命令,发现时间正常了。

原因分析:这是 Xen 虚拟化技术导致的,Xen 虚拟机默认不允许不同的虚拟机使用不同的系统时间,因此所有虚拟机的系统时间都会同宿主机的系统时间严格同步,用 date 命令修改虚拟机系统时间时虽然提示成功但其实系统时间还是没变,因此只好修改内核配置文件了。

==========================================

2017.12.12补充:

Ubuntu 16.04 VPS更新系统时间的方法,跟上面的命令大同小异

重置timezone,以下方法二选一即可

# 方法一
$ sudo dpkg-reconfigure tzdata  #选择Asia–Hong Kong即可

# 方法二
$ sudo timedatectl list-timezones  | grep Asia  #查看亚洲时区
$ sudo timedatectl set-timezone Asia/Shanghai   #设置时区

使用ntpd服务更新时间

$ sudo apt-get install ntp

$ sudo ntpd -gq    #同步NTP时间

$ date         #查看系统时间
Fri Dec  8 18:49:11 HKT 2017

$ hwclock -r   #查看hardware时间
Fri 08 Dec 2017 08:51:05 PM HKT  .429333 seconds

$ sudo hwclock -w --systohc   #set the hardware clock from the current system time

$ hwclock -r   #再次查看hardware时间
Fri 08 Dec 2017 06:49:22 PM HKT  .953891 seconds 这应该是12小时制,所以显示06:49是正常的

$ date
Fri Dec  8 18:49:32 HKT 2017

==========================================

2018.09.15补充:

Ubuntu 系统的时间管理方式

由于Ubuntu 16.04 timedatectl/timesyncd(属于systemd的一部分)取代了大部分的ntpdate/ntp. systemd-timesyncd是一个轻量级的时间同步服务. 在没有安装ntp的机器上, 系统默认使用systemd-timesyncd服务来更新时间.

$ systemctl status systemd-timesyncd

$ timedatectl
                      Local time: Sat 2018-09-15 16:50:41 CST
                  Universal time: Sat 2018-09-15 08:50:41 UTC
                        RTC time: Sat 2018-09-15 08:50:42
                       Time zone: Asia/Shanghai (CST, +0800)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

切换到ntpd

$ timedatectl set-ntp no    #停用systemd-timesyncd

$ timedatectl
                      Local time: Sat 2018-09-15 16:58:07 CST
                  Universal time: Sat 2018-09-15 08:58:07 UTC
                        RTC time: Sat 2018-09-15 08:58:08
                       Time zone: Asia/Shanghai (CST, +0800)
       System clock synchronized: yes
systemd-timesyncd.service active: no    #此时会变为no
                 RTC in local TZ: no

$ sudo apt-get install ntp

$ sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000

$ sudo apt-get start ntp

==========================================

2018.09.17补充:

为什么ntp服务已经运行, 系统时间仍是错误的?(Ubuntu)

One thought on “Linux修改日期时间

  1. 上面的方法是管用的,但系统一旦重启,时间又会变回去,考虑 VPS 重启后可能会被强制同步时间,因此最好在 /etc/rc.local 中加入:
    ntpdate us.pool.ntp.org

发表评论

您的电子邮箱地址不会被公开。