`
kankan1218
  • 浏览: 276728 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Linux时间管理

阅读更多


Linux时间管理
                                                                       alkshao@gmail.com
    首先介绍一些概念
    UTC :世界协调时间(Universal Time Coordinated,UTC), UTC就是0时区的时间,由于北京 在东八区,所以UTC时间比北京时晚八小时。
    CST : China Standard Time, UTC+8:00 中国沿海时间(北京时间)。
    GMT :(Greenwich Mean Time,格林威治标准时间),是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
    GMT + 8 = UTC + 8 = CST    由于在中国,所以在这里CST时间就代表本地时间。
    然后列出一些一会可能用到的关于时间的一些命令

  1. date:  显示或设置 系统 时间与日期
  2. hwclock:  显示与设定硬件时钟
  3. rdate:  显示其他主机的日期与时间
  4. ntpdate: 使用网络 时间协议(NTP)设置日期和时间
复制代码

以上命令具体用法,请参考manual。  
       接下来给出linux 系统关闭和启动过程中,硬件时间与系统时间之间的同步

  1. 方式A: 使用UTC(对linux就是 /etc/sysconfig/clock 中 UTC=true)
  2.        开机: BIOS--------->UTC(将BIOS中的时间看成是UTC)------(时区变化)----->CST
  3.     关机: CST -------(时区变化)----->UTC-------存储到------>BIOS

  4. 方式B: 不使用UTC(对linux就是 /etc/sysconfig/clock 中 UTC=false)
  5.        开机: BIOS----------------------->CST(将BIOS中的时间看成是CST)
  6.     关机: CST ---------存储到------>BIOS
复制代码

1.系统时间           直接执行date显示本地时间,想要显示UTC时间加上参数 -u

  1. [root@localhost ~]# date
  2. 2010年 10月 09日 星期六 22:33:41 CST
  3. [root@localhost ~]# date -u
  4. 2010年 10月 09日
复制代码

2.硬件时间,/sbin/hwclock  
             直接调用 /sbin/hwclock 显示的时间就是 BIOS 中的时间吗?未必!这要看 /etc/sysconfig/clock 中是否启用了UTC,如果启用了UTC(UTC=true),显示的其实是经过时区换算的时间而不是BIOS中真正的时间,如果加上 --localtime 选项,则得到的总是 BIOS 中实际的时间。

  1. [root@localhost ~]# hwclock
  2. 2010年10月10日 星期日 09时55分18秒  -0.689710 seconds
  3. [root@localhost ~]# hwclock --utc
  4. 2010年10月10日 星期日 09时55分24秒  -0.057533 seconds
  5. [root@localhost ~]# hwclock --localtime
  6. 2010年10月10日 星期日 01时55分32秒  -0.005559 seconds
复制代码

3.两个配置文件
             /etc /localtime:这个文件用来设置系统的时区,不论是 date 还是 hwclock都会用到这个文件,会根据这个文件的时区设置来进行UTC和本地之间之间的换算。它和/usr/share/zoneinfo目录 下 的“所设时区”文件构成符号链接,也就是“localtime -> /usr/share/zoneinfo/XXXX“。举例来说,如果你是中国人,你生活在首都北京,那么你首先应该到/usr/share /zoneinfo文件夹的Asia目录下去找shanghai这个文件(因为shanghai和beijing在一个时区),然后做一个符号链接到 localtime,即

  1. ln -sf /usr/share/zoneinfo/Aisa/Shanghai /etc/localtime
复制代码

/etc /sysconfig/clock:个文件只对 hwclock 有效,而且似乎是只在系统启动和关闭的时候才有用,比如修改了其中的 UTC=false 到 UTC=ture 的前后,执行 hwclock (--utc, 或 --localtime) 都没有变化,要重启系统后才生效。
             UTC=false的情况下

  1. [root@localhost ~]# cat /etc/sysconfig/clock
  2. # The ZONE parameter is only evaluated by system-config-date.
  3. # The timezone of the system is defined by the contents of /etc/localtime.
  4. ZONE="Asia/Shanghai"
  5. UTC=fale
  6. ARC=false
复制代码

用darte和hwclock连续输出结果如下:

  1. [root@localhost ~]# date
  2. 2010年 10月 10日 星期日 10:43:29 CST
  3. [root@localhost ~]# date -u
  4. 2010年 10月 10日 星期日 02:43:31 UTC
  5. [root@localhost ~]# hwclock
  6. 2010年10月10日 星期日 10时43分39秒  -0.482930 seconds
  7. [root@localhost ~]# hwclock --utc
  8. 2010年10月10日 星期日 18时43分44秒  -0.974832 seconds
  9. [root@localhost ~]# hwclock --localtime
  10. 2010年10月10日 星期日 10时43分57秒  -0.095316 seconds
复制代码

可见,如果不使用UTC,BIOS时间(红色部分)就是系统本地时间,而且注意这时执行 hwclock --utc 得到的结果没有任何意义,因为这里我们已经禁用了UTC
              UTC=ture情况下:

  1. [root@localhost ~]# cat /etc/sysconfig/clock
  2. # The ZONE parameter is only evaluated by system-config-date.
  3. # The timezone of the system is defined by the contents of /etc/localtime.
  4. ZONE="Asia/Shanghai"
  5. UTC=true
  6. ARC=false
复制代码

用date和hwclock命令连续输出:

  1. [root@localhost ~]# date
  2. 2010年 10月 10日 星期日 10:33:19 CST
  3. [root@localhost ~]# date -u
  4. 2010年 10月 10日 星期日 02:33:21 UTC
  5. [root@localhost ~]# hwclock
  6. 2010年10月10日 星期日 10时33分26秒  -0.338341 seconds
  7. [root@localhost ~]# hwclock --utc
  8. 2010年10月10日 星期日 10时33分32秒  -0.577395 seconds
  9. [root@localhost ~]# hwclock --localtime
  10. 2010年10月10日 星期日 02时33分38秒  -0.255537 seconds  //启用了UTC
复制代码

4.更改时间
           date更改系统时间:

  1. [root@localhost ~]# date -s "2010-09-10 12:00:00" //可接很多种时间格式,个人认为这种格式最容易明白
  2. 2010年 09月 10日 星期五 12:00:00 CST
复制代码

这时虽然更改了系统时间,但是硬件时间没有变化,hwclock -w命令将当前时间写入CMOS中:

  1. [root@localhost ~]# date -s "2010-09-10 12:00:00"
  2. 2010年 09月 10日 星期五 12:00:00 CST
  3. [root@localhost ~]# date
  4. 2010年 09月 10日 星期五 12:01:27 CST
  5. [root@localhost ~]# date -u
  6. 2010年 09月 10日 星期五 04:01:34 UTC
  7. [root@localhost ~]# hwclock
  8. 2010年10月10日 星期日 11时02分08秒  -0.872432 seconds
  9. [root@localhost ~]# hwclock --utc
  10. 2010年10月10日 星期日 19时02分34秒  -0.279553 seconds
  11. [root@localhost ~]# hwclock --localtime
  12. 2010年10月10日 星期日 11时02分47秒  -0.282827 seconds
  13. [root@localhost ~]# hwclock -w
  14. [root@localhost ~]# hwclock
  15. 2010年09月10日 星期五 12时02分49秒  -0.278192 seconds
  16. [root@localhost ~]# hwlock --localtime
  17. -bash: hwlock: command not found
  18. [root@localhost ~]# hwclock --localtime
  19. 2010年09月10日 星期五 12时03分22秒  -0.944008 seconds
复制代码

hwclock更改硬件时间

  1. [root@localhost ~]# hwclock --set --date="2010-08-10 12:00:00" //用法类似于date -s
  2. [root@localhost ~]# hwclock
  3. 2010年08月10日 星期二 12时00分06秒 -0.699864 seconds //硬件时间已修改
  4. [root@localhost ~]# date
  5. 2010年 09月 10日 星期五 12:13:18 CST  //date时间没有受硬件时间改变而改变,除非重新启动
  6. [root@localhost ~]# hwclock --hctosys //此命令的用法是将硬件时间赋予系统时间
  7. [root@localhost ~]# date
  8. 2010年 08月 10日 星期二 12:00:51 CST //时间已改变

  9. [root@localhost ~]# date -s "2010-07-10 12:00:00"
  10. 2010年 07月 10日 星期六 12:00:00 CST
  11. [root@localhost ~]# date
  12. 2010年 07月 10日 星期六 12:00:04 CST
  13. [root@localhost ~]# hwclock --systohc //将系统时间写入CMOS
  14. [root@localhost ~]# hwclock
  15. 2010年07月10日 星期六 12时00分27秒  -0.400429 seconds
复制代码

可 以通过 hwclock --hctosys来利用硬件时间来设置系统时间(注意不是简单的复制BIOS中的时间为系统时间,要看是否使用UTC,如果使用的话则要做时区换算), 通过hwclock --systohc 来根据系统时间设置硬件时间(也要看是否启用UTC来决定是否做时区换算)。总之,不论使用 --systohc还是 --hctosys,同步后直接运行不带参数的 hwclock 得到的时间与直接运行 date得到的时间应该一致,这个时间是否就是BIOS中的时间(hwclock--localtime)那就不一定了,如果启用了UTC就不是,没启用 UTC就是。而且好要注意:在系统中手动使用 hwclock hwclock --set --date='yyyy-mm-dd' 来设置BIOS时间只在系统运行时有效,因为当系统关闭时,还会按设定好的方式根据系统时间来重设BIOS时间的,于是手动的设置便被覆盖掉了。
           5.同步时间
              从网络同步时间可以使用rdate和ntpdate两个命令。
               ntpdate命令使用如下:

  1. [root@localhost ~]# date -s "2010-07-10 12:00:00"
  2. 2010年 07月 10日 星期六 12:00:00 CST
  3. [root@localhost ~]# date
  4. 2010年 07月 10日 星期六 12:00:03 CST
  5. [root@localhost ~]# ntpdate 210.72.145.44 //用ntpdate更新时间,后面ip地址是ntp授时服务器
  6. 10 Oct 12:03:43 ntpdate[7906]: step time server 210.72.145.44 offset 7948997.508213 sec
  7. [root@localhost ~]# date
  8. 2010年 10月 10日 星期日 12:03:46 CST
复制代码

rdate命令用法如下:

  1. [root@localhost ~]# date -s "2010-07-10 12:00:00"
  2. 2010年 07月 10日 星期六 12:00:00 CST
  3. [root@localhost ~]# date
  4. 2010年 07月 10日 星期六 12:00:08 CST
  5. [root@localhost ~]# rdate time-a.nist.gov  //不加参数使用返回服务器时间
  6. rdate: [time-a.nist.gov]        Sun Oct 10 12:11:58 2010
  7. [root@localhost ~]# rdate -s time-a.nist.gov  //加上参数s,同步本地时间
  8. rdate: couldn't connect to host time-a.nist.gov: Connection refused  //看来网络不是很好
  9. [root@localhost ~]# rdate -s time-a.nist.gov  //同步成功
  10. [root@localhost ~]# date
  11. 2010年 10月 10日 星期日 12:12:48 CST  //时间已经同步
复制代码

到这里Linux时间的一些问题就没有了,希望能给大家带来帮助。

分享到:
评论

相关推荐

    linux时间同步,ntpd、ntpdate 1

    【Linux时间同步与管理】 ...综上所述,Linux时间管理涉及系统时间、硬件时间的独立维护与同步,以及通过NTP协议实现跨机器的时间一致性。正确配置和管理这些时间元素对于保障系统正常运行和数据完整性至关重要。

    操作系统时间linux视频游戏

    操作系统时间在Linux环境中的运用是计算机科学中的一个重要...通过解决项目中的bug,学生可以深入理解Linux时间管理机制,掌握多线程编程,优化性能,并熟悉各种调试和分析工具,从而在未来的工作中更好地应对挑战。

    linux内存管理源代码导读

    Linux 中的内存管理还涉及到 NUMA(Non-Uniform Memory Access)技术,NUMA 技术将物理内存划分为若干个 node,存取时间不等,每个 node 被划分成若干个 zone。在 Linux 中,每个 zone 使用 struct zone 表示,包括 ...

    Linux系统管理工具包系列汇总 Linux系统管理员必看

    Linux系统管理员工具包: 时间和事件管理 Linux系统管理员工具包: 进程管理技巧 Linux系统管理员工具包: 移动Linux/UNIX目录 Linux系统管理员工具包: 备份关键的信息 Linux系统管理员工具包: 监视运行缓慢的系统 ...

    linux操作系统实验七-Linux存储管理操作实践.pdf

    Linux 存储管理操作实践 Linux 存储管理操作实践是一种实验性教学活动,旨在让学生掌握 Linux 存储管理相关操作的基本方法。通过本实验,学生可以熟悉 Linux 存储管理操作的各个方面,包括 free 命令、top 命令、...

    Linux内存管理笔记

    Linux内存管理笔记详细介绍了Linux操作系统内核中内存管理机制的关键知识点,下面将依次对这些知识点进行详细说明: 存储器的层次结构:计算机系统采用分层的存储子系统以在存储容量、访问速度、成本效益之间取得...

    linux日志管理,进行linux的日志管理

    Linux日志管理是系统维护和故障排查的重要组成部分,它记录了操作系统中发生的各种事件,包括用户登录、系统错误、网络活动等。日志管理的主要功能有审计和监测,它可以帮助系统管理员监控系统状态,及时发现和处理...

    Linux任务管理器

    在Linux操作系统中,任务管理器是一个至关重要的工具,它允许用户监控系统性能,查看和管理运行中的进程,以及控制系统的资源分配。本项目基于C语言编程,并使用GTK(GIMP Toolkit)来构建图形用户界面,提供了对CPU...

    LINUX 下C++ 获取系统时间和设置时间

    设置系统时间需要管理员权限,可以使用`settimeofday`函数(同样在`<sys/time.h>`中定义): ```cpp #include #include #include int main() { if (geteuid() != 0) { std::cerr ; return 1; } struct ...

    linux内存管理工具

    linux内存管理工具

    Linux操作系统内存管理.pdf

    Linux操作系统内存管理 Linux操作系统的内存管理是计算机科学中一个重要的领域。本文将详细阐述Linux操作系统的内存管理机制,包括物理内存和虚拟内存的管理机制、地址映射机制、内存碎片和内存不连续的问题解决等...

    linux ntp时间同步设置

    ### Linux NTP时间同步设置详解 #### 一、概述 在Linux系统中,时间的准确性对于许多服务至关重要,比如日志记录、定时任务等。为了确保时间的精确性,...希望这些方法能够帮助大家更好地管理Linux系统的时间设置。

    快速成Linux系统管理员教程

    - **时间管理(Keeping Time)**:理解和配置系统时间同步,如使用NTP。 ### 学习资源 - **红联Linux论坛**:提供了一个讨论Linux技术的平台,包含丰富的文章和教程。 - **电子书籍下载**:通过提供的链接,可以...

    Linux内核程序及功能实现

    "xtime_two.pdf"这个文件名暗示了它可能是一份关于Linux时间管理的文档。在Linux内核中,时间管理是非常关键的,涉及到进程调度、定时器和系统时钟等方面。xtime是Linux内核中的全局变量,用来表示系统启动以来的...

    基于Linux定时器管理器

    在Linux系统中,定时器(Timer)是一种非常重要的机制,它允许程序在特定的时间间隔后执行某些操作。本文将深入探讨“基于Linux定时器管理器”的相关知识点,包括定时器的类型、工作原理以及如何添加、删除定时器,...

    linux日期与时间

    Linux中的日期和时间管理是操作系统的基本功能之一,它涉及到系统的日志记录、程序调度以及网络同步等多个方面。本文将深入探讨Linux系统中的日期时间显示、设置、同步以及通过NTP协议进行时间校准的方法。 首先,...

    处理机管理之Linux进程管理

    在计算机操作系统中,处理机管理是核心组成部分之一,而在Linux系统中,处理机管理主要涉及到进程的管理。本文将详细探讨Linux进程管理的相关知识点。 首先,进程是操作系统中运行程序的实例,是系统资源分配的基本...

Global site tag (gtag.js) - Google Analytics