当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Linux 管理员手册(9)--Keeping Time

Unix/Linux
Linux系统如何让双网卡合“一”而用
Linux操作系统静态路由设置技巧介绍
Linux环境下如何去远程登录Windows
实战Linux拨号上网 KPPP常见疑问解答
介绍几个与Linux网络设置有关的文件
Linux下三种网络管理工具功能及使用
Squid实现反向代理并且具备内网代理
传统网络配置命令与IP高级路由命令
审计并跟踪Linux系统的异常活动详解
如何使用Linux系统脚本简化无线网络
linux下adsl拔号与共享上网
Linux代理服务器和防火墙配置详细解析
用VNC客户端图形界面管理远程Linux系统
透视你的网络 利用vnStat监测宽带流量
Linux下使用Iptraf进行网络流量的分析
Linux服务器启动过程详解
基于Linux操作系统实现的传真系统
在Linux下建立VPN服务器来做加密代理
有备无患 Linux服务器备份和恢复技巧
如何测试和调试Apache服务器

Unix/Linux 中的 Linux 管理员手册(9)--Keeping Time


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 102 ::
收藏到网摘: n/a

  本章说明Linux系统如何keeps time,及需要做什么来避免发生问题。通常,你无须对时间做什么,但理解它会更好。

  时区

  时间测量基于最规则的自然现象,如地球转动导致的昼夜更替。昼夜总时间是恒定的,但昼夜分别的长度是变化的。一个简单的常数是正午。

  正午是白天太阳在最高点的时间。由于地球是圆的, 不同地方正午发生在不同的时间。这引出了本地时local time的概念。

  硬件时钟和软件时钟

  个人计算机有一个电池驱动的硬件时钟。电池保证始终在计算机没电的时候依然能工作。硬件始终能从BIOS设置屏或操作系  统的别的地方进行设置。

  Linux核心独立于硬件始终跟踪时间。启动时,Linux根据硬件时钟设置自己的时钟。此后,2个始终相互独立运行。因为查看硬件始终慢而复杂,因此Linux管理自己的时钟。

  核心始终一直显示通用时间。这样,核心无须知道时区,高可靠的简单结果使更新时区信息更简单。每个进程自己处理时区转换(使用时区包部分里的标准工具)。

  硬件始终可以是本地时间或通用时间。通常用通用时间更好,因为这样你无须在夏时制开始或结束时改变硬件时钟 (UTC does not have DST)。不幸的是,有些PC操作系统,包括MSDOS、Windows、OS/2都假设硬件时钟是本地时间。 Linux可处理2种方式,但如果硬件时钟显示本地时间,那么必须在夏时制开始或结束时(否则就不能显示本地时间)。

  显示和设置时钟

  在Debian系统中,系统时区由符号连接/etc/localtime 决定。连接指向描述本地时区的时区数据文件。时区数据文件存在/usr/lib/zoneinfo 中。其他Linux distributions可能不同。

  用户可以用设置TZ环境变量来改变他的私人时区。如果不设置,就假定是系统时区。 TZ变量的语法在tzset (3)man页中说明。

  date 命令显示当前日期和时间。 例如:

  $ date
  Sun Jul 14 21:53:41 EET DST 1996
  $
  That time is Sunday, 14th of July, 1996, at about ten before ten at the evening, in the time zone called ``EET DST'' (which might be East       European Daylight Savings Time). date 也可用于显示通用时间:
  $ date -u
  Sun Jul 14 18:53:42 UTC 1996
  $
  date 也可用于设置核心的软件始终:
  # date 07142157
  Sun Jul 14 21:57:00 EET DST 1996
  # date
  Sun Jul 14 21:57:02 EET DST 1996
  #

  更详细的见date man页--syntax is a bit arcane. 只有root能设置时间。虽然每个用户可以有自己的时区,但时钟对每个人都是一样的。

  date 只显示或设置软件时钟。 clock 命令同步硬件和软件时钟。用于系统启动时读取硬件时钟和设置软件时钟。如果两个时钟都需要设置,则先用date 设置软件时钟,然后用clock -w 设置硬件时钟。

  clock 的-u告诉它硬件时钟是通用时间。 必须正确使用-u选项。否则计算机将困惑到底是什么时间。

  时钟必须小心改变。Unix系统的许多部分要求时钟工作正常。例如, cron 守侯程序周期地运行命令。如果改变时钟,它可能迷惑它是否该运行命令。 On one early Unix system, someone set the clock twenty years into the future, and cron wanted to run all the periodic commands for twenty years all at once. 现在版本的cron 可以正确处理,但仍然要小心。大的前后跳跃比小的更危险。

  当时钟错误时

  Linux软件时钟不会始终精确。 PC硬件产生的时间中断周期地运行软件时钟。如果系统运行了太多进程,服务于时间中断需要花费太多的时间,软件时钟启动靠后。硬件时钟独立运行并通常更精确。如果你的系统经常启动(比如不是服务器的多数系统),那么通常时间很精确。

  如果需要调整硬件时钟,通常最简单的是重启动,进入BIOS设定屏幕,并在那里完成。这避免了改变系统时间可能导致的所有问题。如果不能通过BIOS,用date 和clock 设定新时间(以此顺序),但如果系统有部分工作不正常,必须准备重启动。

  连网的计算机(即使是通过modem)能通过与其他计算机时间比较来自动检查自己的时钟。如果知道保持很精确时间的其他计算机,那么2台计算机都将保持精确的时间。这可以使用rdate 和netdate 命令来完成。 2个命令都检查远程的计算机(netdate 可处理多台远程计算机),来同步本地计算机的时间。有规律地运行这样一个程序,你的计算机就可以保持与远程计算机一样精确的时间。

  测量孔(Measuring Holes)

  本附录包括用于测量文件系统中潜在的孔的程序的有趣的部分。 The source distribution of the book contains the full source code(sag/measure-holes/measure-holes.c).

  int process(FILE *f, char *filename) {
  static char *buf = NULL;
  static long prev_block_size = -1;
  long zeroes;
  char *p;<