基本命令操作


開機和關機

開機和關機誰不會哦﹖哈哈﹐不一定哦~~~

您或許會發現安裝完Linux之後﹐原來的DOS(或Windws/WinNT)開機畫面不見了﹗您知道怎麼回去麼﹖不知道不緊要啦。當機器開著之後﹐在您看到 LILO Boot: 的提示時候﹐按 Tab 鍵﹐您就看到開機的各項選擇了。如果您按照上面的例子進行安裝的話﹐應該會看到 Linux 和 dos 這兩項。如果要進入 Linux﹐可以輸入 Linux 再 Enter﹐或直接按Enter(因為此例中Linux被選擇為預設系統了)﹔如果您要進入 DOS (或Windows/WinNT)﹐可以輸入 dos 再按 Enter。

不過有一個要注意的地方﹐就是﹕當增加 Linux partition 之後﹐ 原先 NT 看到的 partition number 或許會有所變更﹐這需要修改 c:/boot.ini 才可以糾正過來。修改的時候﹐基本上您無需理會各句子前面的號碼﹐將 partition( ) 中的號碼換換試試﹐直到可以開機為止。

選擇 Linux之後﹐您會看到一大堆開機過程的報告﹐有興趣可以逐行看看(假如您眼睛夠快的話)。如果開機過程卡在某些服務上面而等上好幾分鐘的話﹐可能您的網路設定不正確﹐最常見的問題是 /etc/hosts 或 DNS沒設定好。為避免這些情況﹐請確定機器在開機的時候﹐啟動程式能夠能連得上指定的伺服器地址。

最終﹐您會看到 Login: 的提示﹐第一次您必須用 ‘ root ’進行登錄﹐然後輸入您在安裝步驟61設定的密碼。之後﹐整個 Linux系統就是您的啦﹗

除非您不想機器不用的時候還開著﹐或是進行硬體更換﹐Linux甚少需要關機的(有些Linux跑好幾年還好好的呢﹗)。不過﹐您知道怎樣關機麼﹖

如果您在安裝過程中能夠正確設定好XWindows﹐並且選擇了開機進入X﹐或許您還能找到關機的門徑。不過﹐通常來說﹐除非是天才﹐在第一次使用Linux的時候(之前也沒Unix或Novell經驗)﹐還真不知道怎麼關機哦﹗(哈哈﹐指我自己啦~~~ ^_^ 見笑見笑﹗) 如果您輸入下面這個指令﹕
shutdown --help

您會看到好些選項﹐請看看各項的意思。如果您要將機器關掉的話﹐可以輸入﹕
shutdown -h now

如果用 r 代替 h 的話﹐會進行重新啟動﹐不過﹐您可以用 reboot 這個指令代替﹐或可以按 ctl+alt+del (當然要注意所有資料已回存好和程式都關閉妥當)。

好了﹐既然您已經知道如何開機和關機了﹐下面讓我們練練基本功﹕

檔案管理

如果您玩過DOS的話﹐相信這對您不是很難﹐但如果打第一天接觸電腦的時候就是Windows的話﹐不好意思﹐您可能需要認真操練操練才行。(這裡我要事先提醒一點的是﹕在Linux下面﹐字母的大小是有分別的﹐一定要留意﹗)

先讓我們看看自己在哪吧(否則很容易迷失方向的哦)﹐我們先輸入﹕
pwd

它的意思是﹕Print Working Directory﹐也就是您目前所處的檔案系統中的位置﹐您或許會發現您正在 /root 中。這通常是您登錄後首先進入的目錄﹐也就是使用者家目錄(home)啦﹐每一個使用者都有其自己的家目錄。

然後﹐讓我們輸入﹕
cd ..

這個目的是 Change Directory 到上一級目錄(用兩點“..”表示﹐而當前目錄則用一點“.”表示)。如果您這時候輸入pwd的話(可以按向上的方向鍵找回前面輸入的命令﹐這對長命令非常好用﹗)﹐您會看到當前目錄會變成了“/”﹐這是檔案系統的根目錄﹐所有檔案和目錄都由這裡延伸出去。如果您要在檔案系統中游走﹐使用 cd 後接路徑(或完全路徑)進行。如果只輸入 cd 呢﹖試試就知道了﹕哈哈﹐回家了﹗如果輸入cd 但不接任何路徑的話﹐您就會回到家目錄中。同時﹐家目錄的路徑也可以用“~/”來表示﹐例如您現在是用root登錄﹐在 /root 下面有個test.txt 檔案﹐其表示方法可以用完全路徑﹕ /root/test.txt ﹐也可以用﹕~/text.txt 。

好了﹐我們已經知道怎麼在檔案系統中穿梭和知道檔案的路徑了﹐下面我們可以嘗試建立目錄和檔案了。請輸入這個命令﹕
mkdir test1

結果會是在當前目錄下面make directory而產生了test1這個目錄。如果我們要刪除的話則使用rmdir﹐不過目錄內必須是空白的才可以﹐否則我們要先用 rm 命令將目錄內的檔案刪除掉﹐但有一個強制的方法是﹐使用 ‘rm -rf’來將目錄強制刪除掉。接著﹐讓我們進入test1 (cd test1)﹐再建立一個新目錄叫 test1-1。

完成之後請輸入﹕
ls / > test.ls

讓我們解讀這個命令﹕“ls”是 list 的意思(下面我會再講)﹔“/”應該知道吧﹖“>”呢﹐是一個重導向功能﹐用來將命令的輸出結果產生檔案﹐如果該檔案已經存在的話﹐那麼原來內容都會丟失﹔如果您想保留原有內容﹐而把輸出產生在檔案結尾部份﹐可以使用“>>”。那麼﹐上面的命令執行結果是﹕在當前目錄產生一個內容為根目錄檔案列表結果的 test.ls檔案。

(另外﹐重導向符號還有﹕“<”表示用後接的當案作為程式的輸入﹔“|”(和“\”同一個鍵﹐輸入時按shift﹐稱之為“管道”﹐蠻常用的﹐我們後面就會碰到)將第一個程式的執行結果當做後接程式的輸入﹔“﹔”符號會等第一個程式結束後才執行後接程式﹔“`”(在“1”鍵的左邊﹐要一對的使用)會將被其包括的程式執行結果當作前面程式的參數 ...... 等等﹐留待您自己慢慢發掘了。)

既然我們已經有一個檔案了﹐我們可以將之進行複製哦﹕
cp test.ls test.ls.copy

這行命令的作用是將test.ls 進行copy﹐產生一個test.ls.copy的副本。

我們除了copy之外﹐我們還為檔案產生連接(link)呢﹕
ln -s test.ls test.ls.ln

這個命令的執行結果是﹕為test.ls建立一個叫做test.ls.ln的 symbolic link

嗯﹖什麼link啊﹖

對於用慣了dos的朋友來說﹐這個的確不好理解。其實﹐如果您為Windows檔案建立過捷徑(shortcut)的話﹐您會知道無論您直接點擊原檔案﹐還是點擊捷徑﹐其結果都是一樣的。Linux下面的link呢﹖有點類似﹐但功能比捷徑強得多﹕如果您修改(指的是對檔案內容進行編輯)windows的捷徑的話﹐您會失去了和原來檔案的連接﹐而且﹐原來的檔案絲毫也沒被改變﹔但在Linux裡面﹐無論您修改原檔案﹐還是修改link﹐其內容都會同時更新的。別以為link很神奇﹐說穿了﹐只不過是一個檔案具有多個名字罷了。比如說﹐一個人可以叫阿甲﹐另外也有朋友喜歡稱呼其花名叫肥貓﹐但所指的其實是同一個人而已。
為什麼我們要用link呢﹖因為在 Linux 檔案系統裡面﹐所有目錄和檔案都有著嚴密的權限設定。如果您建立了一個檔案在一個限制嚴密的目錄裡面﹐別人要想修改它是不可能的﹐甚至連讀取也不能夠。如果有某些檔案必須要讓別人或系統讀取的話﹐您可以為之在別人有權修改的目錄裡面建立一個link﹐那麼就可以達成目的了。通常﹐系統要使用的一些檔案都會被裝在限制比較嚴格的目錄之下﹐如果我們不想開放原檔案所屬的目錄限制的話﹐就可以用link來讓人們讀取或修改。除此之外﹐為一些程式設定檔建立 link 再放在某些特定的目錄之下﹐在管理上來說也是非常方便的。

好了﹐我們知道在/root/test1這個目錄下面﹐有目錄﹐有檔案﹐還有link了。現在﹐讓我們輸入﹕
ls

這是 List 的意思﹐也就是將目錄下面的內容列出來。我們也可以用ls來確定檔案的存在﹕
ls test.ls*

您會看到所有以test.ls開頭的檔案(包括目錄)都會被列出來了。這裡使用的‘*’我們可以稱之為“百搭(wildcard)”﹐如果您靈活運用﹐可以列出許多您指定的檔案。但使用 ls 是看不到那些以“.”開頭的檔案的﹐在 Linux 系統中﹐這些檔案是隱藏檔﹐您要用 ‘ ls -a’才能將它們顯示出來。
如果您不知道檔案的位置﹐我們可以使用﹕
find / -name test

這樣﹐凡是在‘/’下面的目錄及子目錄下面所有包含 test 字眼的檔案的路徑都會被列出來﹐不過﹐使用find可能需要一點時間。
除了 find 之外﹐我們也可以用 ‘whereis’或‘which’指令來找出一個指定程式的相關檔案位置﹐但只可以用來找程式。不過﹐用‘locate’則比 find 更好用﹐只不過新增或刪除的檔案要等 updatedp 跑完才有用﹐然而﹐系統會定時幫您更新資料庫的啦(通常是早上四點﹐如果您不關機的話)。

使用ls命令之後﹐您會看到目錄內容會以行列的形式列出來﹐不過﹐除非您原先就知道它們是什麼﹐否則您也看不出究竟哪一個是目錄﹐哪一個是檔案(不過﹐現在的Linux會用不同的顏色來表示不同的檔案﹐這樣也直觀多了)。如果您需要更詳細的信息﹐可以輸入﹕
ls -l

這時後﹐您會看到這樣的結果﹕
-rw-r--r--   1 root  root   103 Oct 27 22:09 test.ls
-rw-r--r--   1 root  root   103 Oct 27 22:37 test.ls.copy
lrwxrwxrwx   1 root  root     7 Oct 27 22:37 test.ls.ln -> test.ls
drwxr-xr-x   2 root  root   024 Oct 27 22:37 test1-1   

首先讓我們看看第一列的意思﹕在句子開頭共有10個字節空位可提供檔案的一些屬性信息﹕第一個如果是‘-’的話﹐表示這是一個檔案﹐如果是‘d’的話表示這是一個目錄﹐如果是‘l’的話﹐表示這是一個link﹔接著其後的9個字節﹐分為三組﹕分別是分配給‘owner(擁有者)’‘group(群組)’‘others(其他使用者)’這三個不同使用者的權限﹔而其中每一組使用者可以擁有這些權限﹕‘r’表示readable(可讀)﹐‘w’表示writable(可寫)﹐和‘x’表示executable(可執行)。
接下來我們看到root root這兩列﹐分別表示‘owner’和‘group’是誰。owner會是系統的其中一個使用者(user)﹐而group則可以包括好些user在內﹐同時﹐user也可以從屬於好幾個group之中。無論是user或group﹐都必須由系統管理員來建立或刪除。
至於再後面數列﹐是檔案的一些資料﹐比如修改日期和大小等﹐留待您自己一一發掘了。

那麼﹐我們看看第一行﹕
-rw-r--r--   1 root  root   103 Oct 27 22:09 test.ls

可以獲得這樣的信息﹕首先﹐這是一個檔案﹐它的擁有者 root 對這個檔案具備‘讀(r)’和‘寫(w)’的權限﹐而屬於root這個群組的組員﹐都只具備‘讀(r)’的權限﹐其他的使用者也只具備‘讀(r)’的權限。我們這裡看到的權限設定為內建值﹐也就是該檔案被建立起的時候就是這樣設定的了。不過﹐我們可以改變這些設定哦~~~﹐下面讓我們輸入這幾個命令﹕
chmod u+x test.ls
chmod g+wx test.ls
chmod o+x test.ls

這個 chmod 命令是change mode的意思﹐第一行是為user(即owner)增加x權限﹐第二行是為group增加w和x權限﹐而第三行則是為others增加x權限﹐如果您這時候再使用ls -l 的話﹐您會看到 test.ls 的權限會變成﹕-rwxrwxr-x這樣的權限值了。我們使用“+”來增加權限﹐如果使用“-”則是刪除權限﹐如果使用“=”則是指定權限值。不過﹐您有否覺得這樣輸入命令很麻煩呢﹖有沒用更方便的辦法啊﹖答案是﹕有的﹗現在﹐請您輸入這樣的命令﹕
chmod 777 test.ls

您會看到test.ls的權限會變成﹕-rwxrwxrwx﹐也就是所有使用者都具備所有權限了﹐因為我們給每一個使用者都賦予‘7’這個數值﹐它分別是﹕1(x)+2(w)+4(r)的總和﹐如果是‘0’的話﹐就表示沒用任何權限。下面您輸入﹕
chmod 750 test.ls

之後﹐您會發現權限會變成﹕-rwxr-x---﹐至於為什麼會如此﹐就請您自己慢慢計算了。

我們除了可以改變檔案的權限之外﹐還可以使用 chown 來改變擁有者﹐也可以使用 chgrp 來改變群組﹐不過﹐我們也可以使用chown一次性的改變兩者﹕
chown user1:group1 test.ls

我們用“﹕”將擁有者和群組分隔開﹐當然了﹐user和group必須要事先被建立好了的。

好了﹐到這裡相信您已經對檔案管理具備相當能力了﹐其實還有許多檔案管理的技巧的﹐不過﹐我在這裡也不一一討論了。

文書編輯

要管理好Linux系統﹐少不了要對設定檔案進行編輯﹐如果您用慣了Microsoft Word或Corel Wordperfect的話﹐除了Xwindows裡面的編輯程式(如xemacs)用起來尚可應付外﹐在Linux的文字模式下﹐會覺得檔案編輯程式都沒有Windows程式那麼方便﹐雖然Linux下面也有好多種文書編輯器﹐例如﹕ed、vi、pico、joe、emacs等。下面我要介紹的歷時悠久和功能強大的 vi 文書編輯器﹕

讓我們建立一個新檔案叫test.vi﹐我們可以輸入
vi test.vi

當你進入後﹐可能在一輪亂按亂按之後才發現可以輸入文字﹐但要刪除或增加文字卻不知道如何下手﹐開始會覺得非常恐懼的﹐當初我打開vi之後﹐都不知道怎麼離開呢﹗但只要知道了vi的基本命令﹐其實用起來還算得心應手的﹐只是需要慢慢發現其功能而已。

首先﹐先告訴您vi的救命鍵﹕Esc。如果您亂按之後迷失了方向﹐可以連續地多按幾下Esc鍵﹐您就會回到vi的命令模式了。vi的模式分兩種﹕一是編輯模式﹐也就是對檔案內容進行編輯﹐而另一個就是命令模式了﹐您可以在命令模式執行諸如﹕插入、刪除、複製、粘貼、跳行、離開、保存檔案、等動作。

下面先讓我們按幾下 Esc﹐或許您會聽到喇叭會發出BB聲﹐但這是沒關係的﹐請放心好了。在 vi 裡面﹐能聽到這個聲音反而心裡比較定呢。
接著﹐按‘ i ’鍵﹐您會看到螢幕下端會出現“-- INSERT --”的提示﹐您就知道您現在可以插入文字了﹐現在請你隨便寫幾行字.
然後再按Esc。
按方向鍵往上跳一行﹐然後將游標移到中間位置﹐按幾下‘ x ’鍵﹐您會發現在游標後面的字會被刪除掉﹔如果按‘X(大寫)’﹐你會發現﹐在游標前面的字會消失掉。

現在請您按‘ u ’鍵﹐您會看見剛才刪除的字又回來了﹐原來這是 undo 的意思。那麼 redo 呢﹖按 Ctrl + r 看看﹖

接著﹐請按兩下‘ y ’鍵﹐然後按‘ p ’鍵﹐您會看到游標所在的那行會被複製出來了。這裡y是yank(複製)的意思﹐而p則是past(貼上)的意思。

現在請將游標移到第一行﹐然後按‘2’接著按兩次‘y’﹐然後再按‘p’你會發現會在游標所在的行和下一行被複製了﹐並且出現在游標下面的新行裡。這裡的2+yy是複製游標所在算起兩行﹐如果將數字改成3則複製三行﹐如此類推。

好了﹐現在請多按幾下p產生多行文字﹐然後輸入﹕
:set nu

您會發現vi會列出各行的行數。這裡的“﹕”是一個命令提示(別忘了您現在是在命令模式哦~~)﹐‘ set ’是用來設定vi環境的﹐‘nu’是number的意思。如果您要取消行號﹐可以輸入﹕‘:set nonu’。
讓我們保留行號顯示模式﹐再請您將游標移到第一行(輸入兩個小寫‘ gg ’﹔如果一個大寫‘ G ’則跳到最後一行)﹐然後按‘3’接著按兩下‘ d ’﹐您會發現頂端的三行會被刪除掉了。然後您就知道dd就是delete的意思了。

現在請您移動游標到任意一行的中間部份﹐然後按‘ i ’進入插入模式﹐再按Enter將後面的文字打斷(break)到下一行。請問﹐您知道除了按‘u’來undo之外﹐怎麼將之重新接為一行呢﹖哈哈﹐無論您用x或X還是Backspace或del鍵﹐都不作用哦~~~ 不過﹐如果您按Esc之後﹐再按‘ J(大寫)’就可以將鼠標所在的下一行接(Join)上來了。

好了﹐如果您已經滿意您的修改了﹐那麼按Esc退回命令模式﹐然後輸入﹕
:wq

這裡的‘ w ’是write(寫入檔案)的意思﹐‘ q ’是quit(退出程式)的意思。因為您在vi所做的全部修改﹐其實只在buffer中進行而已﹐並不真正影響到原來的內容﹐直到您按w為止。如果我們修改了一個當案﹐但後來發現﹐還是不做修改為好﹐也就是您不想更動原有內容而退出vi的話﹐可以單純按‘q’離開麼﹖答案是否定的﹐這時候您就要在 q 後面加上一個‘ ’﹐這是強制執行的意思﹐這樣您就可以強行離開vi了。

這裡略略介紹的﹐只是vi其中很少一部分功能﹐其他的要您自己去發現了。不過﹐光靠以上這幾個基本命令﹐相信﹐您也可以“行走江湖”了。只不過﹐效率可能沒vi高手那麼快而已(反正您也比較少用vi來寫文章吧﹖)。

有時候﹐我們因為某種意外﹐vi 被不正常的結束掉﹐如果您下次繼續編輯相同的檔案的話﹐您會看到 vi 的警告﹐告知您可以用 ‘: recover’命令將上次沒完成的檔案叫出來。如果您不想再見到這個警告﹐您可以將這個檔案的swp檔案刪除掉﹕比如該檔案叫test.txt﹐那麼這個swp檔案就會叫﹕‘.test.txt.swp’(要注意前面有一個“.”)。

另外﹐我們還可以使用 vim 來代替 vi 進行文書編輯﹐vim 是 vi 的增強版。如果您有興趣深入的學習一下 vim﹐請看 大家來學 vim 這篇文章。

掛載(mount)

以上我們所進行的檔案管理都是在本地硬碟上面進行的﹐但如果您要使用軟碟或光碟上面的資料呢﹖有如何動作呢﹖

首先我們要在這裡更正一個DOS的觀念﹐在Linux沒有所謂的ABCD這樣的磁碟代號的﹐一切東西都從‘/’ 下延伸﹐在不同的儲存設備或分區上面的資料﹐我們分別使用‘mount point’將設備掛載(mount)進檔案系統中使用﹐除了當初在安裝時指定的mount point之外﹐我們可以用任何名字來命名掛載進來的設備。下面就讓我們講述一下如何掛載軟碟和光碟。

如果您執行‘ls -l /’之後﹐我們會發現在‘/’下面有一個‘mnt’的目錄﹐在這裡目錄下面﹐應該分別有‘floppy’和‘cdrom’這兩個子目錄。如果它們還沒被建立的話﹐讓我們先它們建立起來﹕
mkdir /mnt/floppy
mkdir /mnt/cdrom

這兩個目錄將會在掛載過程中用來做mount point的。其實﹐mount point可以建立在任何地方﹐只要其能夠被存取得到就可以﹐我們之所以建立在 /mnt 之下﹐完全是出於管理的條理化需要。在建立好mount point之後﹐我們就要指定進行掛載的設備了﹐先讓我們將設備找出來吧﹐請輸入﹕
ls -l /dev/fd0
ls -l /dev/cdrom

如果這兩個檔案都存在的話﹐我們就可以進行測試了。但有一點我們要注意的是﹕小心看看/dev/cdrom是否為一個link﹐其是否正確的link到真正的硬體設備上(如﹕/dev/hdc﹐即cdrom是一個裝在第二個IDE的master上面)﹐如果以上答案全部正確﹐那麼﹐請您將一張已經經過DOS格式化的軟碟和一張CD插入機器﹐然後執行以下命令﹕
mount -t msdos /dev/fd0 /mnt/floppy
mount /dev/cdrom /mnt/cdrom

這兩行的意思分別是將軟碟掛載於/mnt/floppy﹐和將光碟掛載於/mnt/cdrom上面。不過﹐我們在掛載軟碟的時候﹐用‘-t’參數來指定好 msdos 檔案類型(如果是 Windows98 格式﹐請使用 vfat 作為檔案類型)﹐而我這裡則沒有為光碟指定檔案類型﹐因為光碟一般都會使用 iso9660格式﹐通常都可以被mount正確偵測到﹐如果您確定您的光碟使用另類格式﹐那麼您就要指定了。

現在﹐讓我們分別 ls 一下 /mnt/floppy 和 /mnt/cdrom ﹐看看您是否能夠看到軟碟和光碟內容﹖Bingo~~! 我相信您毫無意外吧﹗不過﹐現在﹐請您將光碟退出來看看﹖哈哈~~~ 不能吧﹖這是因為這個設備正在掛載中﹐所以被系統鎖死了。您要使用﹕
umount /mnt/cdrom

將cdrom卸載後才可以將光碟取出來。不過在這樣做之前﹐我想請您先進入mount point再執行 umount 動作﹕
cd /mnt/cdrom
umount /mnt/cdrom

哈哈﹐是否被系統拒絕而回應你“umount: /mnt/cdrom: device is busy”﹖這是正常的﹐因為只要您在mount point或其之下的目錄中工作的話﹐就不能進行卸載了﹐您要先跳出來(可以打cd回到家目錄)才能夠哦。

加入新硬碟

我們在“電腦基礎”中已經知道要使用新硬碟都必須經過兩個步驟﹕先進行fdisk﹐然後進行format。要在linux下面進行fdisk(假設目標是第一個IDE的slave)﹐可以輸入:
fdisk /dev/hdb

然後具體步驟請參閱前面的“安裝 Linux”之步驟‘23’。

在DOS下面要格式化磁碟﹐是使用‘format’命令﹐在 Linux下面呢﹖卻使用‘mkxxxfs’命令哦﹐其中的‘xxx’為檔案系統類型﹐例如﹐mkdosfs就會將磁碟格式為DOS檔案系統了。在Linux下面的檔案系統通常會是 ext2﹐我們可以用mke2fs 來格式化﹐如果您不指定檔案類型﹐預設是 minix ﹐為早期的 Linux 檔案格式﹐但不知道新版的 mkfs 是否改成 ext2了呢﹖

例如﹐如果我們要格式化第一個IDE的slave硬碟第一個分區﹐我們可以這樣輸入﹕
mke2fs -c /dev/hdb1

其中的‘-c’參數會讓程式在格式化同時對磁碟進行壞軌檢測﹐這樣比較需時﹐如果要快速進行格式化﹐可以不使用。

當硬碟準備妥當之後﹐我們要將硬碟 mount 進來才可以使用﹐不過這個動作﹐我們可以交由系統在開機的時候代勞。我們只要修改 /etc/fstab 這個檔案就可以了﹕
vi /etc/fstab

只要您在該檔案裡面加入﹕
/dev/hdb1  /new-mountpoint  ext2  efaults    1 2  

請將‘/new-mountpoint’改成您自己喜歡的名稱﹐而且確定它已經被建立起來了。前面數項相信不難理解﹐最後三項可能比較模糊﹐我就簡單說說吧﹕
‘defaults’當然是系統預設值啦﹐除了它﹐我們還可以加入相關的屬性﹐諸如﹕ro,noauto,grpquota,usrquota等等﹐分別用“,”分開就是了﹔然後到下一個‘1’﹐是要告訴系統是否要為這個mount point 備份(dump)﹐否則設為‘0’﹔最後的數字﹐是告訴系統在重新開機(reboot)的時候進行檢測的次序﹐通常‘/’是永遠排第 1 的﹐其他就從 2 起了。

製作開機片

無論任何時候﹐給系統準備一張開機片是非常值得鼓勵的行為。有時候﹐我們升級了核心﹐也有必要同時升級開機片。下面讓我們在Redhat下面使用一個叫做‘mkbootdisk’的程式來自己製作一張 Linux 開機片。

  1. 首先﹐我們輸入﹕
    uname -r

    看看版本號碼是多少﹐然後記住這個號碼(假設為﹕2.2.5-15CLE)。

  2. 然後﹐輸入﹕
    mkbootdisk --device /dev/fd0 2.2.5-15CLE

程式管理 (RPM)

以前要安裝Linux程式﹐有一大堆的make要設定﹐如果要刪除程式﹐更是千頭萬緒﹐耦斷絲連﹐都不知道到底有沒用清除乾淨。不過﹐自從有了RPM(Redhat Package Manager)之後﹐事情就變得容易得多了。

一般我們從internet上面下載的檔案﹐都會是壓縮檔﹐而通常都是以.tar.gz (或.tgz)結尾。我們要先對這些檔案進行解壓才能夠進行安裝﹕
tar zxvf xxxxxxx-nn.nnn.tar.gz

這樣就會將檔案解壓和產生一個程式的安裝目錄﹐然後您進入目錄﹐看看各種README和INSTALL檔案﹐了解安裝要求和過程。不過﹐說真的﹐有些程式還是蠻複雜的﹐但一般來說﹐可能要執行configure、make (make all)、make install等幾個步驟。

不過﹐如果使用rpm的話﹐就簡單的多了。如果當初您安裝Redhat的時候﹐不是選擇everything﹐而現在又想增加一些程式﹐或是您從internet上面下載了最新的rpm版本﹐那麼﹐您就可以體驗一下rmp的方便了。讓我們先將cdrom 掛載好(別說您不會哦﹗否則要打屁屁了~~~)﹐然後看看 /mnt/cdrom/RedHat/RMPS 裡面有什麼東東。如果您使用 ls 命令的話﹐可以配合‘*’來找到您想找的檔案﹔假如一個屏幕都顯示不完列表結果﹐您可以使用﹕
ls /mnt/cdrom/RedHat/RMPS/* | more

來逐頁觀看﹐也可以按 shift + Ppage Up / Page Down 來回查看。當您找到您欲安裝的rpm檔案之後﹐先將該檔案copy進 /tmp 這個目錄中。

下面我用一個從internet下載的小程式來和大家一起看看rpm的安裝過程﹐這是一個給KDE(Xwindows的管理界面之一)使用的多媒體音量控制器﹐叫 xqmixer﹐我們可以從ftp://ftp.cs.unm.edu/mirrors/kde/stable/1.1.2/apps/multimedia/下載它。讓我們先將其rpm檔案下載到 /tmp 裡面﹐然後執行﹕
rpm -qpi xqmixer-1.11-1.i386.rpm

這樣我們可以看到這個程式的一些資料﹐比如﹕程式名稱、版本號碼、程式大小、等等。如果確定沒用版本衝突的話﹐我們就可以進行安裝了﹕
rpm -ivh xqmixer-1.11-1.i386.rpm

我們看到這樣的結果將會這樣﹕
xqmixer #################################################

這就表示您已經成功安裝好改程式了﹐但如果您看到諸如這樣的問題﹕
error: failed dependencies:
        aaaaaaa is needed by xxxxxx-nn.nn.nn
        bbbbbbb is needed by xxxxxx-nn.nn.nn
        ffffccccc is needed by xxxxxx-nn.nn.nn 

這裡告訴我們﹐這個程式需要其他那些程式才能工作﹐那麼您就必須將aaaa、bbbbbb、ffffcc等程式裝上了﹐如果這些程式又要求dddddd、eeeeee、ffffffffff等程式﹐那麼﹐您還須再進行安裝﹐直到出現一串‘##########’為止。

雖然我們已經安裝好程式了﹐但我們卻不知道它安裝到哪裡去了﹐這時候﹐我們可以輸入﹕
rpm -qpl xqmixer-1.11-1.i386.rpm

剛才我們是直接查詢 rpm 檔來獲得程式資料。但如果程式已經安裝好了的話﹐您在執行 rpm -q 的時候就不用帶“ p ”這個選項了﹐而且也不用輸入 rpm 的檔案名稱﹐直接輸入程式的名稱(name)就可以了。例如﹐您可以執行﹕
rpm -qi xqmixer
rpm -ql xqmixer

您會看到一大串路徑會被顯示出來﹐也就是告訴您這個程式的檔案被安裝到哪裡去了。通常﹐Linux的應用程式都會裝在‘bin’目錄之下﹐那麼我只要留意 bin 這個字眼(可以配合 grep 找到)就知道怎麼呼叫程式了。這裡﹐我們看到xqmixer裝到了 /opt/kde/bin/ 去了。如果您能夠進入KDE﹐我們只要輸入﹕
/opt/kde/bin/xqmixe

就可以使用這個程式了。不過﹐這裡我們只是用它來做例子參考而已﹐如果您還沒裝好xwindows﹐那麼等以後裝好了再來試試。下面﹐讓我們將這個程式移除掉﹕我們再用﹕
rpm -qi xqmixer

找到rpm程式資料中的‘name’﹐這裡我們看到的是﹕“Name : xqmixer”﹐然後我們輸入﹕
rpm -e xqmixer

這裡﹐我們不用輸入rpm的全稱哦~~~﹗只輸入name 就可以了。如果您沒看到任何回應信息﹐就表示移除成功了。如果您看到諸如這樣的信息﹕
        xxxxxxx is needed by aaaa-nn.nn.nn
        xxxxxxx is needed by bbbbbb-nn.nn.nn
        xxxxxxx is needed by ffffcc-nn.nn.nn

這是告訴我們這個程式還用來跑其他程式的﹐您就要先將aaaa、bbbbb、ccccc這些程式移除掉才可以繼續。原理和安裝的時候一樣﹐只是過程掉過來而已。

另外﹐rpm 還可以用來查詢軟體版本呢﹕
rpm -qa | grep sendmail

從顯示結果中﹐我們就知道當前使用的 sendmail 是什麼版本了。這個方法用來查找系統是否安裝有某個軟體也很方便哦~~~

增加使用者

我們以上所進行的練習﹐基本上都是以root的身份進行的﹐作為一個網路系統﹐Linux當然允許建立多個使用者戶口啦﹐但你知道怎麼增加使用者麼﹖如果不會﹐請先看看這個檔案內容﹕
cat /etc/group | more

這個 cat 是用來將檔案內容顯示出來的﹐您會看到群組檔案 /etc/group/下面盡是些諸如﹕“users::100: ”這樣的內容。這裡告訴我們兩個信息﹕一個是‘group name’﹐另一個是‘group ID’﹐兩者都必須是唯一的。如果您用 vi 對這個檔進行編輯﹐您可以直接創建‘group name’和‘group ID’﹐格式可參考其他句子。不過﹐您也可以使用‘groupadd’這個程式來增加群組﹐不過要先知道 /etc/group 裡面有哪些 name 和 ID 已經被使用了﹐如果被使用了﹐我們就要使用其他名字和數字了﹕
groupadd -g 1001 group1

通常﹐我們自定的群組ID都由500開始﹐不過﹐也不是一定如此﹐只是管理的條理化需要而已。上面這個命令﹐我們為 /etc/group 增加了一個ID為1001的 group1 群組。

接下來﹐讓我們看看這個檔案﹕
cat /etc/passwd | more

我們看到第一行為﹕“root:x:0:0:root:/root:/bin/bash”﹐這個就是密碼檔裡面的使用者 root 之設定了﹕第一個詞是使用者名稱﹐然後在第一個和第二個‘﹕’之間﹐是使用者密碼﹐但因為是經過加密的﹐所以您只能看到“x”(如果被修改成空白﹐就表還沒分配密碼)﹔然後是兩個“0”﹐分別是user ID 和 group ID﹔接下來的是一些使用者資料﹐和其家目錄所在﹐以及登錄時候要使用的shell。如果您知道怎麼設定﹐和 /etc/group 一樣﹐您可以直接用 vi 來增加和指定或修改使用者帳號﹐然後執行 pwconv 程式更新 /etc/shadow 檔案。不過﹐我們也可以使用‘useradd’這個程式來增加使用者。和增加群組一樣﹐我們先要找出哪些user name 和 ID 可以使用﹕
useradd -u 1001 -g 1001 user1

這樣我們就可以建立起一個名叫‘user1’的使用者帳號了﹐他的user ID為1001﹐屬於‘group1’這個群組(因為 -g 10001 所指定的 group ID 為1001﹐group1是也)。使用 useradd 來建立使用者的話﹐其家目錄和郵件信箱等相關資料也會被建立起來﹐也就省去了手工設定的麻煩了。

剛才使用的命令﹐可以讓您具備更好的指定性﹐但如果您不理會group和ID等因素﹐只想創建一個使用者帳號的話﹐您可以使用﹕
useradd user1

不帶任何參數就可以了﹐這樣﹐goup和ID都會被自動建立起來的。

不過﹐要該帳號能夠被使用的話﹐這時候﹐您還得在此為使用者指定一個密碼﹕
passwd user1

您需要輸入密碼兩次才能完成這個動作﹐而且﹐只有系統管理員才可以指定別人的密碼。以後﹐當使用者成功登錄之後﹐他/她可以使用‘passwd’不帶任何參數﹐來修改自己的密碼。

如果我們想暫時停用某帳號﹐我們可以直接修改 /etc/passwd 檔﹐然後在該帳號前面加上一個“#”符號就可以了(注意﹕在Linux裡面的檔案﹐我們通常使用‘#’將句子標記起來﹐這樣﹐系統只會把該行視作‘註解’﹐而不會執行其設定內容了)。但是如果我們要刪除該帳號呢﹖我們可以使用﹕
userdel -r test1

就可以將其帳號和家目錄清除掉了﹐但如果該使用者使用過郵件信箱的話﹐我們就得手工的將其信箱移除了﹕
rm -rf /var/spool/mail/test1

當我們學會了怎樣增加群組和使用者之後﹐我強烈建議您先為自己建立一個帳號﹐以後就使用這個帳號進行登錄﹐如果需要使用到 root 的權力﹐您可以輸入﹕
su -

(su 不帶‘-’的話﹐root 的一些環境設定可能不會生效)﹐然後輸入 root 的密碼﹐您就可以轉變成 root 的身份了。當完成了系統設置之後﹐您可以輸入‘exit’跳離 root 的身份﹐回到自己的身份。這樣做完全是基於安全考量﹐因為 root 的權限最大了﹐他可以對系統做任何動作﹐如果 root 不小心破壞了系統設定或刪除了某些重要設定檔案﹐除非您有備份﹐否則是永遠也救不回來的了。尤其是當您的系統被入侵之後﹐使用 root 更是危險萬分﹗所以 ﹐除非必要﹐就不要使用 root 來工作。

系統觀測

Linux是一個“多人多工(Multi User & Multi Task)”系統﹐假如您用慣了DOS和Windows﹐很難想像這是怎麼一個形式的﹐倒不如讓我們親自試試好了。當您開著機器﹐見到Login: 提示的時候﹐如常登錄。然後按﹕ Alt + F2 鍵﹐您就會發現另外一個 Login: 提示了﹐也請您登錄進去﹔之後再按 Alt + F3 ﹐試用另一個帳號登錄。注意﹐您可以任意選擇 Alt 加 F2 到 F7 來進行另外登錄(可以使用相同帳號)﹐然後按 Alt + F1 回到您第一個登錄屏幕。無論您在哪裡﹐只要您輸入﹕
whoami

就可以知道您究竟使用哪一個身份登錄的了。然後您再輸入﹕
who

您就可以看到這個系統中﹐一共有哪些使用者登錄了﹐和他們從哪裡登錄進來的﹐還有登錄時間等信息。如果是本機登錄的話﹐會顯示出諸如﹕ttys1、ttys2 等終端來源﹔如果是使用telnet進來的話﹐則會顯示出諸如﹕pts/1、pts/2 等來源﹐後面還會顯示出他們目前的本地主機是什麼。

如果您只輸入﹕
w

您還可以看到各使用者目前在做什麼﹐以及他所使用的程式所佔用的CPU情況﹕
  1:46pm  up  1:54,  4 users,  load average: 0.01, 0.02, 0.00
USER    TTY    FROM      LOGIN@   IDLE   JCPU   PCPU  WHAT
root    tty1   -        11:53am  1:49m  5.41s  0.03s  sh /usr/X11R6/b
kenny   pts/1  pii266   12:05pm  1.00s  0.16s  0.04s  w
netman  pts/3  redhat62  1:40pm  2:13   0.13s  0.08s  vi /etc/passwd
netman  pts/4  redhat62  1:48pm 14.00s  0.40s  0.31s  top

讓我們先看第一行﹕1﹕46pm 表示當前時間﹔up 1:45 表示開機累計時間﹔4 users 表示當前使用者人數﹔然後 load average: 0.01, 0.02, 0.00 分別表示系統過去1、5、10分鐘的平均負載程度﹐機器越快﹐數值就越低。
然後下面各使用者的資料分別顯示出﹕使用者名稱、終端來源、機器名稱、登錄時間、空置時間(即使用者沒執行任何動作)、該用者一共佔用CPU的時間(秒)、使用者目前執行程式佔用的CPU時間、使用的程式名稱。

我們使用‘w’看到的是全部使用者的情況﹐我們也可以用‘w netman’來觀測指定使用者的情況。

如果﹐您還想看看機器目前處理的程式和它各自所佔用的資源狀況﹐我們可以執行﹕
top

就可以一一看到系統的資源使用情況了﹐這裡留待您自己去慢慢觀察了。這裡我們要指出的一個很重要的Linux 程式概念﹕Child Process。也就是說﹐在Linux 裡面可以由一個 Process (Parent)產生另外一個 Process (Child)﹐然後parent就會暫時進入sleep狀態(休息去了)﹐這時﹐parent 運算是處於背景(backgroud)執行狀態﹔然後當child 完成了運算後就會報告給 parent﹐這時候parent就會醒過來﹐重新回復前景(foreground)執行狀態。一個parent可以產生好幾個child﹐同時﹐child也可以再產生grand child﹐等等.... 如果不幸﹐當一個child程式由於某些原因死掉﹐但parent卻沒察覺出來的話﹐就會令系統產生 zombie (活死人)了。您通常用 top 指令看到的會是 ‘0 zombie’﹐如果您執行‘shutdown now’然後重新登錄後再執行 top﹐就有機會看到 zombie 了。

我們也可以將當前執行的程式送進背景執行狀態哦﹕前先執行一個程式﹐例如 ﹕‘vi test.txt’﹐然後按 Ctrl + Z 鍵就可以了。(我們也可以直接在執行程式的命令行最後加上“&”符號將之送到背景中執行﹐例如﹕‘ vi test.txt & ’)。然後讓我們輸入﹕
bg

我們就可以看到在background中有﹕“[1]+ vi test.txt & ”這個程式 。然後如果我們輸入﹕
fg

就可以再次回到程式中了。好玩吧﹖哈哈~~~ ^_^

將程式送到背景中有一個好處是﹕您可以同時執行多個程式。例如﹕您有一個好大的壓縮檔要解壓﹐但這可能需要一點時間﹔如果您不想等在那裡無所事事的話﹐您可以將這個程式送到背景執行﹐這樣您就可以繼續做其它東西了﹔等背景程式執行完畢﹐它會回到前景將執行結果告訴您的了。

在Linux中的每一個程序都有一個獨一無二的 process ID (PID)的﹐只要您輸入﹕
ps
ps aux

就可以將所有程式顯示出來了﹐但如果您覺得太亂了﹐可以配合 grep 這個指令找到您指定要找的信息﹕
ps aux | grep vi

這樣﹐凡是含有‘vi’字眼的程序就會呈現在您眼前了。
kenny 664  0.2  6.7  2468  980 pts/1  S  15:45  0:00 vi test
root  666  0.3  5.9  2420  856 pts/0  T  15:45  0:00 vi test.vi
root  667  0.5  5.9  2420  856 pts/0  T  15:45  0:00 vi test1.vi
root  671  2.0  3.4  1840  496 pts/0  S  15:45  0:00 grep vi 

從顯示出來的信息﹐我們可以看到﹕使用者名稱、PID、CPU使用率、記憶體佔用率、程序大小、駐留大小、終端號碼、狀態(Running還是Sleeping)、啟始時間、執行時間、指令名稱。其中﹐我們最需要的是它的PID﹐如果我們知道了程式的PID﹐我們就可以對其進行好多動作了﹔其中之一是‘kill’。這個 kill﹐顧名思義就是殺死的意思啦﹐比如﹕有一個程式由於某種原因停在那裡﹐而您當前的終端不能夠進行任何進一步動作了﹐那麼您可以利用另外一個終端登錄(甚至用 telnet)﹐用ps 加 grep找到其 PID (假設是664)﹐然後我們輸入﹕
kill -9 664

就可以將該程式殺掉﹐而無需像Windows那樣必須重新開機了。這裡的‘-9’是強制殺死的意思﹐無論什麼狀況都可以將改程序殺掉。
如果您想要某程式重新執行的話﹐您可以輸入﹕
kill -HUP pid

有時您並不想殺掉一個程序﹐只要其重新讀取設定﹐這就很有用了。

以上的命令多是觀測程式的工具﹐有時候您可能需要查看一下硬體上的設定。除了開機的時候您可以觀察屏幕的輸出內容外﹐您還可以隨時輸入﹕
dmesg

這個命令會將您目前所使用的硬體資料顯示出來。
如果您還想查看更詳細的硬體情況﹐您可以看看 /proc 目錄下面的檔案﹐如﹕
cat /proc/interrupts
cat /proc/ioports

您就可以得知系統目前使用了哪些 IRQ 和 IO 了。

尋求幫助

沒用人天生出來就懂的﹐知識都要靠經驗的積累﹐但我們也不可能每一樣東西都有經驗的﹐那麼﹐參考別人的經驗和使用手冊就顯得非常重要了。幸好﹐在Linux世界裡﹐我們不愁找不到資料﹐就算您上不了internet﹐系統本身就帶有非常詳盡的手冊文件。其實﹐最常用的一個指令是﹕‘man’﹐即 manual的意思。無論我們在任何地方﹐只要您知道程式的名稱﹐我們就可以用man來看它的使用方法﹐和各種參數設定。例如﹕我們想看看 useradd 這個程式是怎麼使用的﹐可以輸入﹕
man fstab

您就可以看到manual內容了﹐如果超過一個屏幕﹐您可以按空白鍵向下翻﹐也可以用方向鍵往前翻。同時﹐您還可以搜索字眼哦﹐您只要輸入﹕
/ext2

銀幕就會將所有 ext2 這個字眼顯示出來﹐如果要繼續往下找﹐只要輸入‘n’就可以了。如果你要離開man﹐可不同 vi 那樣哦﹐只要按‘q’就可以離開了。

通常﹐在man檔案最後部分﹐都會列其他一些相關的manual名稱﹐有些後面還帶有數字的﹐如﹕exports(5)﹐那是表示 exports 可能還有其他好幾個層次的manual。如果您要閱讀數字指定的manual﹐可以輸入﹕
man 5 exports

要學 Linux ﹐看 HOWTO 文件是少不了的事情﹐您可以在 /usr/doc/HOWTO 目錄裡面﹐用任何的文書編輯器來看。如果能夠用netscape的話﹐也可以看看目錄下面的 INDEX.html ﹐就可以找到相關題目了。

因為在 linux 裡面﹐還有很多命令需要在文字模式執行的﹐有時候也挺難記住全部命令的句子語法。這時候﹐您可以用 ‘--help’跟在命令後面﹐這樣可以看到該命令的簡單使用指引了。如輸入﹕
cp --help

就可以看到關於 cp 這個命令的說明了。有時候﹐您也可以用‘-h’來代替‘--help’﹐試試就知道了。

以小弟經驗來看﹐看linux幫助有時候很混淆﹐閱讀的時候要注意用來做例子的版本。因為有時候例子中的版本可能比您機器上的版本要舊﹐而且﹐不同的distribution 也使用不同的路徑等等。如果要想獲得最新的 Linux 文件﹐當然最好是上網來看啦﹐您大可到這個網站﹕http://metalab.unc.edu/mdw/HOWTO/ ﹐這裡您可以看到最新的 HOWTO。如果您不喜歡看英文的話﹐則可以到﹕http://www.linux.org.tw/CLDP/看中文的HOWTO翻譯文件(可能沒有英文站的那麼齊全)。

另外﹐有問題的話﹐也可以到新聞組(如﹕tw.bbs.comp.linux)上發表。但發問之前最好先多試幾次﹐記錄好所做的步驟和看到的錯誤信息﹐在問題裡盡可能多的將情況寫清楚﹐以及您的目的是什麼。別指望別人會回到您的信箱去﹐因為板上是大家討論的地方﹐一個分享之所。如果過一段時間沒看到回復﹐可以再發問看看﹐但不鼓勵一題多問﹐也就是將同一文章一次過 post 幾遍。

還有﹐關於 CLE 的安裝和使用﹐以及一些常見問題﹐可以從這個 http://cle.linux.org.tw/CLE/docs/manual/index.shtml 地址獲得。

 

 


© 2000 Netman 網中人
Last Updated: March 06, 2001