登入系統有這麼難嗎?呵呵!並不難,不過,雖然說是這樣說,然而很多人第一次登入 Linux 的感覺都是『接下來我要幹啥?』如果是以圖形介面登入的話,或許還有很多好玩的事物,但是,要是以文字介面登入的話,面對著一片黑壓壓的螢幕,還真不曉得要幹嘛呢!嗯!為了讓大家更瞭解如何正確的使用 Linux ,正確的登入與離開系統還是需要說明的!
Mandrake Linux
release 9.0 (dolphin) for i586
Kernel 2.4.19-16mdk on an i686 / tty1 test login: root Password: [root@test root]# |
[root@test root]# exit |
- Ctrl + Alt + [F1] ~ [F6] :文字介面登入 tty1 ~ tty6 終端機;
- Ctrl + Alt + [F7] :圖形介面桌面。
[root@test root]# startx |
好了,既然我們是要以文字介面來介紹 Linux ,那麼自然就需要先談一談指令下達的方式囉!一般而言,指令下達的方式為:
[root@test root]# command [-options] parameter1 parameter2 ...
指令 選項 參數(1) 參數(2)說明:
0. 上面的指令與參數之下達中,字母的大小寫代表意義不同:
1. command 為指令的名稱,例如變換路徑的指令為 cd 等等;
2. 中刮號[]並不存在於實際的指令中,而加入參數設定時,通常為 - 號,
有時候完整參數名稱會輸入 -- 符號;
3. parameter1 parameter2.. 為依附在 option 後面的參數,
或者是 command 的參數;
4. command, -options, parameter1.. 這幾個咚咚中間以空格來區分,
不論空幾格 shell 都視為一格;
5. 指令太長的時候,可以使用 \ 符號來跳脫 [Enter] 符號,
使指令連續到下一行。
實例:
以 ls 列出 /root 這個目錄中的隱藏檔與相關的屬性參數;
[root@test /root]# ls -al /root
[root@test /root]# ls -al /root
上面這兩個指令的下達方式是一模一樣的執行結果喔!為什麼?請參考上面的說明吧!關於更詳細的文字模式使用方式,我們會在『Shell 與 Shell Scripts』篇幅中再來強調喔!此外,請特別留意,在 Linux 的環境中,『大小寫字母是不一樣的東西!』也就是說,在 Linux 底下, VBird 與 vbird 這兩個檔案是『完全不一樣的』檔案呢!所以,您在下達指令的時候千萬要注意到您的指令是大寫還是小寫。例如當您輸入底下這個指令的時候,看看有什麼現象:
[root@test /root]# date
[root@test /root]# Date
[root@test /root]# DATE
很好玩吧!不一樣的大小寫顯示的結果會有錯誤訊息發生呢!因此,請千萬記得這個狀態呦!好囉,底下我們來練習一下一些簡單的指令,好讓您可以瞭解指令下達方式的模式:
- 顯示日期的指令: date
- 顯示日曆的指令: cal
- 簡單好用的計算機: bc
- 顯示日期的指令: date
如果在文字介面上面,想要知道目前的時間,那麼就直接在指令列模式輸入 date 即可顯示:
[root@test root]# date
Wed Oct 16 15:19:59 CST 2002
上面是顯示:星期三, 十月十六日, 15:19 分, 59 秒,在 2002 年的 CST 時區!請趕快動手做做看呦!好了,那麼如果我想要以 2002/10/16 顯示目前的時間呢?那麼就使用 date 的相關功能吧!
[root@test root]# date +%Y/%m/%d
2002/10/16
[root@test root]# date +%H:%M
15:32
那個『 +%Y%m%d 』就是 date 的一些參數功能啦!很好玩吧!
- 顯示日曆的指令: cal
那如果我想要列出目前這個月份的月曆呢?呵呵!直接給他下達 cal 即可!
[root@test root]# cal
October 2002
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
基本上, cal (calendar) 這個指令可以做的事情還很多,你可以顯示整年的月曆情況:
[root@test root]# cal 2002
2002January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 29 30 31 29 30October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2 3 4 5 6 7
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
也就是說,基本上, cal 接的語法為:
[root@test root]# cal [month] [year]
所以,我想要知道 2003 年 2 月的月曆,可以直接下達:
[root@test root]# cal 2 2003
February 2003
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
所以,未來您可以很輕易的就以 cal 來取得日曆上面的日期囉!簡直就是萬年曆啦! ^_^
- 簡單好用的計算機: bc
如果我想要使用簡單的計算器呢?很容易呀!就使用 bc 即可!在輸入 bc 之後,顯示出版本資訊之後,就進入到等待指示的階段,如下所示:
[root@test root]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
==> 游標在這裡等待您的輸入
好了,來基本的操作一下,在此之前,必須要先告知幾個使用的運算子:
+ 加法
- 減法
* 乘法
/ 除法
^ 指數
% 餘數
[root@test root]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+2+3+4
10
7-8+3
2
10*52
520
10%3
1
10^2
100
10/100
0
quit==> 離開 bc 這個計算器
在上表當中,黃色的字表示輸入的東西,而在每個黑體的字底下就是輸出的結果。咦!每個計算都還算正確,怎麼 10/100 會變成 0 呢?這是因為 bc 預設僅輸出整數,如果要輸出小數點下位數,那麼就必須要執行 scale=number ,那個 number 就是小數點位數,例如:
[root@test root]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=3
1/3
.333
340/2349
.144
quit
好了!就是這樣子啦!簡單的很吧!以後你可以輕輕鬆鬆的進行加減乘除啦!
- 一些按鍵的說明:
在 Linux 底下有幾個常用的按鍵,這裡要給他說明一下,以方便你未來在文字介面操作的情況下,可以直接按下這些按鍵來幫你處理事務喔!
- Ctrl + c : 在 Linux 底下,如果您輸入了錯誤的指令或參數,有的時候這個指令或程式會在系統底下『跑不停』這個時候怎麼辦?別擔心,如果您想讓當前的程式『停掉』的話,可以輸入: 『Ctrl』+『c』,這個就是中斷目前程式的按鍵啦!
- q : 有很多程式在跑的時候(例如 man 這個指令或 more 這個指令),如果您想跳出來,就按下 q 即可!這個按鈕也是很多指令常定義的退出鈕。
- [Tab] :會不會覺得打字很疲勞啊!沒關係,在 Linux 的預設文字介面 ( 我們稱為 BASH Shell ) 當中,有個很棒的功能,叫做是『命令與檔案補全』的功能!那就是鍵盤左邊的[Tab]這個按鍵啦!他有什麼好處呢?例如剛剛我們要執行 cal 這個指令對吧,這個時候,你只要輸入 ca[tab][tab] ,也就是輸入 ca 之後,再按兩次 [tab] 按鍵,您會發現什麼事呢?啊!所以以 ca 為開頭的指令都被顯示出來啦!很棒吧!另外,如果你輸入『 ls -al .bash[tab][tab]』會發生什麼事呢?哈哈!在該目錄下面所有以 .bash 的檔案名稱都會被顯示出來!所以囉,你就會知道,[tab] 按鍵是『很棒的功能!』在文字介面底下,要多按 [tab] 按鍵,可以避免打錯字或下錯指令喔!
總之,在 Linux 底下,文字介面的功能是很強悍的!要多多的學習他,而要學習他的基礎要訣就是......多使用、多熟悉啦!
- 錯誤訊息的查看
萬一我下達了錯誤的指令怎麼辦?不要緊呀!您可以藉由螢幕上面顯示的錯誤訊息來瞭解你的問題點,那就很容易知道如何改善這個錯誤訊息囉!舉個例子來說,假如我輸入了 DATE 這個錯誤的訊息了:
[root@test root]# DATE
bash: DATE: command not found
上面那個 bash: 表示的是我們的 Shell 的名稱,那麼什麼是 Shell 呢?還記不記得我們在 什麼是 Linux 的時候提到的『使用者、使用者介面、核心、硬體』的架構呢?呵呵!那個 shell 就是使用者介面囉!在 Linux 底下預設的使用者介面就是 bash shell 囉!好了,那麼上面的例子說明了, bash 有錯誤,什麼錯誤呢? bash告訴你:
先介紹這幾個指令讓您玩一玩先,更詳細的指令操作方法我們會在第三篇的時候再進行介紹!好了,萬一我在操作 date 這個指令的時候,手邊又沒有這本書,我要怎麼知道要如何加參數,好讓輸出的結果符合我想要的輸出格式呢?嘿嘿!到下一節 VBird 告訴你怎麼辦吧!
DATE: command not found ==>指令找不到啦!
所以說,系統上面可能並沒有 DATE 這個指令囉!就是這麼簡單!那如果是底下的樣子呢?
[root@test root]# cal 13 2003
cal: illegal month value: use 1-12
呵呵!這下子換到 cal 警告你啦, illegal month value: use 1-12,看不懂英文?沒關係,又不是考試,趕快拿本英文字典在旁邊對照著看呀!意思是說『不合法的月份值,應該使用 1-12 之間的數字!』所以各位看倌您看看,跟著螢幕的錯誤訊息瞧,很容易知道問題的錯誤是什麼吧!因此,以後如果出現了問題,螢幕上的訊息真的是很重要的呢!不要忽略了他呦!
哇! linux 還有線上求助系統啊!呵呵!這是『一定要的啦!』因為 Linux 是由所謂的『虛擬團隊』開發出來的,所以雖然他的功能很多,但是指令也是有點雜亂的!如果沒有線上說明文件的話,那麼肯定會讓大家無所適從的!因此,不論任何人寫出了一個很好用的指令後,他也會同是附上這個指令的說明文件喔!你可以很輕鬆的就查詢到這個指令的使用方法呢!很不賴吧!底下說一下幾個在 Linux 上面很常用的求助指令喔!
- 最廣泛使用的線上查詢: man
- 用在 Linux 上面的線上查詢: info
- Linux 系統中的說明文件彙集目錄: /usr/share/doc
- man
嗄?不知道怎麼使用 date 這個指令?嘿嘿嘿!不要擔心,我們 Linux 上面的線上求助系統已經都幫您想好要怎麼辦了,所以你只要使用簡單的方法去尋找一下說明的內容,馬上就清清楚楚的知道該指令的用法了!怎麼看呢?就是找男人 ( man ) 呀!?喔!不是啦! man 是 manual (操作說明) 的簡寫啦!只要下達:『 man date 』馬上就會有清楚的說明出現在你面前:
[root@test root]# man date
DATE(1) FSF DATE(1)NAME
date - print or set the system date and timeSYNOPSIS
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]DESCRIPTION
Display the current time in the given FORMAT, or set the system date.-d, --date=STRING
display time described by STRING, not `now'-f, --file=DATEFILE
like --date once for each line of DATEFILE……………………………………(中間省略)
ENVIRONMENT
TZ Specifies the timezone, unless overridden by command line parameters. If
neither is specified, the setting from /etc/localtime is used.AUTHOR
Written by David MacKenzie.REPORTING BUGS
Report bugs to <bug-sh-utils@gnu.org>.COPYRIGHT
Copyright ?2000 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO war?
ranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.SEE ALSO
The full documentation for date is maintained as a Texinfo manual. If the info and
date programs are properly installed at your site, the commandinfo date
should give you access to the complete manual.
GNU sh-utils 2.0.11 October 2000 DATE(1)
(END)
看!馬上就知道一大堆的用法了!出現的這個螢幕畫面,我們稱呼他為 man page ,您可以在裡頭查詢他的用法與相關的參數說明,如果要向下翻頁的話,可以按下鍵盤的 空白鍵 ,也可以使用 [Page Up] 與 [Page Down] 來翻頁呢!同時,如果您知道某些關鍵字的話,那麼可以在任何時候輸入『 /word 』,來主動搜尋關鍵字!例如在上面的搜尋當中,我輸入了 /date 會變成怎樣?
此外,看到了最後面的幾個資訊了嗎?包括了這個程式的『環境』、『作者』及相關資訊等等,最重要的是那個『See Also』的內容囉,該內容告訴我們,還有其他相關的程式可以查詢!呵呵!查了一個,可以知道更多個!棒!那麼離開 man page 就直接輸入 『q』 這個字母即可離開!整理一下,在 man page 當中可以按的鍵有:
- 空白鍵: 往下翻一頁;
- page up: 往上翻一頁;
- page down: 往下翻一頁;
- home: 回到最前面;
- end: 去到最終頁;
- /word: 搜尋 word 這個檔案。
那麼這些 man page 放在哪裡呢?不同的 distribution 通常可能有點差異性,不過,通常是放在 /usr/share/man 裡頭,然而,我們可以透過修改他的 man page 搜尋路徑來改善這個目錄的問題!修改 /etc/man.config ( 有的版本為 man.conf ) 即可囉!至於更多的關於 man 的訊息您可以使用『 man man 』來查詢呦!關於更詳細的設定,我們會在 Shell 的章節當中繼續的說明喔!
- info
除了 man 之外,在 Linux 裡面亦提供另外一種查詢的方式,稱為 info ,使用的方法跟 man 差不多,
[root@test root]# info command
使用 info 後面接您要查詢的指令名稱即可!這個 info 的功能比 man 還要更強大呢!在這個 info page 裡面,你可以輸入 p 及 n 往前及往後翻頁,如果看到『 * text :』的項目時,將游標移到該項目上面,按下『Enter』還可以進入次頁面的說明畫面中!很厲害喔!不過,這個 info 目前只有 Linux 底下有,其他 Unix-Like 就沒有啦!除非你有安裝....無論如何,這個部分我們會在『系統管理員篇』裡面再加以介紹啦!記住喔!在文字介面下,有任何你不知道的玩意兒,但是你想要瞭解他,請趕快使用 man 或者是 info 來查詢這個玩意兒!此外,如果你想要架設一些其他的服務時,請趕快到 /usr/share/doc 底下查一查有沒有該服務的說明檔喔!另外,再次的強調,因為 Linux 畢竟是外國人發明的,所以中文文件確實是比較少的!但是不要害怕,拿本英文字典在身邊吧!隨時查閱!不要害怕英文喔!
- /usr/share/doc
剛剛上面說,一般而言,指令或者軟體製作者,都會將自己的指令或者是軟體的說明製作成『線上說明文件』!但是,畢竟不是每個咚咚都需要做成線上說明文件的,還有相當多的說明需要額外的文件!此時,這個所謂的 How-To ( 如何做的意思 ) 就很重要啦!還有,某些軟體不只告訴你『如何做』還會有一些相關的原理會說明,那麼這些說明文件要擺在哪裡呢?哈哈!就是擺在這個目錄 /usr/share/doc 啦!所以說,其實,您只要到這個目錄底下,就會發現好多好多的說明文件檔啦!還不需要到網路上面找資料呢!厲害吧! ^_^
OK!大概知道開機的方法,也知道基本的指令操作,而且還已經知道線上查詢了,好累呦!想去休息呢!那麼如何關機呢?我想,很多朋友在 DOS 的年代已經有在玩電腦了!在當時我們關掉 DOS 的系統時,常常是直接關掉電源開關,而 Windows 在你不爽的時候,按著電源開關四秒也可以關機!但是在 Linux 則相當的不建議這麼做! Why?在 Windows 系統中,由於是單人假多工的情況,所以即使你的電腦關機,對於別人應該不會有影響才對!不過呢,在 Linux 底下,由於每個程序(或者說是服務)都是在在背景下執行的,因此,在你看不到的螢幕背後其實可能有相當多人同時在你的主機上面工作,例如瀏覽網頁啦、傳送信件啦以 FTP 傳送檔案啦等等的,如果你直接按下電源開關來關機時,則其他人的資料可能就此中斷!那可就傷腦筋了!此外,最大的問題是,若不正常關機,則可能造成檔案系統的毀損(因為來不及將資料回寫到檔案中,所以有些服務的檔案會有問題!)。正常情況下,要關機時需要注意底下幾件事:所以底下我們就來談一談關於這個關機的正確指令用法囉!
- 觀察系統的使用狀態:如果要看目前有誰在線上,可以下達 who 這個指令,而如果要看網路的連線狀態,可以下達 netstat -a 這個指令,而要看背景執行的程序可以執行 ps -aux 這個指令。使用這些指令可以讓你稍微瞭解主機目前的使用狀態!當然囉,就可以讓你判斷是否可以關機了(這些指令在後面 Linux 常用指令中會提及喔!)
- 通知線上使用者關機的時刻:要關機前總得給線上的使用者一些時間來結束他們的工作,所以,這個時候你可以使用 shutdown 的特別指令來達到此一功能。
- 正確的關機指令使用:例如 shutdown 與 reboot 兩個指令!
- 將資料同步寫入硬碟中的指令: sync
- 最正確的關機指令: shutdown
- 重新開機: reboot
- 關機囉: halt
- sync
在 Linux 系統中,為了加快資料的讀取速度,所以,預設的情況中,某些資料將不會直接被寫入硬碟,而是先暫存在記憶體當中,如此一來,如果一個資料被你重複的改寫,那麼由於他尚未被寫入硬碟中,因此可以直接由記憶體當中讀取出來,在速度上一定是快上相當多的!不過,如此一來也造成些許的困擾,那就是,萬一當你重新開機,或者是關機,或者是不正常的段電的情況下,由於資料尚未被寫入硬碟當中,哇!所以就會造成資料的更新不正常啦!那要怎麼辦呢?這個時候就需要 sync 這個指令來進行資料的寫入動作啦!直接在文字介面下輸入 sync ,那麼在記憶體中尚未被更新的資料,就會被寫入硬碟中!所以,這個指令在系統關機或重新開機之前,很重要喔!最好多執行幾次!( 註:這個指令也只有 root 可以執行喔! )
[root@test root]# sync
- shutdown
好了,由於關機有種種的限制因子在,所以只有 root 有權力關機而已喔!嗯!那麼就來關機試試看吧!我們較常使用的是 shutdown 這個指令,而這個指令會通知系統內的各個行程( processes ),並且將通知系統中的 run-level 內的一些服務來關閉之( run-level 會在後面告知喔 )。shutdown 可以達成:
- 可以自由選擇關機模式:是要關機、重新開機或進入單人操成模式均可;
- 可以設定關機時間: 可以設定成現在立刻關機, 也可以設定某一個特定的時間才關機。
- 可以自訂關機訊息:在關機之前,可以將自己設定的訊息傳送給線上 user 。
- 可以僅發出警告信:有時有可能你要進行一些測試,而不想讓其他的使用者干擾,或者是明白的告訴使用者某段時間要注意一下!這個時候可以使用 shutdown 來嚇一嚇使用者,但卻不是真的要關機啦!
- 可以選擇是否要 fsck 檢查檔案系統 。
那麼 shutdown 的語法是如何呢?聰明的讀者大概已經開始找『男人』了!沒錯,隨時隨地的 man 一下,是很不錯的舉動!好了,簡單的語法規則為:
[root@test root]# /sbin/shutdown [-t 秒] [-arkhncfF] [時間] [警告訊息]
實例:
[root@test root]# /sbin/shutdown -h 10 'This server will shutdown after 10 mins'
告訴大家,這部機器會在十分鐘後關機!並且會顯示在目前登入者的螢幕前方!
至於參數有哪些呢?以下介紹幾個吧!-t sec : -t 後面加秒數,亦即『過幾秒後關機』的意思
-k : 不要真的關機,只是發送警告訊息出去!
-r : 在將系統的服務停掉之後就重新開機
-h : 將系統的服務停掉後,立即關機。
-n : 不經過 init 程序,直接以 shutdown 的功能來關機
-f : 關機並開機之後,強制略過 fsck 的磁碟檢查
-F : 系統重新開機之後,強制進行 fsck 的磁碟檢查
-c : 取消已經在進行的 shutdown 指令內容。
此外,需要注意的是,時間參數請務必加入,否則會自動跳到 run-level 1 (就是單人維護的登入情況),這樣就傷腦筋了!底下提供幾個例子吧!
shutdown -h now 立刻關機,其中 now 相當於時間為 0 的狀態
shutdown -h 20:25 系統在今天的 20:25 分會關機
shutdown -h +10 系統再過十分鐘後自動關機
shutdown -r now 系統立刻重新開機
shutdown -r +30 'The system will reboot'
再過三十分鐘系統會重新開機,並顯示後面的訊息。
shutdown -k now 'This system will reboot'
僅發出警告信件的參數!系統並不會關機啦!嚇唬人!
- reboot; halt; poweroff
這三個指令差不多,用途上有些不同而已!那個 reboot 其實與 shutdown -r now 幾乎相同!不過,建議在關機之前還是將資料回填的指令下達一次再說:
[root@test root]# sync; sync; sync; reboot
就可以啦!通常我如果忘記 shutdown 的指令,或者是怕麻煩,都是使用上面說的這一個指令來重新開機,並且在聽到『逼』的一聲時,立刻將 Linux 主機的總電源關閉!如此亦可達到關機的目的呀!此外, halt 與 poweroff 也具有相同的功能喔!不要擔心,使用 man 去查詢一下下吧! ^_^
磁區錯亂:
在開機的過程中最容易遇到的問題就是硬碟可能有壞軌或磁區錯亂(資料損毀)的情況,這種情況雖然不容易發生在穩定的 Linux 系統下,不過由於不當的開關機還是可能會造成的,原因可能有:
- 最可能發生的原因是因為斷電或不正常關機所導致的硬碟磁軌錯亂, VBird 就曾經發生過多次因為跳電,家裡的主機又沒有安裝不斷電系統,結果就導致硬碟磁軌錯亂了!
解決的方法其實很簡單,也可能很困難,如果您的根目錄『/』並沒有損毀,那就很容易解決,如果根目錄已經損毀了,那就比較麻煩!
- 硬碟使用率過高也是一個可能的原因,例如你開放了一個 FTP 服務,裡面有些資料很有用,所以一堆人搶著下載,如果你又不是使用較穩定的 SCSI 介面硬碟,僅使用 IDE 介面的硬碟,雖然機率真的不高,但還是有可能造成磁軌錯亂的(這個問題其實在 Windows 系統下更容易發生哩!)。
- 如果根目錄沒有損毀:假設你發生錯誤的磁碟區塊是在 /dev/hda7 這一塊,那麼在開機的時候,螢幕應該會告訴你: press root pass word or ctrl+D : 這時候請輸入 root 的密碼登入系統:
- 在游標處輸入 root 密碼登入系統,進行單人單機的維護工作;
- 輸入 fsck /dev/hda7 (fsck 為指令, /dev/hda7 為錯誤的磁碟區塊,請依你的情況下達參數),這時螢幕會顯示開始修理硬碟的訊息,如果有發現任何的錯誤時,螢幕會顯示:clear [Y/N]?的詢問訊息,就直接輸入 Y 吧!
- 修理完成之後,以 reboot 重新開機囉!
- 如果根目錄損毀了:一般初學者喜歡將自己的硬碟只劃分為一個大區塊,亦即只有根目錄,那硬碟區塊錯亂一定是根目錄的問題囉!這時你可以將硬碟拔掉,接到另一台 Linx 系統的電腦上,並且不要掛載(mount)該硬碟,然後以 root 的身份執行 fsck /dev/hdb1 (/dev/hdb1 指的是你的硬碟裝置名稱,你要依你的實際狀況來設定),這樣就 OK 囉!
預防的方法:
- 如果硬碟整個壞掉:如果硬碟實在壞的離譜時,那就換一顆吧,如果不願意換硬碟,那就重灌 Linux 吧,並且在重灌的時候,於 Format 項目中,選取『error check』項目,只是如此一來,format 會很慢,並且,何時會再壞掉也不確定!最好還是換一顆吧!
- 妥善保養硬碟:例如:主機通電之後不要搬動,避免移動或震動硬碟;盡量降低硬碟的溫度,可以加裝風扇來冷卻硬碟;或者可以換裝 SCSI 硬碟。
- 劃分不同的磁碟區塊:如果諸位看官還記得的話,應該知道 Redhat 安裝的方法可以分為四五種,有 upgrad, Server, Workstation 等等的,這些咚咚不一樣的地方就在於磁碟劃分的不同啦!通常我們會建議劃分下列的磁碟區塊:
/
這樣劃分有些好處,例如 /var 是系統預設的一些資料暫存或者是 cache 資料的儲存目錄,像 e-mail 就含在這裡面。如果還有使用 proxy 時,因為常常存取,所以有可能會造成磁碟損壞,而當這部份的磁碟損壞時,由於其他的地方是沒問題的,因此資料得以保存,而且在處理時也比較容易!
/boot
/usr
/home
/var
忘記 root 密碼:
常常有些朋友在設定好了 Linux 之後,結果 root 密碼給他忘記去!要重新安裝嗎?!不需要的,你只要以單人維護模式登入即可更改你的 root 密碼喔!不過,目前的開機選單主要有 LILO 與 Grub 兩種,這兩種模式並不相同,有必要來說明一下:
- LILO:
您只要在出現 Lilo 選單的時候,輸入:(請注意,如果是 Red Hat 7.0 以後的版本,會出現圖形介面的 lilo ,這個時候請按下 [Ctrl] + x 即可進入純文字介面的 lilo 囉!)以進入單人單機維護模式(即為 run-level 1 ),然後再輸入 passwd 這個指令,就可以直接更改 root 的密碼囉!同時,如果圖形介面無法登入的時候,也可以使用此一方法來進入單人單機的維護工作,然後再去修改 /etc/inittab 改變一下登入的預設模式,如此一來就可以在下次開機的時候以文字模式登入囉!同時請注意!如果您在設定啟動的名稱的時候,已經改變了啟動的名稱,例如我都喜歡在名稱之後加上核心碼,例如:Red-Hat-2.4.7,這個時候我就必須在 boot: 底下輸入:
boot: linux -s 另外,您可能會遇到 Lilo 的開機問題,這個時候建議您先參考一下底下這一篇討論,未來還會再次提到 lilo 的設定問題!
boot: Red-Hat-2.4.7 -s 或者是:
boot: Red-Hat-2.4.7 single
關於 Lilo !關於 LILO 與 grub 我們會在後面繼續加以介紹,這裡先有概念即可!不過,並非所有版本的 Linux 皆可使用此一方法!例如 OpenLinux 就無法進入單人維護模式,因為他的單人維護模式『仍然需要輸入 root 的密碼!』哇!真是可怕吶!這個時候怎麼辦?呵呵!別擔心,現在你還不會,看完了後面幾個章節之後,您就一定會啦! ^_^
- Grub:
grub 做為開機檔案,要進入單人維護模式就比較麻煩一些!請回到 上面的圖示 中查看一下,關於 grub 的圖示,看到該圖示的底下有些說明對不對!?對啦!這個時候,請按下『 e 』進入編輯畫面,這個時候,你的畫面會有點像底下的樣子:此時,請將游標移動到 kernel 那一行,再按一次『 e 』進入 kernel 該行的編輯畫面中,然後在出現的畫面當中,最後方輸入 single :
root (hd0,0)
kernel /boot/vmlinuz-2.4.19 root=/dev/hda1再按下『 Enter 』確定之後,按下 b 就可以 boot 看看啦!
kernel /boot/vmlinuz-2.4.19 root=/dev/hda1 single