一、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
|