Linux 管理员手册(9)--Keeping Time

本章说明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;

  if (buf == NULL || prev_block_size != block_size) {
  free(buf);
  buf = xmalloc(block_size + 1);
  buf[block_size] = 1;
  prev_block_size = block_size;
  }
  zeroes = 0;
  while (fread(buf, block_size, 1, f) == 1) {
  for (p = buf; *p == '\0'; )
  ++p;
  if (p == buf+block_size)
  zeroes += block_size;
  }
  if (zeroes > 0)
  printf("%ld %s\n", zeroes, filename);
  if (ferror(f)) {
  errormsg(0, -1, "read failed for `%s'", filename);
  return -1;
  }
  return 0;
  }

(0)

相关推荐

  • 在Windows与Linux下禁止被ping的设置方法[推荐]

    LINUX下禁止ping命令的使用 以root进入Linux系统,然后编辑文件icmp_echo_ignore_allvi /proc/sys/net/ipv4/icmp_echo_ignore_all将其值改为1后为禁止PING将其值改为0后为解除禁止PING 直接修改会提示错误: WARNING: The file has been changed since reading it!!!Do you really want to write to it (y/n)?y"icmp_echo_i

  • Linux编程之PING实现

    PING(Packet InterNet Groper)中文名为因特网包探索器,是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把回复报文传回给发送者,这有点象潜水艇声纳系统中使用的发声装置.所以,我们想知道我这台主机能不能和另一台进行通信,我们首先需要确认的是我们两台主机间的网络是不是通的,也就是我说的话能不能传到你那里,这是双方进行通信的前提.在Linux下使用指令ping的方法和现象

  • Linux 管理员手册(9)--Keeping Time

    本章说明Linux系统如何keeps time,及需要做什么来避免发生问题.通常,你无须对时间做什么,但理解它会更好. 时区 时间测量基于最规则的自然现象,如地球转动导致的昼夜更替.昼夜总时间是恒定的,但昼夜分别的长度是变化的.一个简单的常数是正午. 正午是白天太阳在最高点的时间.由于地球是圆的, 不同地方正午发生在不同的时间.这引出了本地时local time的概念. 硬件时钟和软件时钟 个人计算机有一个电池驱动的硬件时钟.电池保证始终在计算机没电的时候依然能工作.硬件始终能从BIOS设置屏或

  • Linux管理员手册(3)--存贮介质

    Linux管理员手册(3)--磁盘和其他存贮介质的使用 安装和升级系统时,需要对硬盘做很多工作.必须在硬盘上做文件系统,使文件能存在其上,并为系统不同的部分保留空间. 本章说明所有这些初始化工作.通常,一旦你建立了系统,就不必再做这些工作(除了使用软盘).如果你要增加一个新硬盘或更好地调整你的硬盘的使用,那么可能回到这一章. 管理磁盘的基本任务有: 格式化磁盘.这为磁盘进入使用做一些工作,比如检查坏扇区.(现在多数硬盘无须格式化.) 给硬盘分区,如果想用于互相不干扰的几件事.分区的一个原因是要在

  • Linux 管理员手册(3)

    安装和升级系统时,需要对硬盘做很多工作.必须在硬盘上做文件系统,使文件能存在其上,并为系统不同的部分保留空间. 本章说明所有这些初始化工作.通常,一旦你建立了系统,就不必再做这些工作(除了使用软盘).如果你要增加一个新硬盘或更好地调整你的硬盘的使用,那么可能回到这一章. 管理磁盘的基本任务有: 格式化磁盘.这为磁盘进入使用做一些工作,比如检查坏扇区.(现在多数硬盘无须格式化.) 给硬盘分区,如果想用于互相不干扰的几件事.分区的一个原因是要在一个硬盘上存不同的操作系统.另一个原因是将用户文件和系统

  • Linux 管理员手册(2)

    本章说明标准Linux目录树的重要部分,基于FSSTND文件系统标准.概述根据不同的目的和给定的要求将目录树分为若干分离的文件系统的一般方法.也说明一些其他方法. 背景 本章松散地基于Linux文件系统标准FSSTND版本1.2(见参考书目[Qui95]),它意图建立一个如何组织Linux系统目录树的标准.这样一个标准具有易于写或port(移植?)Linux软件.管理Linux系统的优点,因为所有东西都将在他们的一般地方.此标准没有强制所有人遵从的权威,但它有最多的Linux distribut

  • Linux管理员手册(1)--系统概述

    本章概述Linux系统.首先描述操作系统提供的主要服务.然后说明实现这些服务的程序 with a considerable lack of detail.本章的目的是理解系统整体,以后再详细说明每个部分. 一个操作系统的不同部分 一个UNIX操作系统包括一个核心程序kernel和一些系统程序system programs.还有一些做某件事情的应用程序application programs.核心是操作系统的心脏 .它跟踪磁盘上的文件,启动程序并运行它们,给不同的进程分配内存和其他资源,从网络接收

  • Linux管理员手册(2)--目录树概述

    本章说明标准Linux目录树的重要部分,基于FSSTND文件系统标准.概述根据不同的目的和给定的要求将目录树分为若干分离的文件系统的一般方法.也说明一些其他方法. 背景 本章松散地基于Linux文件系统标准FSSTND版本1.2(见参考书目[Qui95]),它意图建立一个如何组织Linux系统目录树的标准.这样一个标准具有易于写或port(移植?)Linux软件.管理Linux系统的优点,因为所有东西都将在他们的一般地方.此标准没有强制所有人遵从的权威,但它有最多的Linux distribut

  • Linux 管理员手册(8)--备份

    硬件不肯定是可靠的 软件肯定是不可靠的 人不肯定是不可靠的 而自然肯定是可靠的 本张说明为什么.如何.何时要做备份,及如何回存备份的东西. 备份的重要 数据是有价值的.重新产生它需要你花费时间和努力,并且要花费金钱或至少伤心和眼泪,有时甚至不可能重新产生,例如一些实验结果.由于数据是一种投资,你必须保护它,并采取措施避免丢失. 丢失数据一般有4个原因:硬件失败.软件曲线.人为因素或自然灾害. 虽然现代硬件已经相当可靠,但仍可能自然损坏.存储数据最决定性的硬件是硬盘,它依赖微小的磁区在充满电噪声的

  • Linux管理员手册(7)--管理用户帐户

    本章解释如何产生新用户帐户,如何修改帐户的属性,如何删除帐户.不同的Linux系统有不同的工具实现. 什么是帐户? 当一台计算机为多人所用时,通常需要区分用户,例如,使个人文件保持个人化.即使计算机同时只为一人所用,这也很重要,如多数微机. 因此,每个用户给定一个单独的用户名,这个名字被用于登录. 用户除了名字还有更多.一个帐户是所有的文件.资源和属于这个用户的信息.这个属于暗示是银行,在一个商业系统中,每个帐户通常与一些钱有关,且这些钱依赖于用户使用系统的多少以不同的速度被花掉.例如,磁盘空间

  • Linux管理员手册(4)--内存管理

    本章说明Linux的内存管理特征,即虚拟内存和磁盘缓存.描述系统管理员应该考虑的东西.工作和目的. 什么是虚拟内存? Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大.核心把当前不用的内存块存到硬盘,腾出内存给其他目的.当原来的内容又要使用时,再读回内存.这对用户全透明:运行于Linux的程序只看到大量的可用内存而不甘心哪部分在磁盘上.当然,读写硬盘比真的内存慢(慢千倍),所以程序运行较慢.用做虚拟内存的这部分硬盘叫 对换空间. Linux可以使用文件系统中的普通

  • Linux 管理员手册(7)

    本章解释如何产生新用户帐户,如何修改帐户的属性,如何删除帐户.不同的Linux系统有不同的工具实现. 什么是帐户? 当一台计算机为多人所用时,通常需要区分用户,例如,使个人文件保持个人化.即使计算机同时只为一人所用,这也很重要,如多数微机. 因此,每个用户给定一个单独的用户名,这个名字被用于登录. 用户除了名字还有更多.一个帐户是所有的文件.资源和属于这个用户的信息.这个属于暗示是银行,在一个商业系统中,每个帐户通常与一些钱有关,且这些钱依赖于用户使用系统的多少以不同的速度被花掉.例如,磁盘空间

随机推荐