电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 727|回复: 0

Linux下修改时区、时间详解

[复制链接]
admin 发表于 2022-7-3 00:05:40 | 显示全部楼层 |阅读模式
一、linux下如何查看时区:      1) # date
   Sat Jul  2 23:57:07 CST 2022  (其中CST就是时区,代表中国所用的+08时区)
   2)#timedatectl
               Local time: Sat 2022-07-02 23:56:52 CST
               Universal time: Sat 2022-07-02 15:56:52 UTC
                RTC time: Sat 2022-07-02 15:56:51
                Time zone: Asia/Shanghai (CST, +0800)
                System clock synchronized: yes
                NTP service: active
                RTC in local TZ: no
二、如何查看时间     在linux中有硬件时钟和系统时钟两种时钟,硬件时钟是指主板上的时钟设备,也就是通常在bios中记录的时钟,系统时钟是指操作系统上的时间;当linux启动时,操作系统会去读取硬件时钟,然后操作系统上的时钟和硬件时钟分别独立运行,这也就是系统刚启动时 系统时间和硬件时间相同,运行的时间长了之后,可能就会有误差的原因。
     1.date 查看系统时间

     2.hwclock --show 或hwclock -r 查看硬件的时间

     3、hwclock --hctosys 或  hwclock -s 将硬件时间写入系统时间

     4、hwclock  --systohc 或  hwclock -w 将系统时间写入硬件时间

          备注: hwclock 和 clock 这两个命令相同

三、如何修改时间

      第一种方式:

       date -s "2007-08-03 14:15:00"   (修改系统时间,这种方法,时间很难精确到秒)

        hwclock  --systohc 或  hwclock -w (将系统时间写入硬件时间,否则系统重启时自动同步硬件时钟后,时间就不准了)

       第二种方式:

        yum -y install  ntpdate (安装 ntpdate命令)

        ntpdate -u 210.72.145.44 (加上参数-u更好一些,-u参数可以指定用无特权的端口,能越过防火墙与主机同步)

       hwclock  --systohc 或  hwclock -w

四、如何定时同步时间

      在此之间介绍一下 ntpd服务和ntpdate命令间的区别:

      ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。

       使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间,会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且,ntpd服务可以在修正时间的同时,修正cpu tick。理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

      要注意的是,ntpd有一个自我保护设置: 如果本机与上源时间相差太大, ntpd不运行. 所以新设置的时间服务器一定要先ntpdate从上源取得时间初值, 然后启动ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.

       方法一、

        #crontab -e

       输入 0 23 * * * /usr/sbin/ntpdate -u 210.72.145.44 >> /var/log/ntpdate.log (每天23:00同步时间,并将同步的日志放到/var/log/ntpdate.log)

     方法二、
     使用ntpd服务,详见:http://www.jsjlt.com/thread-72504-1-1.html


五、如何修改时区
      修改分区常见的有三种方法:
       方法一、
         centos 7 以上,可以用命令   timedatectl set-timezone 'Asia/Shanghai'
   方法二、
     使用tzselect + 修改.profile、.bash_profile或者/etc/profile 来实现
          首先先执行 tzselect  选择需要修改的分区,执行完之后,提示:
          You can make this change permanent for yourself by appending the line
        TZ='America/Port_of_Spain'; export TZ
         to the file '.profile' in your home directory; then log out and log in again.
        说明: tzselect 仅仅是一个查看时区如何修改的向导程序,它最后告诉你应该修改哪些变量来实现修改分区,这条命令本身并不会改变分区。
        根据上面的提示,我们需要在.profile文件中 添加一个变量,也就是添加一条语句TZ='America/Port_of_Spain'; export TZ  ,
实际上这个语句,我们可以添加到 家目录下的 .profile 或 .bash_profile或者/etc/profile,如果我们添加到家目录下的配置文件,那么这个变量仅仅对当前这个用户有效,如果系统上有多个用户,那么修改后当前这个用户的时区就修改了,但是其他用户的分区还是原来的(多用户系统是允许不同的用户使用不同的时区的)
修改后,继续执行:  
    #source   .bash_profile  ( 我修改的是 .bash_profile文件,使用source 让配置立即生效,也可以用户重新登录来使配置生效)
    #echo $TZ     (验证TZ变量是否生效)
    #date  (验证时区已经修改)
   
   方法三、   复制相应的时区文件,替换系统时区文件;或者创建链接文件
1、   #rm -rf /etc/localtime  (先删除/etc/localtime,否则若存在此文件,软连接会失败)
2、   #cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 或者 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-12-29 16:13 , Processed in 0.097478 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表