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