内核技术中文网»首页 论坛 圈点 查看内容

0 评论

0 收藏

分享

Linux内核时间管理(时间管理大师!)

1、Linux时间介绍:

Linux 时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称 RTC)时钟。系统时钟

是指当前 Linux Kernel 中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在

BIOS 中进行设置。当 Linux 启动时,硬件时钟会去读取系统时钟的 设置,然后系统时钟就会独立

于硬件运作。

Linux 中的所有命令(包括函数)都是采用的系统时钟设置。在 Linux 中,用于时钟查看和

设置的命令主要有 date、hwclock 和 clock。其中,clock 和 hwclock 用法相近,只用一个就行,只不

过 clock 命令除了支持 x86 硬 件体系外,还支持 Alpha 硬件体系。

【文章福利】 小编在群文件上传了一些个人觉得比较好得学习书籍、视频资料,有需要的可以进群【977878001】 领取!!!额外赠送一份价值699的内核资料包(含视频教程、电子书、实战项目及代码)

内核资料直通车: Linux内核源码技术学习路线+视频教程代码资料

学习直通车(腾讯课堂免费报名): Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

2、Linux时间设置命令

2.1、date:

语法格式:date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help]

[--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

说明:可用来设置系统日期与时间。只有管理员才有设置日期与时间的权限,一般用户只能用

date 命令显示时间。若不加任何参数,data 会显示目前的日期与时间。

例 1:显示当前系统时间

[root@Test2 ~]# date

2010 年 06 月 17 日 星期四 00:00:04 CST

例 2:设置日期和时间为 2010 年 6 月 18 号 12:00

[root@Test2 ~]# date -s "20100618 12:00:00"

2010 年 06 月 18 日 星期五 12:00:00 CST

例 3:设置日期为 2010 年年 6 月 18 号

[root@Test2 ~]# date -s 20100618

2010 年 06 月 18 日 星期五 00:00:00 CST

例 4:设置时间为 12:00:00 [root@Test2 ~]# date 12:00:00

date: invalid date “12:00:00”

例 5:显示时区

[root@Test2 ~]# date -R

Thu, 17 Jun 2010 00:01:36 +0800

或者:

[root@Test2 ~]# cat /etc/sysconfig/clock

The ZONE parameter is only evaluated by system-config-date.

The timezone of the system is defined by the contents of /etc/localtime.

ZONE="Asia/Shanghai"

UTC=true

ARC=false

2.2、hwclock/clock

语法格式:hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test]

[--utc][--version][--set --date=<日期与时间>]

参数:

--adjust hwclock 每次更改硬件时钟时,都会记录在/etc/adjtime 文件中。使用--adjust 参数,可使 hwclock

根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。

--debug 显示 hwclock 执行时详细的信息。

--directisa hwclock 预设从/dev/rtc 设备来存取硬件时钟。若无法存取时,可用此参数直接以 I/O 指令

来存取硬件时钟。

--hctosys 将系统时钟调整为与目前的硬件时钟一致。

--set --date=<日期与时间> 设定硬件时钟。

--show 显示硬件时钟的时间与日期。

--systohc 将硬件时钟调整为与目前的系统时钟一致。

--test 仅测试程序,而不会实际更改硬件时钟。

--utc 若要使用格林威治时间,请加入此参数,hwclock 会执行转换的工作。

--version 显示版本信息。

例 1:查看硬件时间

hwclock --show

或者

clock --show

例 2:设置硬件时间

hwclock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)

或者

clock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)

例 3:硬件时间和系统时间的同步

按照前面的说法,重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需

要用 hwclock 或 clock 命令实现同步。

硬件时钟与系统时钟同步:

hwclock --hctosys(hc 代表硬件时间,sys 代表系统时间)

或者

clock –hctosys

例 4:系统时钟和硬件时钟同步 :# hwclock --systohc

或者

clock –systohc

例 5:强制将系统时间写入 CMOS,使之永久生效,避免系统重启后恢复成原时间

clock –w

或者

hwclock -w

2.3、时区的设置

tzselect

Please identify a location so that time zone rules can be set correctly.

Please select a continent or ocean.

  1. Africa
  2. Americas
  3. Antarctica
  4. Arctic Ocean
  5. Asia
  6. Atlantic Ocean
  7. Australia
  8. Europe
  9. Indian Ocean
  10. Pacific Ocean
  11. none - I want to specify the time zone using the Posix TZ format.

? 输入 5,亚洲

Please select a country.

  1. Afghanistan 18) Israel 35) Palestine
  2. Armenia 19) Japan 36) Philippines
  3. Azerbaijan 20) Jordan 37) Qatar
  4. Bahrain 21) Kazakhstan 38) Russia
  5. Bangladesh 22) Korea (North) 39) Saudi Arabia
  6. Bhutan 23) Korea (South) 40) Singapore
  7. Brunei 24) Kuwait 41) Sri Lanka
  8. Cambodia 25) Kyrgyzstan 42) Syria
  9. China 26) Laos 43) Taiwan
  10. Cyprus 27) Lebanon 44) Tajikistan
  11. East Timor 28) Macau 45) Thailand
  12. Georgia 29) Malaysia 46) Turkmenistan
  13. Hong Kong 30) Mongolia 47) United Arab Emirates
  14. India 31) Myanmar (Burma) 48) Uzbekistan
  15. Indonesia 32) Nepal 49) Vietnam
  16. Iran 33) Oman 50) Yemen
  17. Iraq 34) Pakistan

? 输入 9,中国

Please select one of the following time zone regions.

  1. east China - Beijing, Guangdong, Shanghai, etc.2) Heilongjiang
  2. central China - Gansu, Guizhou, Sichuan, Yunnan, etc.
  3. Tibet & most of Xinjiang Uyghur
  4. southwest Xinjiang Uyghur

? 输入 1,北京时间

The following information has been given:

China

east China - Beijing, Guangdong, Shanghai, etc.

Therefore TZ='Asia/Shanghai' will be used.

Local time is now: Fri Jul 7 10:32:18 CST 2006.

Universal Time is now: Fri Jul 7 02:32:18 UTC 2006.

Is the above information OK?

  1. Yes
  2. No

? 输入 1,确认

如果不用 tzselect 命令,可以修改文件变更时区。

vi /etc/sysconfig/clock

Z/Shanghai(查/usr/share/zoneinfo 下面的文件)

UTC=false

ARC=false

rm /etc/localtime

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

重新启动即可。

2.4、图形界面设置时区命令timeconfig

2.5、时间同步

例 1:同步时间

ntpdate 210.72.145.44

(210.72.145.44 是中国国家授时中心的官方服务器)

例 2:定时同步时间

crontab –e 添加脚本例子如下:

/20 * /usr/sbin/ntpdate 210.72.145.44 //每 20 分钟执行一次

30 5 * /usr/sbin/ntpdate 210.72.145.44 //每天早晨 5 点半执行

※ 前面五个*号代表五个数字,数字的取值范围和含义如下:分钟(0-59) 小時(0-23) 日期(1-31)

月份(1-12) 星期(0-6)//0 代表星期天设定完毕后,可使用# crontab –l 查看上面的设定。

原文作者:极致Linux内核

原文地址:https://zhuanlan.zhihu.com/p/576802495(版权归原文作者所有,侵权联系删除

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
主题 1545
回复 0
粉丝 2
扫码获取每晚技术直播链接
快速回复 返回顶部 返回列表