时区问题

问题

  • 中国使用的是东八区上海时间,而linux服务器,一般默认是0时区UTC,所以需要将时区改为东八区CST
  • 将时区改为东八区后,显示的实际仍然不对,仍然差8小时或16小时,这说明时间不对
  • 时间修改正确后,服务器重启,时间显示又错误了,因为没改硬件时钟时间

解决

  • linux系统时间,与本地时间不一致,一般有两种情况
  • 一是时区设置错误,不是当地使用时区
  • 二是时间设置错误,未联网校时,或者人为不小心设置错了

处理时区问题

date查看时间、时区

  • 首先查看时间是否正确,与当地时间一致,可使用以下命令
1
2
date
date -R
  • date查看日期时间,date -R则会把时区一起显示出来
  • 可以看到上面的时间错了(与当地时间误差几分钟),下面时间虽然对了但是时区不对(应该为+0800)
timedatectl查看时间、时区
  • 也可以使用timedatectl查看和设置时区
  • Local time:当前使用的时区的时间,也就是date命令显示的时间
  • Universal time:世界时间,也就是0时区时间,世界通用的协调时间
  • RTC time:硬件时钟时间,关机也会
  • Time zone:现正使用的时区,可以看到上面是CST,中国时区,是对的
查看localtime
  • 也可以直接使用ls -l /etc/localtime查看系统当前的时区
设置时区
  • 第一种方式,可以通过zoneinfo直接设置
1
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 第二种方式,与第一种类似,使用软连接
1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 第三种方式,使用timedatectl设置时区
1
timedatectl set-timezone Asia/Shanghai

处理时间问题

  • 如果时区已经设置对了,时间显示还是不对,可以手动设置下时间,或者使用互联网校时
  • 需要安装ntpdate,再校时即可,但是需要在联网情况下进行
1
2
3
yum install -y ntp ntpdate
ntpdate 0.asia.pool.ntp.org
date
  • 如果没有联网,只能直接使用date -s 日期 时间设置了
  • 时间显示正确后,查看下硬件时间,顺便把硬件时间也改对,防止重启失效
1
2
3
4
5
6
7
8
hwclock --show
# hc代表硬件时间,sys代表系统时间,即用系统时钟同步硬件时钟
hwclock --systohc
## 或
clock --systohc
hwclock -w
date

常用命令

一、使用date命令查看系统时间

ate是Linux系统中用来显示或设置系统时间和日期的命令,常用于脚本编写、系统管理等操作中。

1
date

执行以上命令,系统将输出当前的系统时间,格式为“星期 月 日 时:分:秒 时区 年份”,例如:

1
Fri Oct 15 14:56:34 CST 2021

要查看特定时刻的系统时间,可以使用date命令加上时间参数。例如,要查看2021年1月1日零点的系统时间,可以使用以下命令:

1
date` `-d ``"2021-01-01 00:00:00"

如果要在脚本中获取系统时间并进行操作,可以使用date命令结合格式化参数将系统时间格式化为指定格式。例如,要获取当前系统时间的小时数,可以使用以下命令:

1
date` `+%H

二、通过/var/log/syslog文件查看系统时间

/var/log/syslog是Linux系统中保存系统日志信息的文件,其中包含着各种系统事件的详细信息。

要查看系统启动时间,可以在/var/log/syslog文件中查找“systemd[1]: Started”字符串,该字符串表示系统启动的时间。

1
grep` `"systemd[1]: Started"` `/var/log/syslog

执行以上命令,系统将输出包含系统启动时间的日志信息。

三、通过/proc/uptime文件查看系统运行时间

/proc/uptime文件记录了系统从启动到当前的运行时间。

要查看系统的运行时间,可以使用以下命令:

1
cat` `/proc/uptime

系统将输出两个数字,第一个数字表示系统从启动到当前的运行时间,以秒为单位;第二个数字表示系统在空闲状态下运行的时间,以秒为单位。

四、通过hwclock命令查看硬件时间

1
2
3
4
5
hwclock是Linux系统中用来读取和设置硬件时钟的命令。

要查看硬件时间,可以使用以下命令:
sudo hwclock --show
执行以上命令,系统将输出当前的硬件时间。

五、通过timedatectl命令设置系统时区

1
2
3
4
5
6
7
8
9
timedatectl是Linux系统中用来查看和设置系统时间、时区等信息的命令。

要查看当前系统的时区,可以使用以下命令:

timedatectl
要设置系统的时区,可以使用以下命令:

sudo timedatectl set-timezone Asia/Shanghai
执行以上命令,将系统的时区设置为上海。

六、通过NTP协议同步网络时间

1
2
3
4
5
6
7
8
9
NTP(Network Time Protocol)是一种用于同步网络时间的协议。

要通过NTP协议同步网络时间,可以使用以下命令:

sudo apt-get install ntp
sudo service ntp stop
sudo ntpdate cn.pool.ntp.org
sudo service ntp start
执行以上命令,系统将通过中国NTP服务器cn.pool.ntp.org同步网络时间。

七、通过ntpstat命令检查NTP同步状态

1
2
3
4
5
6
7
8
9
10
11
ntpstat是Linux系统中用来检查NTP同步状态的命令。

要检查NTP同步状态,可以使用以下命令:

ntpstat
系统将输出当前的NTP同步状态,例如:

synchronised to NTP server (210.72.145.44) at stratum 2
time correct to within 34 ms
polling server every 64 s

八、使用cal命令查看日历

1
2
3
4
5
6
cal是Linux系统中用来显示日历的命令。

要查看当前月份的日历,可以使用以下命令:

cal
系统将输出当前月份的日历。

九、使用clock命令显示时钟

1
2
3
4
5
6
clock是Linux系统中用来显示时钟的命令。

要在终端中显示时钟,可以使用以下命令:

watch -n1 -t "date +%T"
执行以上命令,系统将每秒钟刷新一次终端中的系统时间。

十、总结

本文介绍了多种Linux系统查看系统时间的方法,从date命令、系统日志文件、/proc/uptime文件、hwclock命令、timedatectl命令、NTP协议、ntpstat命令、cal命令、clock命令等多个方面展开阐述。这些方法既能帮助我们了解系统时间和日期,也能为脚本编写、系统管理等操作提供便利。


相关链接(侵删)

  1. CentOS7等linux系统时区时间不对显示误差8小时
  2. Linux查看系统时间的详细方法总结

=================我是分割线=================

欢迎到公众号来唠嗑: