鸟哥的 Linux ADSL 私房菜


Linux 程序与资源管理
最近更新日期:2003/02/10
特别说明 man 用法
Linux 多人多任务程序环境
背景工作管理&, [Ctrl]+z, jobs, fg 与 bg, kill,
程序与资源管理ps, top, free, sar, kill, uname,
程序的优先级nice, renice,
讯息管理dmesg, uptime, who, w, whoami, id, last, date, cal, hostname,
关于网络校时 ntpdate,
本章习题练习

特别说明在线求助
这部份真的太重要了!不希望大家老是到讨论区上面发问一些『可能会被碎碎念』的问题,所以这里再次的重复的强调一次!

Linux 多人多任务环境指令
多人多任务
背景执行
多人多任务的问题 好了!废话说完了!开始来谈一谈几个常用的指令吧!

背景工作管理
有时后我们并不是一定要在屏幕前进行工作的,尤其是某些朋友特别不喜欢同时开启多个窗口,会容易搞混掉!这个时候就需要使用到背景工作管理的一些指令啰!这些指令是需要同时使用的!如 &, [Ctrl]+z, bg, fg, jobs, 与 kill 等等!此外,最主要利用到『背景工作』的使用者通常是怎么回是呢?『就是当您的主机已经被限制使用者仅能同时登入一次』的时候,也就是说,你无法用两个窗口登入到同一部主机,可以做的到吗?可以呀!目前很多的主机为了节省系统资源,就是这样搞的,然而这个时候万一您要进行很多工作的时候,要怎么办?!阿!伤脑筋呀!还好!在 Linux 里面支持了很多这方面的事情!我们可以这样做呢! ^_^
学习本章的时候会使用到部分的命令重导向,所以请前往 BASH SHELL 阅读一番!

  • &

  • 语法
    [root @test /root ]# command &
    参数说明:
    范例:
    [root @test /root]# find / -name testing & <==将该执行程序丢到背景执行
    [root @test /root]# fg                      <==将该程序叫回屏幕前执行
    说明
    如果想要让屏幕中的工作( command )在背景底下执行的时后,就使用 & 吧!不过,由于是背景执行的,所以该程序的输出并不会显现在屏幕上,所以需要特别留意输出的信息的管线重导的问题呦!另外,如何将该程序叫回来屏幕上面执行呢?就使用 fg 即可!当然啰,也可以使用 [Ctrl]+z 来将目前正在进行当中的工作丢到背景底下!那么摆在背景底下执行有何好处呢?!最大的好处就是不怕被『 [Ctrl]+c 』这个中断指令来中断了!!

  • [Ctrl]+z

  • 语法
    [root @test /root ]# command
    [root @test /root ]# ^Z          <==按下[Ctrl]加上 z 键
    参数说明:
    范例:
    [root @test /root]# vi .bashrc
    ^Z                             <==在 vi 当中的一般模式中键入[Ctrl]+z

    [1]+  Stopped                 vi .bashrc    <==这里会显示将数据丢到背景当中了!
    [root @test /root]# 

    说明
    如果你正在进行 vi ,而且是在编辑一个重要数据文件,但是偏偏你想起有的程序需要留意,因此需要退出 vi ,不过,你并不想这个时候储存退出 vi ,那么该如何是好呢?!就将资料丢到背景里面去吧!以上面的例子来说明,当你在执行编辑 /root/.bashrc 这个档案时,想要暂时离开,那么就直接在 vi 的『一般模式』当中输入[Ctrl]加上 z (小写)按键,,那么系统就会告诉你『工作项目 [1] 在背景当中,而其状态为[Stopped]亦即是停止的状态!』,并且会离开 vi 进入到 command line 当中,等待使用者输入指令!这个咚咚很好用的呦!那如果想要回到 vi 呢?!呵呵,就需要使用 jobs 配合 bg 或 fg 啰!

  • jobs

  • 语法
    [root @test /root ]# jobs
    参数说明:
    范例:
    [root @test /root]# vi .bashrc
    ^Z                              <==在 vi 当中的一般模式中键入[Ctrl]+z

    [1]+  Stopped                 vi .bashrc    <==这里会显示将数据丢到背景当中了!
    [root @test /root]# jobs
    [1]+  Stopped                 vi .bashrc    <==显示有一个工作在背景下,状态为 停止

    说明
    刚刚我们提到的 & 与 vi 在背景下执行,那么你怎么知道目前你所进行的背景底下的工作有哪些呢?!很简单,就是使用 jobs 就可以观察到啦!以上式为例,使用 jobs 就可以知道目前的背景中工作项目有 vi .bashrc 这一项!那个中括号([])里面的数字就是 jobs 的代号啰!

  • fg 与 bg

  • 语法
    [root @test /root ]# fg %number
    [root @test /root ]# bg %number
    参数说明:
    %      :后面接数字,表示 jobs 的工作代号
    number :就是工作代号
    范例:
    [root @test /root]# find / -name test
    ^Z
    [1]+  Stopped                 find / -name testing
    [root @test /root]# vi .bashrc
    ^Z
    [2]+  Stopped                 vi .bashrc    <==这里会显示将数据丢到背景当中了!
    [root @test /root]# jobs
    [1]-  Stopped                 find / -name testing
    [2]+  Stopped                 vi .bashrc
    [root @test /root]# bg %1
    [root @test /root]# jobs
    [1]-  Running                 find / -name testing &
    [2]+  Stopped                 vi .bashrc
    [root @test /root]# fg %2
    进入 vi 画面啰!
    说明
    OK!那么如何来了解 jobs 的背景(bg)与前景(fg)的管控呢?!这里请注意啰!这个 bg 是将『背景当中的程序由 stopped 变成 Running 』的一个手段,至于 fg 『则是将背景中的指令移到屏幕上来动作』,那你怎么知道你的背景当中有多少的工作(jobs)在进行呢?!就是执行 jobs 来看看背景程序的代号啰!然后以 bg %number 来将资料在背景中执行,而 fg %number 则是将代号为 number 的程序移动到屏幕前面动作!

  • kill

  • 语法
    [root @test /root ]# kill -sigal %number
    参数说明:
    %number :背景工作的代号,可使用 jobs 查询
    signal
        -1  :重新读取一次参数设定档(类似 reload )
        -2  :使用者中断该工作,类似 [Ctrl]+c 来中断一个工作
        -9  :立刻杀掉一个工作,不论该工作是否为僵尸程序
        -15 :停止一个工作(这是默认值)
    范例:
    [root @test /root]# jobs
    [1]+  Stopped                 vi .bashrc
    [root @test /root]# kill -9 %1
    说明
    如果想要直接杀掉背景工作中的项目,可以直接输入 kill 来杀掉!但是由于预设是将该程序停止而已,不见得一定可以将该工作清除干净,因此需要送出一个讯号,告诉系统你就是要砍掉该程序!这个时候就使用 kill -9 吧另外, -15 称为 terminal ,是以一般的正常程序砍掉一个 jobs ,而 –9 有『强制终止』的意思,所以可以控制殭尸程序。

    程序与资源管理:
    终于来到最严重的系统管理员的担心部分!一个被入侵的 Linux 系统最容易被修改的是什么?想必您一定有听说过所谓的『木马程序』吧!所谓的木马程序就是以一些小指令,由背景执行的方式常驻在系统当中,而当你的系统被 入侵者入侵之后,对于您 Linux 主机上面的信息,呵呵!就是由这些木马程序传送到入侵者手中的!所以啰!良好的管理程序的习惯,也是系统管理员必须要做的功课呢!好了!我们必须要了解的 是『什么是程序』呀!?说穿了,这也没有什么好神秘的,『程序就是您在执行或者启动一个事件的时候,系统会发给他的一个执行序!』换句话说,当您启动了一 个指令或者是 shell 的时候,系统就会给这个事件或者是 shell 一个代码,而如果有任何的其它服务要使用到你目前这程序的资源时,就会自动的跑来了解一下您的 PID ( process ID, 就是程序序啰!),底下我们使用 ps 与 top 这两个最常用来观察系统程序工作状态的指令来了解一下什么是程序啦!
    另外,我们还得需要来了解一下,什么是『父程序, PPID』与『子程序, child precess』呢?!呵呵!说穿了也没有什么了不起!就是『子程序是由父程序执行而得的一个程序,当子程序死掉时,父程序通常不会被影响,但是当父程序死掉时,则所有子程序将一并结束!』常常很多朋友都在反应:『唉呦!我的 sendmail 怎么关都关不掉,真是见鬼了!』呵呵!这个时候您就得告诉他啰:『唉呦!你关掉的不是父程序呀!只是一些子程序,由于父程序还存活着,所以子程序就会不动的涌出啰!』

  • ps

  • 语法
    [root @test /root ]# ps -aux
    参数说明:
    a   :选择所有的程序列出
    u   :所有使用者的程序均列出
    x   :所有 tty 的程序列出
    范例:
    [root @test /root]# ps -aux
    USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.1  1384  468 ?        S    Mar31   0:05 init [3]
    root         2  0.0  0.0     0    0 ?        SW   Mar31   0:00 [keventd]
    root         3  0.0  0.0     0    0 ?        SWN  Mar31   0:00 [ksoftirqd_CPU0]
    root         4  0.0  0.0     0    0 ?        SW   Mar31   0:11 [kswapd]
    root         5  0.0  0.0     0    0 ?        SW   Mar31   0:00 [bdflush]
    root         6  0.0  0.0     0    0 ?        SW   Mar31   0:00 [kupdated]
    root       130  0.0  0.0     0    0 ?        SW   Mar31   0:00 [kjournald]
    root       131  0.0  0.0     0    0 ?        SW   Mar31   0:01 [kjournald]
    root       132  0.0  0.0     0    0 ?        SW   Mar31   0:03 [kjournald]
    root       133  0.0  0.0     0    0 ?        SW   Mar31   0:12 [kjournald]
    root       482  0.0  0.2  1444  528 ?        S    Mar31   0:03 syslogd -m 0
    ........
    说明
    这是用来查询目前主机环境中,在背景执行的相关程序!我通常使用『 ps -aux 』这个参数来列出所有的信息以提供自己检查程序的问题!在上面的程序列出当中,说明如下: 这是一个很有用的指令,尤其是在侦测系统的状态时!不过,这个程序也是入侵者最喜欢修改的执行程序了!因为他可以写一个 script 来骗 root 呀!让某些木马程序没有办法显示出来~~重要的很!!善加利用吧!此外,那个 PID 是挺重要的信息呦!因为在后面的 kill 就是藉由了解 PID 来进行程序的删除的动作的!

  • top

  • 语法
    [root @test /root ]# top
    参数说明:
    在执行 top 的程序中,可以输入下面的字符以进行排序
    A  :以 age 亦即是执行的先后程序进行排序
    T  :由启动的时间排序
    M  :以所占的 memory 的大小排序
    P  :以所耗用的 CPU 资源排序
    范例:
    [root @test /root]# top
     11:55pm  up 8 days,  7:40,  1 user,  load average: 0.22, 0.14, 0.10
    71 processes: 69 sleeping, 2 running, 0 zombie, 0 stopped
    CPU states: 24.6% user,  3.7% system,  0.0% nice, 71.5% idle
    Mem:   255892K av,  222300K used,   33592K free,       0K shrd,   48084K buff
    Swap:  289128K av,    8184K used,  280944K free                  110472K cached

      PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
     9898 root       9   0  5976 5976  1364 S     5.5  2.3   0:00 mrtg
     4744 apache    14   0  5312 5052  3764 S     2.1  1.9   0:16 httpd
     9189 apache    14   0  4520 4256  3752 S     1.9  1.6   0:01 httpd
     9187 apache    10   0  4544 4276  3800 S     1.7  1.6   0:01 httpd
     9212 mysql      9   0  7280 4772  2716 S     0.7  1.8   0:00 mysqld
     9888 root      12   0  1064 1064   832 R     0.7  0.4   0:00 top
     4842 mysql     10   0  7280 4772  2716 S     0.5  1.8   0:06 mysqld
     9218 mysql     10   0  7280 4772  2716 S     0.5  1.8   0:00 mysqld

    说明
    使用 ps 是一个不错的管理工具,但是 ps 毕竟不是动态的,若使用 top 的话,呵呵!可以用动态(每五秒钟更新一次)的方式来侦测程序的进行!而且在程序进行中,还可以使用 P 来以 CPU 耗用资源排序、使用 M 来以 memory 占用大小排序等等,非常好用的管理工作!有空的话多以 man top 来玩一玩吧!

  • free

  • 语法
    [root @test /root ]# free
    参数说明:
    -k  :以 KBytes 来显示内存
    -m  :以 MBytes 来显示内存
    范例:
    [root @test /root]# free
                 total       used       free     shared    buffers     cached
    Mem:        255892     222076      33816          0      49072     112272
    -/+ buffers/cache:      60732     195160
    Swap:       289128       7572     281556
    说明
    另一个观看系统资源的就是使用 free 来检查目前内存的使用情况啰!在上面显示的是,我有 256 MB 的时体内存,也有大约 270 MB 的 swap (就是虚拟内存啦!)大小。

  • sar

  • 语法
    [root @test /root ]# sar [-u] [-r] 秒数 次数
    参数说明:
    -u  :看 CPU 使用的情况
    -r  :看 memory 使用的情况
    秒数:几秒钟观测一次?
    次数:共观测几次
    范例:
    [root @test /root]# sar -u 1 3
    12:10:28 AM       CPU     %user     %nice   %system     %idle
    12:10:29 AM       all      0.00      0.00      0.00    100.00
    12:10:30 AM       all      0.00      0.00      0.00    100.00
    12:10:31 AM       all     12.00      0.00      1.00     87.00
    Average:          all      4.00      0.00      0.33     95.67
    [root @test /root]# sar -r 1 3
    12:11:11 AM kbmemfree kbmemused  %memused kbmemshrd kbbuffers  kbcached kbswpfree kbswpused  %swpused
    12:11:12 AM     24416    231476     90.46         0     51068    112536    281556      7572      2.62
    12:11:13 AM     24420    231472     90.46         0     51068    112536    281556      7572      2.62
    12:11:14 AM     24392    231500     90.47         0     51068    112540    281556      7572      2.62
    Average:        24409    231483     90.46         0     51068    112537    281556      7572      2.62
    说明
    鸟哥真的是很喜欢使用 sar 来看系统的资源呢!真的是太方便了!比较常用的是 CPU 与 RAM 的观察,当然啰,还可以观察硬盘的 I/O 变化!!在上面的例子中,观察 CPU 的现象中,可以发现 CPU idle 的情况很长!不错!另外,在 RAM 的观测中,比较常使用的是 %memused (使用的百分比)及 %swpused (虚拟内存使用的百分比),很方便吧!一览无遗呦!事实上, VBird 也已经以 sar 来作为 MRTG 绘制图表的一个工具,很是方便的!不过,比较麻烦的是, Mandrake 预设并没有安装这个套件,如果您有需要的话,可以到相关网站上面下载 sysstat 这个套件呢!

  • kill

  • 语法
    [root @test /root ]# kill -signal PID
    参数说明:
    那个 -signal 跟上面的 kill 一样:
    -9  :杀掉该程序
    -15 :停止该程序!
    范例:
    [root @test /root]# kill -9 2380
    说明
    要杀掉一个程序的时后,自然需要知道该程序的 PID 才行!另外,需要注意的是,由于很多的程序都有附属关系,例如 sendmail 可能会同时开启相当多的程序在工作(如果邮件量很大的时后!)所以,如果砍掉的是『子程序』是无法将整个程序杀掉的!而要知道该程序的代号(PID)自然就得善用 ps, top 等工具啰! 此外,您常常会发现在一些 scripts 里面,会写着 kill –1 PID 的字样,那个 –l 是让该 PID 重新读取一次设定档的意思,最常发现在 syslogd 这个 daemon 呢!我们在后头再来提一提这个重要的咚咚!

  • uname

  • 语法
    [root @test /root ]# uname [-apnr]
    参数说明:
    -a :所有的系统信息均列出
    -p :列出 CPU 信息
    -n :列出 host name
    -r :列出 kernel 版本信息
    范例:
    [root @test /root]# uname -a
    Linux tsai.adsldns.org 2.4.18 #2 Mon Mar 25 21:51:51 CST 2002 i586 unknown
    说明
    想要知道你的系统信息吗?包括你的核心版本、主机名称、CPU 信息等等!使用 uname 就可以达到啦!另外,如果对于你的 CPU 有兴趣的话,那么不妨在 /proc 底下看看:
    [root @test /root ]# more /proc/cpuinfo
    processor       : 0
    vendor_id       : AuthenticAMD
    cpu family      : 5
    model           : 9
    model name      : AMD-K6(tm) 3D+ Processor
    stepping        : 1
    cpu MHz         : 400.917
    cache size      : 256 KB
    fdiv_bug        : no
    hlt_bug         : no
    f00f_bug        : no
    coma_bug        : no
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 1
    wp              : yes
    flags           : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
    bogomips        : 799.53
    看到了吗?!马上就知道你的 CPU 的 type 啰!

    程序的优先级: nice, renice,
    好了!接着下来我们来谈一谈『我哪一个程序可以最优先被处理!?』呵呵!这是个很重要的课题!怎么说呢?因为在你的系统当中,通常『同一个时间一定有多个程序会占用到 CPU 的资源,哪么那个程序比较重要,让 CPU 可以先跑该程序,就是一个重要的课题了!』您说是吧!好了,如果您还记得 ps 这个指令的话,那么来看一看加入 ps -l 这个功能所显示出来的讯息吧!
     
    [root @test /root ]# ps -l
      F S   UID   PID  PPID  C PRI  NI ADDR    SZ WCHAN  TTY          TIME CMD
    100 S     0  5624  5606  0  70   0    -   608 wait4  pts/0    00:00:00 bash
    000 R     0  6944  5624  0  76   0    -   769 -      pts/0    00:00:00 ps

    注意看到上面那些信息:

    好啦!这里有两个奇怪的信息,一个是 PRI 一个是 NI 这两个鬼东西!嗯! PRI 还容易理解,就是该程序被 CPU 执行的先后顺序啦!所以当 CPU 忙线中的时候,那么 PRI 值月小的就会被越快执行!那么 NI 是什么?呵呵!那个就是 nice 值啦!那么什么是 nice 值呢?就是『系统可被执行的修正数值!』如前面所说的,由于 PRI 是越小越快被执行,而由于我们加入 nice 值之后,将使得 PRI 变为: 呵呵!如此一来,则当 nice 值为负值的时候,那么该程序将会提前被执行!就是变的优先处理啰!这个概念需要特别的注意!另外,这里也需要注意的是:『只有具有 root 权限的身份者,可以将程序的 nice 调为负值』一般而言,我们可以这样说: 没错!就是这样!底下我们来谈一谈,如何在:
    1. 程序一开始就给予一个 nice 值;与
    2. 改变正执行中的程序之 nice 值

    讯息管理
    想要知道开机的时候 Linux 侦测主机的讯息吗?想知道目前有哪些人在你的机器上吗?想知道目前的时间吗?!想了解最近某个人登入的时间吗?!嗯!这都需要使用到一些讯息管理的程序呦!像是 last, who, dmesg 等等!

  • dmesg

  • 语法
    [root @test /root ]# dmesg
    参数说明:
    范例:
    [root @test /root]# dmesg | more
    说明
    在开机的时候你会发现有很多的讯息出现吧,例如 CPU 的形式、硬盘、光盘型号及硬盘分割表等等。但是讯息都是『刷』的一声就跑过去了!这些讯息有时候对于系统管理员是很重要的,因为他提供了系统的信息呀!要看这些讯息你可以用 dmesg 这个指令来观看!加上 |more 的原因是因为讯息太多了,所以可以加入这个管线指令来使画面暂停!


  • uptime

  • 语法
    [root @test /root ]# uptime
    参数说明:
    范例:
    [root @test /root]# uptime
     11:27pm  up 9 days,  7:12,  1 user,  load average: 0.07, 0.12, 0.14
    说明
    知不知道你的 Linux 主机已经开机多久了?还有,过去 1, 5, 15 分钟的系统平均 loading 是多少呢?呵呵!使用 uptime 就对了!在上面的例子中,执行 uptime 之后,显示目前时间是 11:27pm, 而系统已经开机了 9 天又 7:12 之多,目前有一个使用者在在线,过去 1, 5, 15 分钟系统平均负荷为 0.07, 0.12, 0.14!

  • who  &  w

  • 语法
    [root @test /root ]# who
    [root @test /root ]# w
    参数说明:
    范例:
    [root @test /root]# who
    root     pts/0    Aug  2 20:43

    [root @test /root]# w
      8:48pm  up 4 days,  5:08,  1 user,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
    root     pts/0    192.168.1.2       8:43pm  0.00s  0.38s   ?     -

    说明
    这是用来视察目前在系统上的使用者指令,你也可以使用 w 这个指令来下达动作。基本上,who 与 w 的功能是相同的,只是 who 仅列出使用者名称与登入时间,至于 w 则会列出使用者的 此外,不知道你有没有发现,在使用 w 的时候,开头会有一个讯息,『 8:48m up 4days ....』那个是 uptime 的输出结果!

  • whoami

  • 语法
    [root @test /root ]# whoami
    参数说明:
    范例:
    [root @test /root]# whoami
    test
    说明
    如果您是一位称职的系统管理员,那么您应该晓得尽量不要使用 root 登入系统这件事吧!那么如何管理系统呢?!可以使用 su 或者是 sudo 来管理啊!通常我是比较习惯使用 su 啦! OK!那么您已经是 root 的身份了,不过,可能由于执行程序的关系,常常会忘了到底自己的真实身份,这个时候 whoami 就可以解救你啦!如上面所示,虽然我的身份是 root ,不过,实际上我是 test 的啦!使用 su 变换身份而已!!

  • last

  • 语法
    [root @test /root ]# last
    参数说明:
    -number :number 为数字,如果您的登入讯息太多了,可以使用这个指令!
    范例:
    [test @test /root]# last -5
    test    pts/0        192.168.1.2      Tue Apr  9 20:34 - 20:35  (00:01)
    test    pts/0        192.168.1.2      Tue Apr  9 20:14 - 20:30  (00:15)
    test    ftpd21546    192.168.1.2      Tue Apr  9 02:55 - 03:06  (00:10)
    test    ftpd15813    192.168.1.2      Tue Apr  9 01:20 - 01:21  (00:00)
    test    pts/0        192.168.1.2      Mon Apr  8 20:14 - 00:27  (04:13)
    wtmp begins Tue Apr  2 01:12:26 2002
    说明
    要知道有没有被入侵,常常使用的就是 last 这个指令啰!包括 ftp, telnet, ssh 都会被纪录在这个讯息当中,不过目前是只有记录一个月的量!这个指令真的是不错用的!常常可以发现是否有不正常的人物登入信息呢!

  • date

  • 语法
    [root @test /root ]# date [-s] [-R]
    [root @test /root ]# date +[format]
    参数说明:
    -s  :用来设定 Linux 主机时间的参数,如果你的主机时间不对,用这个就对啦!
    -R  :如果发现你的语系是中文的,在纯文字模式底下用这个试试看
    +[format]
       %a :星期几
       %b :月份名称
       %d :日期
       %y :年份
          :还有很多的参数,请使用 man 自行查询
    范例:
    [root @test /root]# date +%a" "%b" "%y
    Wed Apr 02
    [root @test /root]# date -s 04/10/2002   <==改变日期
    [root @test /root]# date -s 02:02:00     <==改变时间
    [root @test /root]# clock -r         <==检查 BIOS 里面的时间
    [root @test /root]# clock -w         <==将目前 Linux 的时间写到 BIOS 里面去!
    说明
    date 简单的用法是只能查看时间的,不过,更广义的用法是可以搭配很多种样式来进行时间输出的纪录!此外,在 Linux 底下要更改时间,呵呵呵呵!也需要使用到 date 呦!不过,千万记得, date 改完时间后,还要使用 clock 将时间记录在 BIOS 里面才算是完成了时间修改呦!

  • hostname

  • 语法
    [root @test /root ]# hostname
    参数说明:
    范例:
    [test @test /root]# hostname
    test.adsldns.org
    说明
    很简单吧!就是用来查看你主机名称的指令就是了!

    关于网络校时: ntpdate
    您或许偶而会发现这样的问题:咦!我的 Linux 主机怎么经过一段时间的运作之后,时间会跑掉?而且有的时候,还会跑掉的蛮严重的!这是因为我们 Linux 系统的时间记录器与 BIOS 的时间记录器,可能与真实的、我们使用的时间有点差异,这种差异在短时间内差异性并不明显,但若延长到一年、两年以上,那么日积月累下来,呵呵!时间差异 性甚至可以达到小时?因此,这个时候以网络上合法的而且具有公信力的时间服务器( time server )来校正你的 linux 主机时间,就有其必要性啰!那么该如何校正呢?很简单啦!由于 time server 已经在网络上面可以找到啦,台湾地区可以使用底下这一部 time server :
    time.stdtime.gov.tw
    那么网络校时使用哪一个 port 呢?就是 123 这个 port ,而使用的软件就是 ntpdate 这一支程序!在 Mandrake 当中,很抱歉的,预设还是没有安装这个套件,所以,请赶快将 CD 拿出来,放入 CDROM ,并且 mount 上他,然后以十八章教的 RPM 程序安装他吧!之后就可以使用啰!

    基本上,网络校时需要两个步骤:

    1. 由 time.stdtime.gov.tw 取得最新的时间,并实时更新 Linux 系统时间;
    2. 更改 BIOS 的时间。
    所以整个方法只要执行两行即可搞定:
     
    [root @test root]# ntpdate time.stdtime.gov.tw
    [root @test root]# clock –w

    如果还想要让系统自动去更新时间的话,哈哈!对啦!那个 /etc/crontab 不要忘记了!将底下这一行写入 /etc/crontab 当中:

    10 5 * * 0,3  root /usr/sbin/ntpdate time.stdtime.gov.tw; clock -w
    这样一来,每星期三、日的五点,系统就会自动的去更新您 Linux 的时间啰!赞!

    本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
    2002/06/28:第一次完成
    2003/02/10:重新编排与加入 FAQ

    2002/04/30以来统计人数


    Designed by VBird during 2001-2004.  Aerosol Lab.