紅旗Linux中文教程

——紅旗Linux受權培訓中心指定用書——php

紅旗Linux指定培訓教材html

紅旗Linux用戶基礎教程前端

中科紅旗軟件技術有限公司編著node

紅旗Linux受權培訓管理中心監製mysql

Publishing House of Electronics Industrylinux

北京BEIJING內容簡介ios

本書屬於「紅旗Linux指定培訓教材」系列,是紅旗Linux受權培訓中心指定用書。git

本書從最基本的紅旗Linux2.0講起,詳細介紹了紅旗Linux中外設、文件系統、Shell系統、經常使用命令、基本網絡操做命令,XWindow系統的使用。本書在注重總體性和實用性的基礎上,充分考慮了讀者在學習工做中的各類困難,每章附有習題,以方便讀者鞏固所學知識。同時,本書還附有實驗部分,這些實驗設計精煉,內容充實,對讀者鞏固學習效果大有好處。程序員

本書適合於Linux入門用戶,將帶領讀者進入紅旗Linux的殿堂。同時,本書也是紅旗Linux培訓的教學用書。web

未經許可,不得以任何方式複製或抄襲本書之部分或所有內容。

版權全部,翻版必究。

圖書在版編目(CIP)數據

紅旗Linux用戶基礎教程/中科紅旗軟件技術有限公司編著.-北京:電子工業出版社,2001.1

(紅旗Linux指定培訓教材)

ISBN7-5053-6476-6

.........Linux操做系統-技術培訓-教材Ⅳ.TP316.89

中國版本圖書館CIP數據覈字(2000)第86533

叢書名:紅旗Linux指定培訓教材

書名:紅旗Linux用戶基礎教程

編著:中科紅旗軟件技術有限公司

監製:紅旗Linux受權培訓管理中心

責任編輯:郭晶 羅建強

排版製做:電子工業出版社計算機排版室監製

印刷者:

出版發行:電子工業出版社URLhttp://www.phei.com.cn

北京海淀區萬壽路173信箱郵編:100036

經銷:各地新華書店

開本:787×9801/16印張:18字數:403.2千字

版次:20011月第120011月第1次印刷

ISBN7-5053-6476-6書號:TP·3545

印數:冊訂價:元

凡購買電子工業出版社的圖書,若有缺頁、倒頁、脫頁、所附磁盤或光盤有問題者,請向購買書店調換。

若書店售缺,請與本社發行部聯繫調換。電話:68279077

前言

關於本叢書

Linux是一套無償使用和自由傳播的類UNIX操做系統,是一個基於POSIXUNIX

的多用戶、多任務、支持多線程和多CPU的操做系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。這個系統是由全世界各地的成千上萬的程序員設計和實現的。其目的是創建不受任何商品化軟件的版權制約的、全世界都能自由使用的UNIX兼容產品。

紅旗LinuxLinux的一個發展產品,由中科紅旗軟件技術有限公司開發研製的以IntelAlpha芯片爲CPU構成的服務器平臺上第一個國產的操做系統版本。它標誌着我國在發展國產操做系統的道路上邁出了堅實的一步。

紅旗Linux與其餘Linux中文版本有着不一樣的特色。它使用的是最新的Linux2.2.16版的核心,預裝了炎黃中文平臺和方正TrueType字庫,是目前國內唯一一套在Linux上支持大字符集(GBK)的中文操做系統,實現了Linux上的TrueType顯示和打印功能,而且從安裝到使用都提供了全中文化的操做環境;紅旗Linux支持基於Intel芯片的各種PC機和服務器,而且支持基於Alpha芯片的工做站和服務器等等;紅旗Linux完全支持Informix-SEOracle8以及Sybase等多種流行數據庫,並提供了Linux上數據庫解決方案的實例,爲用戶開發基於Linux的數據庫應用開創了先例。

紅旗Linux的推出,將對中國的計算機產業產生大的影響。操做系統的多元化帶動着軟件的多元發展,同時對硬件也有互動做用。有了國產操做系統後,許多優秀的應用軟件,就能不受微軟捆綁軟件的威脅,而能在本身的操做系統上一展身手。爲了配合紅旗Linux的使用和推廣,咱們特地推出了這套詳細講解紅旗Linux的桌面版和服務器的培訓教材,以期爲國產軟件的振興略盡綿薄之力。

本套叢書包括四本:《紅旗Linux桌面應用教程》、《紅旗Linux用戶基礎教程》、《紅旗Linux系統管理教程》、《紅旗Linux網絡管理教程》,內容從基本使用到高級配置,從桌面簡單應用到服務器高端管理,基本涵蓋了紅旗Linux的全部內容。並且,每本書也自成體系,講解深刻淺出,實例豐富,可針對不一樣的用戶,知足不一樣的須要。不管您是從未涉足Linux的新手,仍是經驗豐富的老手,本套書都有適合您的內容。本書是紅旗Linux受權培訓中心的指定用書,經過對本叢書的學習,讀者能夠參加紅旗Linux產品應用專家考試體系(RAP)、紅旗Linux認證工程師體系(RCE)的考試,並得到相應的認證。

在本套叢書推出過程當中,飛思科技產品研發中心全面負責審校、編輯、印刷、出版等主要環節的工做;北京匯智協同信息科技有限公司在本教材系列的教學研究和培訓規劃方面給予了全面支持。

關於本書

本書做爲「紅旗Linux指定培訓教材」叢書基礎級教材,主要介紹了紅旗Linux服務器

2.0版的相關基礎知識,是後續兩本書《(紅旗Linux系統管理教程》和《紅旗Linux網絡管理教程》)的基礎。

本書包含入門級讀者在學習Linux時所必須掌握的基礎知識,如核心升級和應用軟件安裝、使用外部設備、經常使用Linux命令介紹、紅旗Linux中文環境、Shell簡介、使用Vi、備份數據和資料、多用戶管理及用戶安全、文件與目錄系統及其操做、網絡簡介和網絡服務等。

本書有以下特色:

1)實例豐富。本書講解的每個知識點,都有具體的例子來講明;

2)深刻淺出,按部就班。本書章節順序通過精心考慮,即便您沒有任何Linux的經驗,只要按照書中各章的順序完成學習,您最終將成爲一名合格的Linux用戶;

3)練習豐富,便於自學。每章都有足夠數量的練習,您能夠及時檢查本身的學習效果;書後還附有一些較大的實驗練習和習題答案,幫助您更上一層樓。

本書主要針對於從未使用過Linux或者UNIX的入門級讀者,同時也是但願進一步進行系統管理或網絡管理的讀者的基礎讀物。學完本書後,讀者可以輕鬆定製我的化的紅旗Linux工做站,熟練使用常見命令,深入理解紅旗Linux系統,併爲後兩本書的學習打下紮實的基礎。

本書由中科紅旗軟件技術有限公司編著,劉曉華、楊豔、黃科參與了寫做工做,在此表示深深的感謝。因爲本書涉及的內容豐富,加之篇幅、時間所限,書中不足之處,敬請讀者批評指正。

目  錄

1Linux及紅旗Linux簡介 11

1.1Linux歷史 11

1.1.1Linux的產生及發展 11

1.1.2自由軟件 12

1.2Linux現狀 13

1.2.1Linux用戶 13

1.2.2Linux的功能 14

1.2.3Linux的缺陷 14

1.3Linux與其餘操做系統性能對比 15

1.3.1DOS系統比較 15

1.3.2Windows系統比較 16

1.4什麼是紅旗Linux 16

1.5紅旗Linux的功能 17

1.5.1通常的操做系統功能 17

1.5.2網絡服務 18

1.5.3中文及窗口環境支持 19

1.5.4紅旗服務器2.0版本主要特性 19

習題 20

2章紅旗Linux中文環境 21

2.1Shell中文環境 21

2.1.1簡單介紹 21

2.1.2安裝 22

2.1.3使用 22

2.1.4配置 23

2.2KDE中文環境 24

2.2.1簡單介紹 24

2.2.2啓動輸入法程序 25

2.2.3使用中文輸入法 26

2.3紅旗Linux上的中文打印機配置 27

2.3.1配置打印機 27

2.3.2中文打印 30

2.4語言切換 30

習題 31

3章經常使用Linux命令介紹 32

3.1做業控制命令 32

3.2顯示命令 33

3.3文件和目錄操做命令 34

3.4網絡命令 37

3.5其餘實用命令 38

習題 43

4Shell簡介 45

4.1Shell的基本概念 45

4.2進程 47

4.2.1分時 47

4.2.2前臺進程和後臺進程 47

4.2.3父進程和子進程 47

4.2.4進程狀態命令ps 48

4.2.5殺死進程 48

4.3輸入輸出重定向 48

4.3.1標準輸入與輸出 48

4.3.2輸入重定向 49

4.3.3輸出重定向 50

4.3.4管道 51

4.3.5命令替換 51

4.4Bourne Shell script編程基礎 52

4.4.1分支語句 52

4.4.2循環控制 54

4.4.3從循環中退出 56

4.4.4處理不定長的參數 58

4.4.5結構化編程:定義函數 59

4.4.6使用And/Or結構進行有條件的命令執行 61

4.4.7使用getopts命令讀取Linux格式選項 61

習題 63

5章使用vi 65

5.1vi的兩種模式 65

5.2啓動和退出vi 65

5.3編輯模式 65

5.4vi基本編輯方法 66

5.5vi高級應用 66

5.5.1移動光標 66

5.5.2高級編輯指令 68

5.5.3文件指令 68

習題 69

6章使用外部設備 70

6.1使用CDROM 70

6.2使用軟盤 71

6.3使用Zip驅動器 71

6.4讓系統識別並行端口Zip驅動器 71

6.5自動安裝(mount)功能 71

6.6設置32I/O硬件驅動器 72

6.7使用打印機 72

6.7.1安裝遠程打印機 72

6.7.2Linux下的打印工做 73

6.7.3命令行方式下的打印操做 74

6.7.4KDE中打印機的操做和管理 75

6.8配置和使用聲卡 75

6.9使用外設的若干常見問題 76

習題 77

7章多用戶管理及用戶安全 78

7.1用戶類別 78

7.2用戶管理 78

7.2.1添加用戶 78

7.2.2權限設置 79

7.2.3刪除和查封用戶 81

7.2.4超級用戶 81

7.3用戶組管理 82

7.3.1用戶組的實例 82

7.3.2將用戶添加至用戶組 83

7.3.3添加用戶組 83

7.3.4刪除用戶組 83

7.3.5設置羣組密碼 83

7.3.6修改羣組記錄 84

7.3.7在用戶組間切換 84

7.3.8用戶組權限需求分析 84

7.4用戶安全 85

7.4.1多用戶訪問權限控制 85

7.4.2口令安全 86

7.4.3關於PAM 88

7.4.4限制用戶對主機的使用 89

7.4.5其餘安全問題 92

習題 95

8章備份數據和資料 96

8.1備份計劃 96

8.1.1備份的重要 96

8.1.2備分內容 96

8.1.3選擇備份介質 97

8.2實施備份 98

8.2.1簡單備份 98

8.2.2多級備份 102

8.2.3 壓縮備份 102

習題 103

9章文件系統 105

9.1      105

9.1.1  創建、安裝及拆卸文件系統 107

9.2  網絡文件系統 109

9.2.1  網絡文件系統的概念 109

9.2.2  網絡文件系統的安裝 109

9.3  磁盤空間配額管理 110

9.4  碎片清理和文件系統維護 111

9.5      111

9.5.1  建立交換空間 111

習題 112

10      114

10.1  文件名和路徑名 114

10.1.1  文件名 114

10.2      115

10.2.1  目錄樹 115

10.2.2  根(/)文件系統 115

10.2 3  /usr文件系統 116

10.2.4  /var文件系統 116

10.2.5  /proc 文件系統 116

10.2.6  /dev文件系統 117

10.2.7  /etc目錄文件 117

10.3      128

習題 129

11  文件和目錄操做 130

11.1  文件基本操做 130

11.1.1  列文件 130

11.1.2  複製文件 131

11.1.3  刪除文件 131

11.1.4  移動和重命名文件 132

11.2  文件屬性操做 132

11.2.1  改變訪問權限 132

11.2.2  改變組屬 133

11.2.3  查看文件內容 133

11.2.4  壓縮和解壓 134

11.2.5  fsck檢查文件系統完整性 135

11.2.6  badblocks檢查磁盤錯誤 135

11.2.7  文件碎片 136

11.2.8  ext2文件系統的其餘工具 136

11.3  LinuxWindows 9X資源共享 136

11.3.1  Linux下共享Windows 9X的資源 136

11.3.2  Windows系統中使用Linux分區的資源 137

11.4  文件系統疑難解決 138

習題 140

12  核心升級和應用軟件安裝 141

12.1  升級和安裝概述 141

12.1.1  取得Linux軟件 141

12.1.2  解包工具 141

12.1.3  安裝和升級的限制 143

12.2      143

12.2.1  核心升級步驟 144

12.3  應用軟件安裝 147

12.3.1  Oracle安裝 147

12.3.2  安裝Sybase客戶端 151

12.3.3  ApacheMySqlPHP安裝 153

12.3.4  紅旗網絡商務通eoffice的安裝 157

習題 158

13  配置網絡和網絡服務 160

13.1      160

13.2  配置PPP鏈接 162

13.3  配置WWW服務器 163

13.4  域名服務器(DNS 164

13.5  配置匿名FTP 165

13.6  配置Sendmail 166

13.7  配置網絡遠程管理 167

13.8  網絡文件系統(NFS 167

13.9      168

13.10  經過局域網中另外一臺機器的調制解調器使用Internet 169

13.11  Linux做爲Windows服務器 169

13.12  遠程計算機的訪問:r-系列命令 170

習題 172

附錄1       172

實驗1  熟悉紅旗Linux操做系統的環境 173

實驗2  操做文件和目錄 175

實驗3  編輯器vi的使用 178

實驗4  Bash中操做 180

實驗5  在圖形環境中工做 182

實驗6  Linux中打印文件 185

實驗7  使用中文軟件 186

附錄2  引導過程 190

2.1  Linux引導過程 190

2.2  配置和使用聲卡的進一步討論 192

2.3      192

2.4  安裝驅動文件 193

2.5  安裝庫文件和實用程序 193

2.6  編輯/etc/modules.conf文件 194

2.7  系統測試和聲卡設備調整 195

2.8  聆聽自由的聲音 200

2.9  修改登陸畫面 201

2.10  Bash的設置 202

2.11  LILO的一些問題 207

附錄3  習題參考答案 209

1Linux及紅旗Linux簡介

本章內容提要

Linux的歷史

Linux的現狀

Linux及其特色

☆紅旗Linux2.0版本的新特色

☆重點掌握Linux的常識,瞭解紅旗Linux

☆在介紹紅旗Linux服務器版以前,先從Linux的歷史講起。紅旗Linux用戶基礎教程

1.1Linux歷史

1.1.1Linux的產生及發展

Linux最先是由赫爾辛基大學的一位學生LinusTorvalds編寫的。當時Linux是他的一項我的研究項目,其目的是爲Minix用戶設計一個比較有效的UNIXPC版本,LinusTorvalds稱它爲Linux1991年發行了Linux0.11版本,並將它發佈在Internet上,免費供人們使用。隨後他又在comp.os.minix新聞組內請求其餘編程人員幫助完善。通過各地Linux愛好者的補充和修改,到1994Linux1.0發佈之時,這一操做系統已經具有了搶先多任務和對稱多處理的功能。現在Linux家族已經有近140個不一樣的版本。全部這些不一樣的版本都基於最初的、免費的源代碼。不一樣的公司能夠推出不一樣的Linux產品,可是他們都必須承諾對初始源代碼的任何改動皆公佈於衆。

以銷量計算,1999年在瀏覽器操做系統市場佔有率方面,MicrosoftWindowsNT仍然位居榜首,與1998年同樣佔有市場的38%,「後起之秀」Linux則售出135萬套佔第二位,市場佔有率由1998年的16%升至25%。同時,UNIX操做系統的銷量卻由1998年的19%下跌至15%。調查還顯示,Linux軟件銷量增加速度比預期快得多。因爲如今大多數應用軟件都是針對PCMac系統的,而這些計算機大都運行WindowsMacOS,用戶購買電腦時採用的操做系統不會特別地趨向Linux,即便未來Linux上的應用軟件更加豐富,取代桌面Windows操做系統的可能性也不大。Linux組織也正在努力將Windows的應用軟件移植到Linux上運行。他們制定了Wine計劃,目的就是將Windows95WindowsNT上的應用軟件無縫地轉移到Linux系統上。Corel公司在這方面已經先行一步,該公司正在試圖將Windows下的CorelDrawWordPerfect運行於Linux上。

Linux自十年前問世以來,就一直象徵着自由與創新。目前它已成爲世界上最快的操做系統,它的使用源於網絡空間,只要這種操做系統和它的源代碼一塊兒,就能夠提供給世界各地的人免費從因特網上下載信息。尤爲在因特網基礎設施不很完備的地區,Linux成功的機會很高。主要緣由在於Linux不須要很新的電腦。事實上,它能夠兼容任何一種平臺:英特爾、ALPHAPC機,具備很普遍的使用空間。許多大公司沒必要因需增長計算機的容量就淘汰掉無缺的PC機、服務器、主機,而安裝新的版本。Linux能夠充分使用CPU循環系統,使用不多的設備作更多的工做。

Linux有三種操做系統,主要是一種伴有開啓資源模式UNIXOS的資源軟件,能夠使編程者對資源從新更改、再分配,稱之爲「因特網時間」。Linux具備全球範圍的編程者和開發者,不時對操做系統的內部進行更改和完善。Linux的可靠性使其成爲因特網及其餘網絡活動的完美選擇。幾個現存的工具就能夠使LinuxWindowsAppleNetWare一塊兒運做。

1.1.2自由軟件

軟件按其提供方式和是否贏利可分爲三種:商業軟件(CommercialSoftware)、共享軟件(Shareware)和自由軟件(Freeware)。

商業軟件由開發者出售拷貝並提供技術服務,用戶只有使用權,不得進行非法拷貝,擴散和修改。共享軟件由開發者提供軟件使用受權,共享軟件其實是商業軟件,軟件的做者但願獲得回報,就像商業軟件的製做者同樣,鼓勵自由傳播,可是軟件的升級和bug的修改只有交費的用戶能夠獲得,而且不提供軟件的源代碼,也能夠說,共享軟件是商業軟件的另外一種發佈方式。自由軟件則由開發者提供軟件的所有源代碼,任何用戶都有權使用、拷貝、擴散、修改該軟件,同時用戶也有義務將本身修改過的程序代碼公開。

支持自由軟件的人一般認爲,每一個計算機的使用者都有本身特定的須要,不可能有一個適合全部需求的軟件系統。所以軟件開發者和系統管理員須要獲得軟件的源代碼以便對軟件進行定製和擴展。此外,任何軟件產品都存在各類BUG,若是不提供軟件的源代碼,那麼軟件使用者在遇到BUG時,只能被動地等待。若是提供了軟件的源代碼,使用者就能夠根據本身的實際狀況修改軟件,使之適合本身的須要。

自由軟件的支持者Stallman1973年建立FSFFreeSoftwareFoundation)用於接受資金支持自由軟件的開發。在Stallman看來,「free」不是免費,而是「自由」,即用戶能夠擁有源代碼,有修改和發佈軟件的自由。FSF開發了大量的軟件來達到這個目的。1984年,基於「源代碼共享,思想共享」的思想,Stallman提出了GNU計劃。GNU計劃的目的是開發一個徹底自由的,與UNIX相似但功能更強大的操做系統,以便爲全部的計算機使用者提供一個功能齊全,性能良好的基本系統。在其餘人的協做下,他創做了通用公共許可證(GeneralPublicLicenseGPL),這對推進自由軟件發展起了重要的做用。與傳統的商業軟件許可證不一樣,GPL保證任何人有共享和修改自由軟件的自由,任何人都有權取得、修改和從新發布自由軟件的源代碼,而且規定在不增長附加費用的條件下獲得源代碼(基本發佈費用除外)。這一規定保證了自由軟件整體費用是低的,在使用Internet的狀況下則是免費的。GPL條款還規定自由軟件的衍生做品繼續保持自由狀態,而且用戶在擴散GNU軟件時,必須讓下一個用戶也有得到源代碼的權利。這些工做爲後來的Linux操做系統的迅速發展奠基了堅實的基礎。

1994年,Linux的第一個「產品」版Linux1.0問世時,是按徹底自由擴散版權進行傳

播的。它要求全部的源代碼必須公開,並且任何人不得從Linux交易中獲利。然而這種純粹的自由軟件的理想對於Linux的擴散和發展來講,其實是一種障礙而不是一股推進力,因紅旗Linux用戶基礎教程爲它限制了Linux以磁盤拷貝或者CDROM等媒體形式發行的可能,也限制了一些商業公司參與Linux的進一步開發並提供技術支持的良好願望,因而Linux決定轉向GPL版權。

這一版權的轉變對於Linux的進一步發展極爲重要,今後之後,便有多家技術力量雄厚的商業軟件公司加入了原先徹底由業餘愛好者參與的這場自由軟件運動,開發出了多種Linux的發行版本,極大擴展了Linux全球用戶基礎。

Linux成功的意義不只在於Linux操做系統自己,還在於LinusTorvalds所創建的全新的軟件開發方法和StallmanGNU精神。Linux操做系統能夠從Internet上直接免費下載使用,只要用戶有快速的網絡鏈接便可。並且,Linux平臺上的許多應用程序也是免費獲取的。

1.2Linux現狀

1.2.1Linux用戶

按用戶的性質分,能夠將目前Linux的用戶分爲:我的用戶、專業用戶和大規模採用了Linux系統的商業應用用戶。

1.我的用戶

這類用戶能夠說是業餘用戶,大多爲電腦愛好者或電腦發燒友。對於我的用戶來講,徹底是出於好奇,或者是抱着用用看的心態才安裝Linux的,不多有用戶在安裝前就但願它能真正乾點什麼。這類用戶中,學生佔據了很大的比例。

我的用戶大多對UNIX不瞭解,更多的人在安裝Linux系統以前,根本未曾接觸過UNIX,對於這類用戶,看到長長的控制檯命令就有點不知所措。遇到複雜的配置過程,大多數用戶都是機關用盡。

我的用戶在Linux的使用者中佔據着極大的一部分。隨着Linux的進一步發展,這些用戶是Linux得以發展的潛在的最大用戶羣。隨着Linux的各類發行版本對系統配置的進一步簡單化,我的用戶的數量就會大大增長。

2.專業用戶

相對而言,專業用戶大可能是UNIX的使用者,因爲長期受商業UNIX的限制,他們一發現Linux,就對它產生了好感。由於Linux的確能夠爲他幹很多工做,並且關鍵是它的伸縮性很強,用戶能夠隨便更改。對於專業用戶而言,因爲他們自己對UNIX比較熟悉,清楚Linux究竟能夠幹什麼,又有使用UNIX的經驗,因此上手快,也能夠發揮出Linux的強大功能。

因爲在使用Linux時,不受軟件版權的限制,專業用戶能夠所有得到全部的源程序,自由更改其中一些本身認爲必要的部分,也能夠對系統徹底進行量身定作,使系統達到徹底的高效運行狀態。不過,目前國內這種用戶的數量還比較少。更多的人則是從源程序中得到一些編程技巧,或者對內核提供的一些功能進行深刻學習,從中找到一些有用的方法、思想等。

專業用戶是Linux最忠實的擁護者,無論媒體對Linux的見解是好是壞,專業用戶永遠不會受到絲毫的影響,由於他們從Linux的應用中獲得真實的感覺:「它真的很好用,功能真正很強大!」。

3.商業用戶

因爲要向客戶提供商業服務,因此商業用戶在選擇系統時特別認真,他們一般要考慮不少因素,例如安全性、可靠性、費用等。綜合各類因素,有的商業用戶選擇了Linux,這說明Linux已至關穩定,正在逐漸被商業用戶所接受。固然,目前選擇使用Linux系統的商業用戶還不夠多,普遍使用Linux的商業用戶多爲信息服務提供商,如大量的ISPICP等。

商業用戶看中的是Linux的可靠性、免費性。可是,鑑於人們對Linux的觀望態度、不信任態度(在人們的意念中,花錢的東西確定比不花錢的東西要好),目前Linux的商業用戶還不夠多。可是,隨着Linux優秀的性能逐漸被廣大的商業用戶所認識,總會有一天,它會同今天的UNIX同樣,最終被人們接受。

1.2.2Linux的功能

Linux的功能強大而全面,在此先簡述之。

提供WWW服務。

WWW服務器在全球全部的WWW服務器中佔據了將近60%70%的份額,這在很大程度上是由於Apache軟件包,目前它的版本爲Apache1.3.9。提供Wu-ftp來提供FTP服務、Sendmail提供電子郵件服務、inn提供新聞組服務。另外,Linux還被普遍用做DNS服務器、NIS服務、NFS服務等。

文件及打印服務。

長期以來,人們習慣了使用NT做文件服務,可是,用過NetWare的人都會發現,NT提供的文件服務功能太弱。好比,它沒法對用戶使用的磁盤進行定額限制,只要管理人員向用戶開發了寫入權限,一個貪婪的用戶就能夠將整個硬盤都複製滿數據。而使用Linux就不會這樣,Linux下的Samba服務器能夠輕鬆爲用戶提供文件及打印服務,還能夠經過磁盤定額(quote)達到一樣的目的。

數據庫服務。

數據庫服務是全部商業用戶在選擇系統時首先要考慮的問題,由於全部的商業系統幾乎沒有不用數據庫系統的。Linux提供了數據庫系統的全力支持,最先的數據系統有:MySQLPostgreSQLmsql等,其中MySQL能夠支持到5TB以上的數據庫。後來,隨着Linux影響的不斷擴大,各大數據庫廠商紛紛看中Linux廣闊的前景,前後推出了本身基於Linux系統下的大型數據庫。如今,運行在其餘環境下的大型數據庫系統,所有能夠在Linux下運行。目前能夠在Linux運行的大型數據庫系統有:SybaseASE11.0.3.3SybaseASE11.9.2Informix-seInformixDynimicServer7.3Oracle8.0.5forLinuxOracle8.1.5forLinuxIBMDB2forLinux6.1BetaNotes/Domino5.0.1等。

網絡服務。

Linux可提供網絡服務,如將Linux系統用做路由器等。這些系統一般狀況下只安裝簡單的網絡服務功能軟件包。大多狀況下是將一臺老的486或較好一點的586機插兩塊網卡,用做一個簡易的路由器或網橋。對於安全性要求較高的網絡,還能夠將Linux機用做防火牆(IPChain)來使用,以杜絕外部入侵者的破壞。另外,Linux還能夠用做代理服務器(SocketSquid等),也能夠採用IP掩蔽(IPMasquade)將整個局域網上的用戶所有接入Internet。面向用戶提供WWWFTPE-mail等服務。

典型應用。

一個經濟性的ISP:全部的PC機上安裝Linux,每一臺PC機上安裝4塊硬盤,採用md將其以raid0方式拉成一個大盤,其餘目錄以NFS格式輸出。其餘PC機上一樣安裝4塊硬盤,一樣採用raidtool將其拉成一塊大盤,一樣以NFS格式輸出。最後,在主服務器上,經過加掛(mountNFS文件系統到主服務器上。從而造成一個大的存儲空間。WWW服務採用Apache1.3.12,數據庫使用了MySQL,經過PHPWeb同數據相連,用戶直接經過頁面就能夠訪問數據庫。以上種種,就構成了一個經濟型的ISP

1.2.3Linux的缺陷

由上面看來,Linux真可謂是無所不能,用戶徹底能夠不用Word寫文章,也能夠不用AdobePhotoshop處理圖形,而改用emacs進行字處理,改用gmid來處理圖形。可是,目前在Linux下的應用軟件還不太多,尚未像WordwordprofectwordproWPS同樣的重量級字處理軟件。目前Linux下的應用軟件還不夠豐富,人們的選擇性還不大。

從處理中文的角度上來說,用戶目前須要的是像運行在英文Windows下的中文之星、四通利方那樣的外掛式中文系統。Linux缺乏全面漢化或者說是內核漢化的中文系統。不過,這一切正在改善,目前國內也發行了許多本身的發行版,可是,大多數發行版的中文系統還不夠成熟、不夠穩定。可喜的是紅旗服務器版本2.0對中文的支持大大增強,用戶能夠盡情享受中文帶來的樂趣了。

讀者大概都據說過,很多Linux系統的狂熱支持者聲稱Linux要戰勝NT。其實,這在短時間內是不可能的。PC操做系統的市場佔據了大多數的我的用戶,而我的用戶並不一樣於專業用戶,因此Linux要戰勝NTWindows,首先要作的事情是:讓Linux易用起來。雖然目前的Linux在安裝界面、操做界面上較之之前的發行版有了很大的提升,可是,其界面還不夠友好,易用性目前還不如Windows。因此說,目前Linux最缺乏的東西就是它的操做易用性、安裝易用性、配置易用性。解決了這些問題,Linux取勝的可能性就會大起來。

對於業餘用戶而言,Linux缺乏的則是應用。大多數人安裝過紅旗LinuxRedhatSlackWareOpenLinuxDebianTurboLinux……然而,不少人都會感到迷惑:Linux究竟能夠幫助本身乾點什麼,是啊,自始至終,除了一種感覺外,好像Linux並不能爲本身真正作點什麼。人們習慣了用WordWPS處理文字,習慣了用VBVC編寫程序,而這個安裝在本身機器上的Linux,卻找不到這些可用的軟件。因而,不少人又悄悄地將Linux從本身的硬盤上卸掉了,只留下一種期盼……

對於軟件開發商而言,到目前爲止尚未Linux環境下的集成開發環境。Linux系統的軟件開發環境都是字符環境,用戶在Linux環境下編寫程序,一般都是使用Emacs寫好程序,再在Emacs中使用編譯器對源程序進行編譯。不過,隨着Linux的發展,必定會有軟件開發商推出新的IDE開發環境。Inpress公司,也即原來的Borland公司正在開發Linux環境下的Jbuilder,不久之後就會推出。SGI也推出一個Linux系統下的集成開發環境,用戶能夠到其站點下載並無償使用。

對商業用戶來講,Linux缺乏的則是可靠性。雖然Linux曾經有過600多天不宕機的記錄,可是,硬件的不可靠性仍然可能形成系統的意外宕機,目前在各類操做系統中,都有本身的雙機熱備份系統或集羣系統,這些高可靠性的措施,能夠大大下降商業用戶的後顧之憂,而Linux目前尚未一個成熟的雙機熱備份系統,基於Linux系統的集羣系統還在研製中。全部的這一切,都阻礙了Linux在商業系統中的應用。

總之,Linux雖說是無所不能,但仍是遠不能知足目前用戶對它的要求。Linux要走的路很長。

1.3Linux與其餘操做系統性能對比

1.3.1DOS系統比較

在同一系統上運行LinuxMS-DOS已很廣泛,就發揮處理器功能來講,MS-DOS沒紅旗Linux用戶基礎教程有徹底實現x86處理器的功能,而Linux徹底在處理器保護模式下運行,而且開發了處理器的全部特性。Linux能夠直接訪問計算機內的全部可用內存,提供完整的UNIX接口。而MS-DOS只支持部分UNIX的接口。

就使用費用而言,LinuxMS-DOS是兩種徹底不一樣的實體。與其餘商業操做系統相比,MS-DOS價格比較便宜,並且在PC機用戶中有很大的佔有率,任何其餘PC機操做系統都很難達到MS-DOS的普及程度,由於其餘操做系統的費用對大多數PC機用戶來講都是一個不小的負擔。但Linux是免費的,用戶能夠從Internet上或者其餘途徑得到它的版本,並且能夠任意使用,不須要考慮費用問題。

就操做系統的功能來講,MS-DOS是單任務的操做系統,一旦用戶運行了一個MS-DOS的應用程序,它就獨佔了系統的資源,用戶不可能再同時運行其餘應用程序。而Linux是多任務的操做系統,用戶能夠同時運行多個應用程序。

1.3.2Windows系統比較

從發展背景看,Linux與其餘操做系統的區別是,Linux是從一個比較成熟的操做系統發展而來的。而其餘操做系統,如WindowsNT等,都是自成體系,沒有對應的相依託的操做系統。這一區別使得Linux的用戶能大大地從UNIX團體貢獻中獲利。由於UNIX是世界上使用最廣泛、發展最成熟的操做系統之一,它是20世紀70年代中期發展起來的微機和巨型機的多任務系統,雖然有時接口比較混亂,並缺乏相對集中的標準,但仍是發展成爲了最普遍使用的操做系統之一。不管是UNIX的做者仍是UNIX的用戶,都認爲只有UNIX纔是一個真正的操做系統,許多計算機系統(從我的計算機到超級計算機)都存在UNIX版本,UNIX的用戶能夠從不少方面獲得支持和幫助。所以,Linux作爲UNIX的一個克隆產品,一樣會獲得相應的支持和幫助,直接擁有UNIX在用戶中創建的牢固的地位。

從使用費用上看,Linux與其餘操做系統的區別在於Linux是一種開放、免費的操做系統,而其餘操做系統都是封閉的系統,須要有償使用。這一區別使得用戶可以不用花錢就能獲得不少Linux的版本以及爲其開發的應用軟件。當用戶訪問Internet時,會發現幾乎全部可用的自由軟件都可以運行在Linux系統上,由來自不少軟件商的多種UNIX實現。UNIX的開發、發展商以開放系統的方式推進其標準化,但卻沒有一個公司來控制這種設計。所以,任何一個軟件商(或開發者)都能在某種UNIX實現中實現這些標準。OS/2WindowsNT等操做系統是具備版權的產品,其接口和設計均由某一公司控制,並且只有這些公司纔有權實現其設計,它們是在封閉的環境下發展的。

1.4什麼是紅旗Linux

Linux是一套無償使用和自由傳播的類UNIX操做系統,是一個基於POSIXUNIX的多用戶、多任務、支持多線程和多CPU的操做系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了UNIX以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操做系統。它主要用於基於Intelx86系列CPU的計算機上。這個系統是由全世界各地的成千上萬的程序員設計和實現的。其目的是創建不受任何商品化軟件的版權制約的、全世界都能自由使用的UNIX兼容產品!

Linux以高效性和靈活性著稱。Linux模塊化的設計結構,使得它既能在價格昂貴的工做站上運行,也可以在廉價的PC機上實現所有的UNIX特性,具備多任務、多用戶的能力。

Linux是在GNU公共許可權限下免費得到的,是一個符合POSIX標準的操做系統。Linux操做系統軟件包不只包括完整的Linux操做系統,並且還包括了文本編輯器、高級語言編譯器等應用軟件。它還包括帶有多個窗口管理器的XWindow圖形用戶界面,如同WindowsNT同樣,容許用戶使用窗口、圖標和菜單對系統進行操做。

紅旗LinuxLinux的一個發展產品。是由中科紅旗軟件技術有限公司開發研製的,以IntelAlpha芯片爲CPU構成的服務器平臺上第一個國產的操做系統版本,它標誌着我國在發展國產操做系統的道路上邁出了堅實的一步。

紅旗Linux與其餘Linux中文版本有着不一樣的特色。紅旗Linux1.0.0版使用的是最新的Linux2.2.15版的核心,是全中文化的Linux發行版本,預裝了炎黃中文平臺和方正TrueType字庫,是目前國內唯一一套在Linux上支持大字符集(GBK)的中文操做系統,實現了Linux上的TrueType顯示和打印功能,而且從安裝到使用都提供了全中文化的操做環境。紅旗Linux支持基於Intel芯片的各種PC機和服務器,而且支持基於ALPHA芯片的工做站和服務器等等,目前該平臺產品在硬件平臺支持方——康柏電腦公司的PC服務器及ALPHA機上均能穩定運行,爲從此在高端產品上的發展奠基了基礎;紅旗Linux完全支持Informix-SEOracle8以及Sybase等多種流行數據庫,並提供了Linux上數據庫解決方案的實例,爲用戶開發基於Linux的數據庫應用開創了先例。

紅旗Linux的推出,將對中國的計算機產業產生很大的影響。操做系統的多元化帶動着軟件的多元發展,同時對硬件也有互動做用。有了國產操做系統後,許多優秀的應用軟件,就能不受微軟捆綁軟件的威脅,而在本身的操做系統上一展身手了。

1.5紅旗Linux的功能

1.5.1通常的操做系統功能

紅旗Linux首先是操做系統,它支持多道程序的並行執行,爲了使多道程序能有條不紊的執行,它具備如下操做系統功能。

1.存儲器管理

存儲器的分配和回收。多道程序併發執行的首要條件是程序有本身的內存空間。所以,爲多道程序分配內存是存儲管理的首要功能。當多道程序運行結束後,必須釋放所佔有的存儲空間,由存儲管理程序回收以便再分配。有兩種存儲分配的方法:靜態分配法(一次性分配)和動態分配法(運行過程當中隨機分配)。

信息保護。爲了保證各道程序能在本身已經分到的內存空間中正確運行,互不干擾,互不破壞,尤爲是不能讓用戶程序破壞操做系統常駐內存內的程序,存儲管理必須提供信息保護措施。即隨時對每道執行中的程序進行檢查,查看它們對內存的訪問權限是否合法,若是越界則拒絕執行,併發出越界錯誤信號。

地址映射。由目標程序所限定的地址範圍稱爲程序的地址空間,地址空間中的地址是邏輯地址。內存空間是內存的物理地址的集合。在多道程序系統中,操做系統必須把程序地址空間中的邏輯地址轉換爲內存空間中的物理地址,這就須要有地址轉換機構和地址映射功能。

虛擬存儲技術支持。因爲內存的大小會直接影響到大型做業或多個做業的並行執行,爲了知足用戶對內存容量的要求,改善系統性能,通常還要求操做系統支持虛擬存儲技術。

2.進程管理

在多道程序並行執行的環境下,處理器的分配和運行都是以進程爲基本單位進行的。進程管理主要有如下主要功能:

進程控制:建立進程、撤銷進程以及控制進程的狀態轉換。

進程同步:對併發執行的進程進行協調。

進程通訊:管理相互合做的進程之間的通訊。

進程調度:當一個正在執行的進程已經完成或因某些緣由沒法繼續執行時,系統進行調度,從新分配處理機。

3.設備管理

設備管理包括:

緩衝區管理。在系統中設有不少不一樣類型的緩衝區,利用緩衝區來緩衝CPUI/O設備之間速度不匹配的矛盾。所以,在系統中必須對全部的緩衝區進行有效的管理。

設備分配。根據用戶請求的設備類型和採用的分配方式,對設備進行分配並將未得到所須要設備的進程列入相應設備的等待隊列。

設備處理。啓動指定的I/O設備,完成用戶規定的I/O操做,並及時響應設備發出的中斷請求進行相應的處理。

實現虛擬設備的功能。使每一個用戶都以爲本身在獨佔設備。

4.文件管理

文件管理主要有如下的功能:

文件存儲空間的管理。要求文件系統對文件存儲空間進行分配與回收,爲用戶提供充足有序的存儲空間。

目錄管理。爲了使用戶方便地存取所需文件,一般由系統爲每一個文件創建一個文件控制塊,其中包括文件名、文件屬性、文件所在的物理位置以及有關的信息。文件系統對全部的文件和目錄進行組織管理,以方便對文件和目錄的查找。

對文件的讀或寫。文件讀寫管理系統在對某文件進行讀寫操做時,根據用戶給定的目標地址和傳送的字節數將文件信息從外存儲器讀入緩衝區,再複製到指定的用戶區或系統區。

文件保護。爲了防止文件被其餘用戶有意無心地破壞或盜用,對文件進行保護和加密,保護措施有口令、存取權限、加密等。

提供接口。爲了方便用戶,操做系統爲用戶提供一個使用方便的接口,用戶經過該接口取得文件系統的服務,如使用創建、打開、關閉、讀或這些文件等系統調用,供編程時使用。

5.做業管理

根據用戶和系統的要求對做業的運行進行合理的組織和控制。它主要有如下的功能:

做業調度。根據系統的能力和當前做業的運行狀況,按必定的策略,從後備做業隊列中選出一批做業,爲它們分配所需的I/O設備和存儲空間,將它們調入內存並創建相應的進程,使之成爲具備得到處理器資格的被選進程。

做業控制。在做業進入系統直到運行完成的整個過程當中,用戶能夠經過某種形式發出各類命令,對本身的做業進行控制和管理。主要的做業控制方式有兩種:脫機控制方式和聯機控制方式。

此外,操做系統的管理功能還有中斷管理系統、錯誤處理功能等。

1.5.2網絡服務

紅旗Linux和其餘Linux系統同樣,具備強大的網絡服務功能。首先,它具備很強的網絡兼容性,它支持的網絡協議衆多,如TCP/IPIPX/SPXNetBEUIX.25等;還能夠兼容和提供NetWare服務、LANManager服務、AppleTalk服務等,這些能力爲Linux提供了無與倫比的網絡親和性。此外,紅旗Linux的網絡管理能力和安全性也很讓人放心,它擁有一套完善的網絡管理機制和規則,使得網絡的可配置能力很強,爲系統管理員提供了極大的靈活性。整體說來它的網絡服務具備如下幾個方面:

1Internet/Intranet服務器

Internet/Intranet包括WWWFTPE-mail等服務。Linux被普遍應用於InternetIntranet中,提供WWW服務。LinuxWWW服務器在全球的WWW服務器中佔據了將近60%~70%的份額,這多虧了Apache軟件包。另外,Linux還被普遍用做DNS服務器、NIS服務器、NFS服務器等。

2.網絡管理服務器

網絡管理服務器包括FirewallRouterIPMASQ等。能夠將Linux用做防火牆(IPChain),以杜絕外部入侵者的破壞。另外,Linux還能夠絕不費力地用做代理服務器(SocketSquid等),也能夠採用IP掩蔽(IPMasquerade)將整個局域網上的用戶所有接入Internet

3.企業羣組服務器

企業羣組服務器包括文件服務、打印服務、數據庫服務、目錄服務等。可是,用過NetWare的用戶都會發現,NT提供的文件服務功能太弱。Linux下的Samba服務器能夠輕鬆地向用戶提供文件及打印服務,還能夠經過磁盤定額達到與NetWare一樣的功效。同時Linux提供了對數據庫系統的全力支持,各大數據庫廠商紛紛看中Linux廣闊的前景,前後推出基於Linux系統下的大型數據庫。目前能夠在Linux運行的大型數據庫系統有:SybaseASE11033SybaseASE1192InformixseInformixDynimicServer73Oracle805forLinuxOracle815forLinuxIBMDB2forLinux61BetaNotesDomino501等。

4.應用服務器

應用服務器包括電子商務、CORBADCOM等服務。此外還能夠實現自動撥號(Dial)、論壇、BBS、新聞服務器、LinuxWindows9x/NT聯絡(Samba)、DNSOracleforLinuxPerlPHP3WebMail、搜索引擎等等。

1.5.3中文及窗口環境支持

對於中國用戶來講,中文顯示、中文打印是很是重要的。桌面系統對中文的顯示、打印等要求很高,Linux在漢字處理方面開發的時間較短,還不夠成熟,在字型字體、顯示打印等方面與其餘桌面系統比起來存在着必定的差距。不過紅旗Linux中文能力在這方面處於領先的位置。紅旗Linux預裝了炎黃中文平臺和方正TrueType字庫,是目前國內唯一一套在Linux上支持大字符集(GBK)的中文操做系統,實現了Linux上的TrueType顯示和打印功能,而且從安裝到使用提供了全中文化的操做環境。

1.5.4紅旗服務器2.0版本主要特性

支持三種語言,簡體中文、繁體中文和英文。並可動態切換。

提供了日誌文件系統reiserfs,支持海量文件系統。

增長了UPS電源管理。

增強了系統備份的工具。

提供了LVS的支持,用戶能夠架構本身的Web集羣服務器。

提供了網絡防病毒軟件。

提供了紅旗網絡商務通e-Office系統。

部分支持USB設備。

習題

1Linux家族()。

A.已經有近140個不一樣的版本。

B.搶先具有了多任務和對稱多處理的功能。

C.不一樣的版本都是基於最初的、免費的源代碼。

D.在瀏覽器操做系統市場佔有率方面居榜首。

2.下列哪些是使用Linux的好處?()

A.能夠提供給世界各地的人免費從因特網上下載信息。

BLinux不須要很新的電腦。

C.具備很普遍的使用空間。

DLinux是免費的,無需任何額外的投資。

EWindows95WindowsNT上的應用軟件能夠無縫地轉移到Linux系統上。

3Linux能夠()。

A.做WWW服務器。

B.用做文件及打印服務。

C.數據庫服務。

D.網絡服務。

E.經濟型的ISP

4.紅旗Linux支持哪些數據庫()?

AInformix-SE

BOracle8

CSybase等多種流行數據庫。

DSQLServer2000

EMySql

5.通常的操做系統功能包括()。

A.存儲器管理。

B.進程管理。

C.設備管理。

D.文件管理。

E.做業管理。

6.紅旗Linux首先是操做系統,它支持()。

A.多道程序的並行執行。

B.單道程序。

C.多道程序串行執行。

D.單道程序的並行執行。

7.紅旗Linux2.0服務器版能()。

A.支持海量文件系統。

B.支持LVS

C.支持三種語言,簡體中文、繁體中文和英文。

D.部分支持USB設備。

2章紅旗Linux中文環境

本章內容提要

紅旗Linux提供的中文環境解決了XWindow系統和Shell方式下的中文輸入及顯示問題。不但附帶了Shell方式下的中文環境,還提供了漢化的中文環境KDE,而且實現了XWindow中的中文顯示和打印。在中文環境中,提供了多種中文輸入法,能夠知足不一樣用戶對漢字輸入的要求。

與業餘愛好者編制的中文環境相比,紅旗Linux提供的中文環境支持大字符集(GBK),從而提供更多可選用的漢用字。

本章重點內容

Shell中文環境

KDE中文環境

☆中文打印

☆語言切換

☆要求在紅旗Linux下能熟練的使用中文和英文

2.1Shell中文環境

紅旗Linux2.0提供了Shell方式下的中文環境,用來支持字符方式的中文顯示和輸入。配合中文環境,Linux的配置工具也進行了漢化,方便用戶配置和管理Linux系統。默認的狀況下,不須要額外安裝炎黃中文環境,系統中已經存在安裝時選下的炎黃中文環境版本。只有用戶須要升級炎黃中文環境的時候,纔會用於中文環境的安裝。

Shell方式下的中文環境的使用,主要涉及中文環境的啓動,輸入法的開啓和關閉,漢字的輸入這三個方面。因爲Shell方式沒有圖形化的接口,大部分的操做都是經過鍵盤的熱鍵進行。若是須要使用Shell方式下的中文環境,這些熱鍵必須有所掌握。

Shell方式下的中文環境配置比較麻煩,因爲沒有很好的工具,若是須要配置中文環境,用戶只能對配置文件進行手工的修改。炎黃中文環境也提供動態的裝載和卸載,建議用戶使用配置文件進行設置。

2.1.1簡單介紹

紅旗Linux在字符方式的Shell下面,是經過執行一個程序,完成中文環境的啓動。執行的程序,就是炎黃中文環境的初始化程序。在正常執行之後,會生成一個新的Shell命令方式的控制檯。新的控制檯是在圖形方式下模擬出的字符方式,能夠支持中文的顯示和輸入。也正是由於如此,在中文環境中顯示漢字和英文的速度,比起原先的Shell方式有所下降。可是相比而言,紅旗Linux的中文環境,由於採用了直接寫屏技術,比其餘方法實現的速度要快一些。在Shell方式下面運行炎黃中文環境,經過輸入yh命令進行。Yh是「炎黃」二者字的漢語拼音的第一個字母。

在運行炎黃中文環境之後,會顯示出加載的輸入法信息,包括輸入法的名稱和切換的熱鍵。例如:按下【Shift+F3】會切換到智能ABC輸入法。在屏幕的下面,有一個狀態條,提示當前中文環境的信息。從左邊開始,依次是「半角/全角」、「中/英」、「GBK/BIG5」。「/」代表能夠利用系統提供的熱鍵進行先後的兩個狀態之間的切換。

2.1.2安裝

新安裝好的紅旗Linux2.0默認狀況下就帶有炎黃中文環境,不須要額外的工做。只有在須要使用新的炎黃輸入法,或者在其餘非紅旗Linux的系統上,纔會用到安裝。安裝前首先須要得到炎黃中文平臺的源代碼或可運行版本。目前最新的炎黃中文平臺的版本是V3.1,在紅旗Linux的光盤中,即附帶有炎黃平臺:/RedFlag/RPMS/rf-yh-input-e.1-1.i382.rpm

對於上面的rpm格式的包,下面的命令就會完成炎黃中文平臺的安裝:rpm-I-forcerf-yh-input-3.1-1.i382.rpm。若是之前安裝過炎黃中文環境,那麼上面的命令會自動從新安裝最新的版本。

若是得到的炎黃中文環境不是rpm包的格式,而是yh-3.1.tar.gz,須要利用targzip程序解開包。tar程序是把許多文件組合成一個大文件的工具,gzip用來對文件進行壓縮。

在使用的時候,能夠經過tar命令的參數調用gzip程序,從而省去了gzip程序的使用。下面的命令能夠完成解包:tarfzxvyh-3.1.tar.gz

注意:上面的命令都假設包文件在當前目錄。

命令執行完之後,會在當前目錄創建一個yhinstall目錄,進入這個目錄,而後使用install程序安裝。下面的命令完成全部的這些操做:

$tarfzrvyh-3.1.tar.gz

$cdyhinstall

$./install

安裝完畢,在Shell提示符下輸入yh命令,就會發現炎黃中文軟件已經安裝成功。

2.1.3使用

啓動炎黃中文環境之後,就能夠直接利用Linux系統提供的多種工具進行中文的閱讀。

例如,使用lessmore命令,能夠查看一箇中文的文本文件內容。

除了查看之外,還能夠經過Shell方式的編輯器,進行中文文件的編輯,也能夠對其餘程序輸入中文。在輸入的時候,須要指定使用的中文輸入法。經常使用的輸入法有:智能ABC輸入法、GBK拼音輸入法、鄭碼、區位碼。每一種輸入法都有本身特定的編碼規則,遵循它們就能夠輸入指定的漢字。其中最簡單的輸入法莫過於拼音輸入法,只須要知道漢字的發音,就能夠把它輸入計算機。在炎黃中文環境中,提供了兩種拼音輸入法,它們是智能ABC輸入法和GBK拼音輸入法。

因爲有多種輸入法,爲了在輸入的時候,正確選擇須要的輸入法,炎黃中文平臺提供了熱鍵用來切換輸入法,【Shift+F3】到【Shift+F7】均可以安裝輸入法。在中文平臺的屏幕下面的狀態條上,默認的英文輸入的時候,就會有熱鍵的提示。具體的輸入法和熱鍵之間的對應關係,主要依靠炎黃系統啓動的設置。在中文平臺剛剛啓動的時候,有加載的輸入法的熱鍵對應狀況。用戶也能夠本身指定輸入法的熱鍵使用。

在切換到指定的輸入法之後,就能夠按照規則輸入,在輸入中文的時候,對於拼音輸入法,英文字母對應拼音的符號。不過只有小寫的半角字母才起做用,大寫和全角的字母將會直接接入到系統中,而不會看成拼音符號處理。因爲拼音的相同字不少,因此在輸入完成之後,還要在候選的同音漢字中選取須要的漢字,選取能夠經過漢字前面的數字鍵進行。例如,若是須要選取「安」字,那麼按它前面的數字「2」鍵。若是候選的漢字太多,那麼系統會按每10個一組顯示,經過「—」和「=」鍵進行轉換。

在須要輸入英文的小寫字母的時候,不用轉換到英文輸入狀態,能夠利用【Shift+F1】暫時關閉輸入法,這樣就不會有屏幕最底行的提示狀態條,系統恢復英文輸入狀態。另一個在DOS下面經常使用的熱鍵【Ctrl+Space】也能夠用來暫時關閉輸入法,等於【Shift+F1】。若是須要輸入全角的標點符號或者英文字母,經過【Shift+F2】熱鍵,就能夠在全角和半角之間進行切換。另外,在輸入的時候,也能夠輸入繁體的BIG5漢字,經過【Ctrl+Alt+b】切換到BIG5輸入模式,【Ctrl+Alt+g】恢復爲原先的GBK碼輸入模式。利用熱鍵【Ctrl+Alt+b】切換到BIG5編碼之後,炎黃中文平臺的顯示也變成了繁體。之前輸入的簡體中文,如今變成了亂碼。說明炎黃中文環境的確已經切換到了BIG5碼的體系,閱讀和輸入繁體漢字已經沒有問題了。

2.1.4配置

炎黃中文平臺的配置主要是配置系統使用的輸入法。在啓動的時候,系統會自動經過配置文件加載對應的輸入法,通常狀況下,啓動的輸入法是:智能ABCGGK拼音和鄭碼輸入法,按照順序對應輸入法的切換熱鍵爲【Shift+F3】到【Shift+F5】。

注意:炎黃中文平臺同時只能使用5個輸入法,最多輸入法切換熱鍵只到【Shift+F7】。

若是有多於5個輸入法,沒有辦法同時使用,可是系統提供方法,能夠動態地卸載和裝載輸入法。在須要的時候,先卸載一個不用的輸入法,而後再加載新的輸入法。

1.自動加載的輸入法的配置

有兩個位置存放輸入法的啓動配置文件,一個用來配置系統的默認輸入法啓動,另一個用來配置用戶私有的輸入法啓動。炎黃中文平臺在啓動的時候,首先尋找用戶的起始目錄,確認是否存在.ims文件,這個文件就是用戶私有的配置文件,若是存在,就按照.ims文件的配置加載輸入法;不存在,就按照炎黃系統的配置文件/usr/local/yh/lib/system.ims加載輸入法。通常狀況,我的的.ims文件都沒有建立,能夠經過Shell或者KDE中的編輯器創建。

配置文件其實是一個文本文件,在每一行裏面,寫有須要啓動的輸入法程序的名稱。

按照行的前後的順序,加載輸入法。下面就是一個配置文件的內容:

$cat/usr/local/yh/lib/system/ims

abc

gbkpy

$

abc是智能ABC輸入的程序名稱,gbkpy則是GBK拼音的輸入法程序。經過上面的設置,在炎黃啓動的時候,就會啓動上面三個默認的輸入法。建議用戶在使用的時候,不要改變系統的設置,而是給本身建立一個輸入法配置文件,這樣就不會干擾其餘用戶的使用。

每一種輸入法都對應一個程序名稱,系統附帶的輸入法程序安裝在/usr/local/yh/bin目錄中,如表2-1所示。

2-1輸入法名稱與程序對應關係表

程序名稱 abc gbkpy  qvwei  zm

輸入法名稱 智能拼音GBK 拼音區位碼 鄭碼

2.動態卸載輸入法

2章紅旗Linux中文環境abc是智能ABC輸入的程序名稱,gbkpy則是GBK拼音的輸入法程序。經過上面的設置,在炎黃啓動的時候,就會啓動上面三個默認的輸入法。建議用戶在使用的時候,不要改變系統的設置,而是給本身建立一個輸入法配置文件,這樣就不會干擾其餘用戶的使用。每一種輸入法都對應一個程序名稱,系統附帶的輸入法程序安裝在/usr/local/yh/bin目錄中,如表2-1所示。表2-1輸入法名稱與程序對應關係表程序名稱abcgbkpyqvweizm輸入法名稱智能拼音GBK拼音區位碼鄭碼2.動態卸載輸入法無論用什麼方法安裝輸入法,均可以在炎黃中文平臺運行的時候,利用熱鍵動態地卸載【(Shift+F8】)。使用卸載功能,首先切換到須要卸載的輸入法。例如,智能ABC對應於熱鍵【Shift+F3】,如今須要卸載它,首先要按熱鍵【Shift+F3】切換到智能ABC輸入法,而後按下熱鍵【Shift+F8】。這個時候在屏幕下部的輸入法狀態條中,就會再次出現英文的提示狀態,正如剛剛啓動炎黃系統的時候同樣。

在安裝中文輸入法之後,默認的英文輸入狀態將會定義在最後一個可用的熱鍵上,例如,安裝了三個輸入法,那麼熱鍵就定義到【Shift+F5】,那麼切換到英文輸入法就是【Shift+F6】。所以,若是安裝了5箇中文輸入法,那麼就不能再使用英文的輸入狀態,由於切換的熱鍵【Shift+F8】恰好對應輸入法卸載熱鍵,會致使中文輸入法被卸載。須要使用英文輸入法,只能利用【Ctrl+Space】或者【Shift+F1】關閉輸入法狀態條。

3.動態裝載輸入法

根據用戶的須要,除了利用配置文件啓動輸入法之外,還能夠在炎黃中文環境啓動之後動態地增長輸入法。若是沒有先啓動炎黃中文環境,輸入法程序將執行出錯。動態加載輸入法,實際上就是在中文環境中,直接執行輸入法程序。

注意:因爲輸入法程序會耗費系統的資源,並且過多的輸入法不會徹底用到,所以建議用戶儘可能只加載必要的輸入法。

2.2KDE中文環境

炎黃中文平臺除了支持Shell方式下的中文顯示和輸入之外,還支持XWindow中的中文顯示和打印。紅旗LinuxXWindow中的KDE環境進行了漢化,方便了中文用戶的使用。

紅旗LinuxXWindow的中文支持採用了外掛式的中文平臺,也正是炎黃中文平臺的一部分。對於中文的顯示,紅旗Linux系統已經內建支持,不須要額外啓動外掛程序,只要在須要輸入的時候,再啓動中文輸入法程序便可。

啓動了KDE環境中文輸入法,外觀和使用都與中文Windows系列相近,桌面環境面板的右邊,有一箇中文輸入的選擇框,上面顯示當前正在使用的輸入法信息。只要使用鼠標,就能夠改變當前輸入法,選擇合適的中文輸入方案。

相對於Shell方式下的中文環境,KDE中的中文處理更加簡便,輸入法的切換也採用鼠標的方式進行,不須要記憶熱鍵,免去了Shell方式下中文輸入法使用的麻煩。

2.2.1簡單介紹

當紅旗Linux正常完成安裝過程之後,進入KDE桌面環境,顯示的面板上有一個方框,裏面標明瞭當前的輸入法狀態。初始的時候,系統處於英文顯示狀態,所以在輸入法狀態中,顯示En,表明當前輸入英文。

2-1所示就是在KDE面板中的輸入法狀態欄,面板的右部的En就是。全部KDE

境中的中文輸入法的切換,只要經過這個狀態欄和鼠標就能夠完成。配合鍵盤的使用,KDE中的炎黃中文環境,也提供了標準的熱鍵,用來切換輸入法,進行適當的功能選擇。

2-1KDE面板中的輸入法狀態欄

若是沒有啓動輸入法程序,那麼在KDE面板上,不會出現輸入法狀態欄。若是須要使用中文輸入,那麼用戶必須手工運行輸入法程序,詳細的方法見下一節。

2.2.2啓動輸入法程序

儘管在KDE系統中,不用額外程序就能夠顯示中文,可是爲了輸入漢字,必須啓動外掛的輸入法程序,由於炎黃中文環境對於KDE的漢化,是採用了外掛的方式,相似早期的漢化Windows平臺,如中文之星、四通利方等等。外掛的漢字平臺具備移植方便,不依賴於版本,能夠運行在任何普通的英文平臺上,在漢化平臺上完成漢化工做等優勢。缺點在於速度慢,穩定性和系統總體組合不是很好。可是目前來講,幾乎全部的中文XWindow環境,都是採用外掛式實現,主要由於XWindow過於龐大,總體的改造仍有待時日,並且外掛的漢字平臺,也能夠知足目前用戶的全部須要,可是完全的漢化XWindow相信在將來還202章紅旗Linux中文環境是會實現的。

炎黃中文環境在KDE桌面上,啓動的輸入法程序是rfinput。在KDE系統的「自動啓動」文件夾(KDE桌面的左邊,有它的快捷方式,點擊鼠標就能夠進入)中,在系統剛剛裝好的時候,就有中文輸入法的快捷方式,能夠保證在KDE桌面啓動以後,自動加載中文輸入法程序。圖2-2所示就是KDE桌面「自動啓動」文件夾的內容。

2-2「自動啓動」文件夾

因爲有「自動啓動」文件夾的設備,通常來講用戶不須要手工啓動中文輸入法,只有在它不工做的時候,才須要手工啓動。在系統中,rpinput程序位於/usr/local/rfinput目錄下,在須要手工啓動這個程序的時候,能夠先啓動KDE下的終端仿真程序,而後在Shell命令行下,輸入/usr/local/rfinput/bin/rfinput,就會完成中文輸入法的安裝。若是系統中已經存在中文輸入法,那麼安裝會報告出錯,若是正常運行,在面板的輸入法狀態欄位置會顯示En

只要運行一次中文輸入法程序,它就會一直存在,直到XWindow系統關閉,或者強制關閉程序。

在保證中文輸入法已經運行成功(注意看面板上是否有輸入法狀態欄)後,就能夠利用KDE進行中文的輸入了。

注意:紅旗LinuxXWindow對於漢字的顯示,不用再額外運行程序。

2.2.3使用中文輸入法

KDE中使用中文輸入法與在Shell中相比,簡單了許多。其大部分工做均可以經過鼠標的點擊完成,配合鍵盤熱鍵使用,更加快速。在本節中,假設中文輸入法程序已經正確啓動,只詳細介紹如何使用KDE中的炎黃中文環境。

1.開啓漢字輸入法

利用鼠標開啓漢字輸入法。只要在面板的輸入法狀態欄上,用左鍵單擊一下,就會彈

出一個菜單,供用戶選擇須要的輸入法類型。圖2-3所示就是彈出的菜單的外觀。

2-3輸入法選擇菜單

在繁體中文中,隨系統提供的中文輸入法總共有3種,分別是:倉頡、註音、九方。「En英語」輸入法對應KDE系統默認的英文輸入,在須要輸入英文的時候使用。

在選中合適的輸入法之後,點擊鼠標左鍵,就會開啓相應的輸入法。除了英語輸入法之外,其餘的每一種中文輸入法,在開啓之後,都有相對應的圖標在面板的輸入法狀態欄顯示,而且會開啓一個輸入條,用來進行輸入漢字。圖2-4所示就是利用鼠標開啓了倉頡輸入法後,顯示的KDE桌面。

2-4啓動倉頡輸入法

屏幕右下角是輸入法狀態條,用戶能夠在這個地方選擇輸入法,也可經過【Ctrl+Shift】來切換輸入法。

2.輸入漢字

要輸入漢字首先須要打開輸入法,參見上面的步驟。在打開中文輸入法之後,按下的鍵盤英文字母,就會被系統解釋成爲中文輸入法的輸入,而後依據輸入法規則,提示候選的漢字,過程相似於Shell方式下的輸入。圖2-5所示就是使用九方輸入法進行輸入的KDE界面。

2-5輸入法使用

在輸入的時候,相似在Shell下面的方法,經過英文輸入字的外碼,而後利用數字鍵選擇合適的漢字,而且經過「—」和「=」切換每一組顯示的漢字。在圖2-5中,左邊的是目前輸入的漢字,右邊的就是符合拼音的候選漢字。

3.輸入法切換

在輸入法使用中,若是還須要使用其餘輸入法,那麼能夠進行輸入法切換。切換輸入法能夠經過鼠標和麪板上的輸入法狀態進行,也能夠利用熱鍵。

經過用鼠標點擊面板上的輸入法狀態欄,按照開啓輸入法同樣的步驟,就能夠選擇須要切換的輸入法。也能夠使用熱鍵【Ctrl+Shift】進行輸入法的切換,每次按下這個熱鍵,輸入法會按照順序進行切換,經過反覆的使用,便能作到全部輸入法之間的切換。

4.關閉輸入法

當再也不須要輸入中文,而轉換到英文輸入時,能夠選擇關閉中文輸入法。炎黃中文系統提供熱鍵【Ctrl+Space】關閉中文輸入法,在按下之後,就會直接切換到英文輸入法,從而關閉了當前的中文輸入法。

若是當前的輸入法是英文輸入法,那麼熱鍵【Ctrl+Space】將把英文輸入法切換到中文輸入法。切換到的中文輸入法類型,就是先前使用的中文輸入法類型。例如原先使用倉頡輸入法,關閉之後,再使用熱鍵【Ctrl+Space】就會再次回到倉頡輸入法。當用戶須要同時輸入中文和英文的時候,利用這個熱鍵,就能夠很好的完成中文和英文共同輸入。

關閉中文輸入法,實際上也就是切換到英文輸入法。所以經過上面的切換輸入法操做也能完成中文輸入法的關閉。例如,能夠直接在面板上的輸入法狀態欄中選擇英文輸入法,也能夠不斷按下【Ctrl+Shift】直到出現英文輸入法爲止。

2.3紅旗Linux上的中文打印機配置

2.3.1配置打印機

RedflagLinuxServer2.0中配置打印機的命令是Printtool,此命令只能在XWindow下使用,或者也能夠用主菜單中的【系統配置】→【打印機】→【打印機配置】來配置打印機。PrintTool是一個方便的配置打印機的程序,其主界面如圖2-6所示。

2-6Pinttool主界面

利用Printtool,用戶能夠添加,編輯和刪除打印機隊列。

1)添加一個新的打印機隊列,能夠選擇Add,如圖2-7所示。

2-7添加打印機

2)而後選擇要增長的打印機類型,能夠使用printtool來配置四種打印隊列類型:LocalPrinter:指鏈接於本地系統並口或串口上打印機的打印隊列。

RemoteUNIXlpdQueue:指能夠經過TCP/IP網絡來訪問的鏈接於非本地系統的打印隊列。

SMB/Windows95/NTPrinter:指能夠經過SMB網絡來訪問的鏈接於非本地系統的打印隊列。

NetWarePrinter:指能夠經過NetWare網絡來訪問的鏈接於非本地系統的打印隊列,在創建此打印隊列以前,必須安裝NCP文件系統。

選擇了相應的打印隊列後,就進入到具體的配置界面,這裏以本地打印機爲例,如圖2-8所示。

2-8編輯本地打印機

其中:

Namesnamel|name2|……):打印機列名稱。能夠指定多個名字,之間用「|」(管道)符號隔開。

SpoolDirectory:這個本地機器上的目錄將用來存放要打印的文件。注意不要讓多個打印隊列共享一個假脫機目錄。

FileLimitinKb0=nolimit):所接受的最大打印做業量,以KB爲單位(1KB=1024bytes)。0表示不施加任何限制。

SuppressHeaders:表示是否每一個打印做業前打印一張起始信息頁,其默認值爲不打印起始信息頁。

InputFilter:過濾器用來將打印文件轉換成打印機能夠處理的格式。選擇Select來選擇最適合您的打印機的過濾器,見圖2-9所示。

2-9配置打印機

從圖2-9中能夠看出,左邊爲打印機的具體類型,右邊爲打印的具體選項,除了配置用以打印圖形和PostScript格式文檔的打印隊列外,您還能夠配置一個用來打印純文本的打印機,僅用來打印純英文的ASCII文本。

PrintingOptions中,其中的主要選項意義爲:

SendEOFafterjobtoejectpage:

此選項選中後,將在一個打印任務完成後,強迫打印機彈出紙張。這是因爲一些打印機若是收不到EOF字符將不打印。若是用戶在每次打印時獲得一張額外的空白頁,應該將此項關閉。

Fixstair-steppingtext?

若是打印後獲得階梯狀的文本,就應該選中這一項,以糾正這一現象。

Fasttextprintingnon-PSprintersonly?

此項在設置非PS打印機時有用。若是用戶只是打印純英文文本文件,能夠將此項選中,這樣能夠提升打印速度;若是用戶要打印含有中文的文本文件,就必定要將此項關閉,以便可以正確地打印。請注意,這隻對非PostScript打印機有效。

添加完打印機隊列後,還須要重起打印守護進程(lpd),這隻須要選擇printtool主界面上的菜單項【lpd】→【restart】便可。用戶還能夠打印測試樣張來檢測打印機是否設置正確。

2.3.2中文打印

RedflagServer2.0中提供了完善的中文打印解決方案,其中採用了中文TrueType字庫,打印效果完美,同時支持簡體中文和繁體中文的QT/KDE應用程序、文本文件和Netscape中的超文本文檔的中文打印。

1.中文文本文件的打印

要打印中文文本文件,首先要將語言環境設置爲簡(繁)體中文,這樣才能正確顯示和打印中文文本文件。在RedflagServer2.0中支持在控制檯下直接打印中文文本文件,其命令格式爲:

lprtext-filename

同時也可在應用程序Kedit中應用打印菜單項便可直接打印簡(繁)中文文本文件。

因爲在RedflagServer2.0中的中文文本打印應用了mpage程序,因此須要在設置打印機屬性的時候不選中FastTextPrinting這一項,這樣才能應用lpr命令直接打印出中文文本文件。具體設置能夠參見打印機設置一節。

注意:若是隻是打印純英文文本文件,能夠在設置打印機時選中FastTextPrinting這一項,這樣能夠提升打印的速度。

2Netscape中的中文超文本文檔打印

Netscape中打印中文超文本文件時,首先要使當前頁面中的中文可以正常顯示,須要在菜單項【查看】→【字符集】中設置與文檔相應的字符集,其中查看BIG5的文檔要選擇「中文繁體(Big5)」一項,而後就能夠用Netscape菜單中的【文件】→【打印】命令打印中文超文本文件。

3.基於QT/KDE的應用程序的中文打印

RedflagServer2.0中,幾乎全部的QT/KDE應用程序都可實現簡(繁)體中文打印,而不須要額外的設置。只要在應用程序中的中文可以被正確顯示,就能夠在基於QT的應用程序中正確的打印。

注意:在kmai中,若是選擇安裝的是中文簡體版,則只能打印簡體中文的emial,若是要打印繁體中文的emial,請先將語言環境換爲繁體中文。

2.4語言切換

紅旗Linux服務器版支持三種文字,分別是:簡體中文、繁體中文和英文,用戶只要根據本身須要,在X窗口環境下,在桌面上點擊Language上面的圖標,或者在系統菜單中選【系統配置】→【KDE桌面】→【桌面】→【語言】,便可進行地區設置。如圖2-10所示。

2-10語言選擇

在切換顯示語言以後,須要從新啓動XWindow,不然不能進行完全的語言切換,會出現亂碼。若是您以圖形方式登陸,須要退出X窗口,從新登陸一次。若是您以文本方式登陸,須要退出X窗口,並退出系統,從新登陸,再啓動XWindow

習題

1.動態卸載輸入法的熱鍵是:()

A.【Shift+F3B.【Shift+F8C.【Shift+F5D.【Shift+F10

2.輸入法切換的熱鍵是:()

A.【Ctrl+ShiftB.【Ctrl+AltC.【Ctrl+F1D.【Ctrl+Space

3章經常使用Linux命令介紹

本章內容提要

Linux下的很大一部分工做就是一個一個的輸入命令。要使用Linux,就必須使用其中的命令。必須按照必定的規則來寫命令。關於命令如何輸入的正式說明稱爲命令的語法。本章將介紹Linux中常見的命令及如何使用它們。經過本章的學習,用戶能夠了解一些命令的使用,並在從此使用中經過閱讀聯機手冊掌握更多的命令。

本章重點內容

☆經常使用的Linux命令如atcatcd

☆要求掌握書中列出的命令

3.1做業控制命令

常見的做業控制命令有以下幾種:

1at,batch,atq,atrm

at,batch,atq,atrm:安排,檢查,刪除隊列中的工做。

at[-V][-q隊列][-f文件名][-mlbv]時間

at-c做業[做業]

atq[-V][-q隊列][-v]

atrm[-V]做業[做業]

batch[-V][-q隊列][-f文件名][-mv][時間]

at:在設定時間執行做業。

atq:列出用戶排在隊列中的做業,若是是超級用戶,就列出隊列中全部的做業。

atrm:刪除隊列中的做業。

batch:用低優先級運行做業,只要系統的loadavg(系統平均負載)<1.5(或者在atrun中設定的值),它就可開始執行做業。

at超級用戶能夠在任何狀況下使用at系列的命令。通常用戶使用at系列命令的權限由文件/etc/atallow/etc/atdeny控制。若是/etc/atallow存在,則只有列在這個文件中的用戶才能使用at系列命令。若是/etc/atallow文件不存在,則檢查文件/etc/atdeny這個文件。只要不列在這個文件中的用戶均可以使用at系列的命令。默認的配置是文件/etc/atdeny是一個空文件,這代表全部的用戶均可以使用a系列的命令。

例如:在兩天後上午8點執行文件workfile中的做業,可以使用以下命令。

$at-fworkfile8am+2days

2crontab命令

crontab——操做每一個用戶的守護程序和執行的時間表。

crontabfile[-uuser]——用指定的文件替代目前的crontab

crontab-[-uuser]——用標準輸入替代目前的crontab

crontab-l[user]——列出用戶目前的crontab

crontab-e[user]——編輯用戶目前的crontab

crontab-d[user]——刪除用戶目前的crontab

crontab-cdir——指定crontab的目錄。

crontab文件的格式:MHDmdcmd

M:分鐘(0-59

H:小時(0-23

D:天(1-31

m:月份(1-12

d:一星期內的天(0-60爲星期天)

cmd:要運行的程序,程序被送入shell執行,這個shell只有USERHOMESHELL三個環境變量。

例如:列出用戶目前的crontab

$crontab-l

$MINHOURDAYMOUTHDAYOFWEEKCOMMAND

86***clear

$

3.2顯示命令

1cat命令

cat——鏈接文件並打印到標準輸出。cat經常用來顯示文件,相似於DOS下的命令TYPE

例如:顯示文件file的內容,便可採用以下命令。

$catfile

file1file2鏈接起來輸出到文件file3中,便可採用以下命令。

$catfile1file2>file3

2head命令

head——顯示文件的前幾行。

例如:輸出文件/etc/crontab的第一行

$head-n1/etc/crontab

SHELL=/bin/bash

$

3less命令

less——相對於more命令,用來按頁顯示文件。

例如:顯示文件test

31紅旗Linux用戶基礎教程

lesttest

4more命令

more——逐頁閱讀文本。

more命令十分有用,能夠不須要修改就在屏幕上顯示文件內容。

鍵入:morename_of_text_file

使用q命令退出。

3.3文件和目錄操做命令

1cd命令

cd——改變目錄,能處理絕對和相對路徑。

例:假如當前在根目錄中,想進入/etc子目錄。鍵入(相對目錄):

$cd/etc/

若是想進入/usr/bin目錄,鍵入(絕對目錄):

$cd/usr/bin/

此命令有一些實用選項:

$cd回到父目錄(注意cd和之間有空格)

$cd回到目前目錄了。

$cd~cd~到達我的目錄

2ls命令

ls命令——列出當前目錄下的文件,經常使用的兩個選項是:-a顯示隱文件和-l顯示長文件名,將加目錄名字到ls命令後。例如:

ls-al/usr/X11R6/bin

鍵入:

$manls

將顯示全部ls命令選項。

此外,ls命令還能夠使結果顯示某種顏色,用戶能夠直接ls-F--color;也能夠試試編輯/ect/bashrc/home/下的bashrc,加入一行:aliasls="ls--color-f-N"編譯以後從新運行bash會當即生效,若是加在/etc/bash則對全部使用bashshell的用戶有效。若是使用其餘的shell,則q去找對應的配置文件。注意不是/etc/aliass文件,那是sendmail的別置文件。

其中顏色的含義以下:

藍色——目錄

綠色——可執行文件

紅色——壓縮文件

淺藍色——連接文件

灰色——其餘文件

3file命令

file——探測文件和目錄類型。

$fileboot

boot:directory

4find命令

find——搜索目錄中文件。

find[路徑][匹配表達式]

例如:在整個文件系統中查找名字爲「passwd」的文件或目錄,可採用以下命令。

$find./-name"passwd"-print

./etc/passwd

./etc/pamd/passwd

./etc/uucp/passwd

./home/ftp/etc/passwd

./usr/bin/passwd

./usr/doc/uucp-1.06.1/sample/passwd

5wc命令

wc——統計一個文件中的字節數,單詞數,行數。

6chmod命令

chmod——改變文件保護權限。

文件保護控制用戶對文件的訪問權,有三個安全級別:全部者級別,組訪問級別,其餘用戶訪問級別。在這三個級別中,又有三種權限:讀(r),寫(w),執行(x)。(用戶能夠使用ls-lg命令來觀看某一文件的所屬的group)。

對於文件來講,讀權限意味着能夠看文件的內容,寫權限能夠修改或刪除文件,執行權限則能夠執行它。對於目錄來講,讀權限意味能夠查看目錄下的內容,寫權限意味着能夠在目錄中創建新文件,並能夠從目錄中刪除文件,執行權限意味着能夠從一個目錄轉到另外一個目錄。

保護權限

格式爲[ugoa][[+-=][rwxXstugo]][]"ugoa"。控制哪些用戶對該文件權限將會改變:

u),文件的全部者;(g),與文件全部者同組的用戶;(0),其它組的用戶;(a),全部用戶。操做符「+」使得用戶權限被追加到每一個目錄文件。操做符「-」使得用戶權限被取消,操做符「=」使用戶只有這些權限。"rwxXstugo"選擇新的屬性:r),讀權限;(w),寫權限;

x),執行權限(和對目錄的訪問權);(X),只有目標文件對某些用戶是可執行的或該目標文件是目錄時才追加X屬性;(s),同時設定用戶或組ID;(t),保存程序的文本到交換設備上;(u),目標文件屬主;(g),目標文件屬主所在的組;(o),其餘用戶。若是數字來表示屬性,則(0),沒有權限;(1),執行權;(2),讀權;(4),寫權,而後相加,因此數字屬性的格式應爲307的八進制數,其順序是(u)、(g)、(o)文件名:以空格分開的要改變權限的文件列表,支持通配符。

例:使全部用戶對文件testfile有執行權,輸入以下命令:

$chmoda+xtestfile

使全部用戶對文件testfile有讀權,輸入以下命令:

$chmod222testfile

7chown命令

chown——改變文件的屬主和組。

用戶:能夠是用戶名或用戶ID

組:能夠是組名或組的ID

文件名:以空格分開的要改變權限的文件列表,支持通配符。

例如:將文件file1的屬主改成host組的test,可用以下命令:

$chownhost:testfile1

8clear命令

clear——清除屏幕(像DOS中的cls)。

例如:清除屏幕,提示符將被移到左上角。

$clear

9touch命令

touch——改變文件的時間參數。

touch將會改變文件的訪問時間,修改時間設置爲系統的當前時間,若是該文件不存在

則創建一個空的新文件。

10ln命令

ln——在文件間創建鏈接ln[參數]源文件[目標文件]

在目錄間創建鏈接ln[參數]源文件[目錄]

注意:對鏈接文件作改變屬性是沒有意義的,由於只有它們鏈接到的文件纔是文件的真正屬性。

例如:將文件sourcefile鏈接到文件testfile

$ln-ssourcefiletestfile

11mv命令

mv——將文件更名。

mv[參數]源文件目標文件

mv[參數]源文件列表(支持通配符)目標文件

例如:

$mv-vsourcefiledestfile

sourcefile->destfile

$

12cp命令

cp——拷貝文件。

用法:

cp[options]源文件目標文件

選項:

-f--force:強行覆蓋已存在的目標文件

-i-interactive:在強行覆蓋已存在的目標文件時給出提示。

-R--recursive:整個目錄拷貝。

例如:拷貝文件sourcefile到文件destfile

cpsourcefiledestfile

13dd命令

dd——拷貝一個文件(並能夠同時轉化它)。

例如:將文件sourcefile拷貝到文件destfile

$ddif=sourcefileof=destfile

0+1recordsin

0+1recordsout

$

14rm命令

rm——刪除文件。

用法:

rmfile_name

rm命令接受通配符。經常使用選項是:-i在刪除前詢問肯定和-r刪除一個目錄全部文件。

例如:刪除當前目錄下html子目錄的全部html文件。

$rm-i/html/*Html

警告:當文件被刪除後,不能恢復。

15mountumount命令

mount安裝一個文件系統。

Umount卸下一個文件系統。

例如:若是您想列出目前系統的文件系統

$mount

/dev/sda1on/typeext2rw

noneon/proctypeprocrw

/dev/hda2on/INSTALLtypeext2rw

$

3.4網絡命令

1ping命令

ping命令——肯定網絡上機器是否可到達和到達速率。

用法:ping選項IP地址/域名

例如:

$pingwww.263.net

Pingingwww.263.net[202.96.44.130]with32bytesofdata:

Replyfrom202.96.44.130:bytes=32time=30msTTL=252

Replyfrom202.96.44.130:bytes=32time=20msTTL=252

Replyfrom202.96.44.130:bytes=32time=50msTTL=252

Replyfrom202.96.44.130:bytes=32time=20msTTL=252

Pingstatisticsfor202.96.44.130:

Packets:Sent=4,Received=4,Lost=00%loss,

Approximateroundtriptimesinmilli-seconds:

Minimum=20ms,Maximum=50ms,Average=30ms

ping命令將大小固定的數據包發送給對方,並要求對方返回。經過數據判斷是否返回以及返回時間,用戶能夠肯定對方是否可達,是否開機,以及網絡延時時間。

2telnet命令

telnet命令——遠程登陸命令,此命令使得用戶能像使用本地機器同樣訪問網上機器(必須有除root外的帳號)。有許多網絡服務都是經過telnet命令來提供的,如BBSachive等。

用法:telnet選項IP/機器名:端口號

例如:若是想經過telnet鏈接「水木清華」BBS站,鍵入以下內容:

$telnetsmth.org

這時候咱們按要求輸入「BBS」之後能夠看見如圖3-1所示的進站畫面:

輸入相應的帳號和密碼之後,進入BBS站,便可看到當前上站人數列表,如圖3-1所示。

3-1進站畫面

固然,也能夠經過直接鍵入telnet命令,出現telnet提示符後,再使用open命令來實現鏈接。除了open命令外,還有許多命令,請使用help命令來查詢。

telnet下也能使用vi

TELNET/VI被設計爲能夠經過遠程終端機使用。不少終端機與控制檯不一樣,沒有方向及編輯鍵。VI控制狀態下能夠用普通鍵盤移動光標,如h,j,k,l,分別對應左,下,上,右,Ctrl-fCtrl-b用來翻頁,更多功能能夠查看VI使用指南。另外Win9X帶的TELNET客戶軟件功能太弱,建議使用NETTERM,光標位置就不會出錯了。

3ftp命令

ftp命令——文件傳輸命令,使用此命令能夠傳輸文件。

用法:ftp選項IP/機器名

例如:若是想到北京大學計算機系下載軟件的話,輸入下面的內容:

$ftp://ftp.cs.pku.edu.cn

鏈接後,要求輸入用戶名和密碼;大多數ftp站點都接收用戶名:ftpanonymous,密碼請使用本身的E-mail地址。

telnet命令同樣,ftp也提供了一個命令行環境,其中的命令很類似,在ftp環境中用help命令能夠隨時查到幫助。

Linux系統中,命令ncftpwget是兩個更加卓越的ftp客戶端軟件,ncftpftp加強命令,而wget是鏡像站點的好助手。

3.5其餘實用命令

1aliasunalias命令

aliasunalias——設置別名。

3-2所示是一個使用aliasunalias的例子。

3-2例子

2date命令

date——打印或設置系統日期和時間。

date[-u][-ddatestr][-sdatestr][--utc][--universal][--date=datestr][--set=datestr][--help][--version][+FORMAT][MMDDhhmm[[CC]YY][.ss]]+FORMAT:控制如何顯示日期。

指令:%:%

n:新行

t:TAB

時間域

%H:小時(00。。23

%l:小時(00。。12

%k:小時(0。。23

%l:小時(1。。12

%M:小時(00。。59

%pAM或者PM

%r12小時(hh:mm:ss[AP]M

%s:從1970-01-0100:00:00UTC開始的時間

%S:秒(00。。59

%T:時間表示(%H:%M:%S

%Z:時區(如EDT)。如沒有指定時區則不顯示。

日期域:

%a:縮寫形式的星期名(Sun..Sat

%A:星期名(Sunday..Saturday

%b:縮寫形式的月名(Jan..Dec

%B:月名(January..December

%c:日期和時間(SatNov0:02:33EST1989

%d:每月的第幾天(01..31

%D:日期(mm/dd/yy

%h:等同於%b

%j:一年的第幾天(001..366

%m:月份(01..12

%U:一年中的第幾個星期,星期天爲星期的第一天(00:53

%w:每一個星期的第幾天,(0..6)爲星期天

39紅旗Linux用戶基礎教程

%W:一年中的第幾個星期,星期一爲星期的第一天(00:53

%x:日期(mm/dd/yy

%y:年份的後兩個數字(00..99

%Y:年份(1970..

[MMDDhhmm[[CC]YY][.ss]]

MM:月份

DD:日期

hh:小時

mm:分鐘

CC:年份的前兩位(可選項)

YY:年份的後兩位(可選項)

ss:秒(可選項)

只有超級用戶纔有權限設置系統時間(啓動時在CMOS中讀出)。

-ddatestr--datedates:顯示datestr中指定的日期和時間。

-sdatestr--setdatestr:設定datestr中指定的日期和時間。

-u--universal:顯示或設定格林威治時間(默認爲本地時間)

--help:在標準輸出上輸出幫助信息並退出。

--version:在標準輸出上輸出版本信息並退出。

例如:

顯示當前的時間:

$date-u--date'2daysago'

TueAug2410:20:39UTC1999

顯示月份

$date'+%B%d'

August24

3cal命令

cal——顯示日曆。

輸入的命令行及結果如圖3-4所示。

3-4輸入cal命令後所得結果

4bc命令

bc——Linux下的計算器。

5df命令

df——報告磁盤剩餘空間。

例如:

$df-a-T

Filesystem Type 1 k –blocks Used Available Use% Mounted on

/dev/sda1 ext2 1020541 846524 121288 87%/

none proc 0 0 0 -/proc

none devpts 0 0 0 -/dev/pts

/dev/had2 ext2 114914392792116185185%/work

6du命令

du——報告磁盤空間使用狀況。

例如:

$du

366.sr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome/html

243./usr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome/sgml

53./usr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome/tmpl

729./usr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome

$

7grep命令

grepegrepfgrep——在文件中搜索匹配的行並輸出。

例如:在文件中/etc/passwd查找含有root的行。

$grep root/etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:

$

8gzip命令

gzipgunzipzcat——壓縮或展開文件,詳細狀況請用mangzip查看。

$gzip -V sourcefile

sourcefile:15.2%--replacedwithsourcefile

9passwd命令

passwd——設置用戶的密碼。

用戶能夠使用passwd這個命令來更改本身的登陸密碼,通常用戶只能更改本身的密碼,超級用戶才能更改其餘用戶的密碼,超級用戶和組的管理者能更改組的密碼,還能夠用這個命令來更改用戶的其餘信息,如用戶的全名,用戶的登陸Shell,用戶的密碼失效時間間隔等等。

例如:

$passwd

New UNIX password:

Re-enternew password:

password changed

$

10ps命令

ps——命令羅列運行進程。

在屏幕中顯示分爲兩列:命令列和PID列。命令列顯示進程名字,PID列顯示進程號(用kill命令中止運行程序將會使用此進程號)。

用法:ps options

參數選項

u能提供更多信息

ax能辯識不屬於當前用戶的進程(例如在開啓是就運行的程序)。

11last命令

last——顯示過去多少個用戶或終端登陸到本機器。

last[-數目][-f文件][-ttty][-h節點名][-iIP地址][-l][-y][用戶名]

例如:顯示過去3次用戶root登陸的狀況。

last -3 root

root 0 Wed Aug 25 14:07 stilll ogged in

root 0 Wed Aug 25 14:02 -14:0300:00

root :0 WedAug 25 14:01-14:0100:00

wtmP begins Tue Aug1717:27:411999

$

12who命令

who——查看其餘登陸的用戶。

輸入的命令及執行結果如圖3-5所示。

3-5who命令及執行結果

13man命令

man——顯示具備必定格式的在線手冊。

man命令對於新手和老手來講都是有用的工具。編程人員能夠用此命令參看c函數。

下面是經常使用的紅旗Linux手冊的分類:

1)用戶命令。

2)系統調用。

3)庫函數。

4)設備和設備驅動程序。

5)文件格式。

6)遊戲。

7)有用的雜類,如宏命令包等。

8)系統維護和管理命令。

14m系列命令

m系列——在Linux系統下訪問DOS磁盤的命令。

mcd——進入DOS子目錄。

mcopy——拷貝DOS文件。

mdel——刪除DOS文件。

mdeltree——刪除DOS目錄。

mdir——參看DOS目錄內容。

mformat——格式化DOS磁盤。

mlabel——給DOS磁盤加捲標。

mmd——建立DOS目錄。

mmove——移動DOS下的文件。

mtype——顯示DOS下的文件。

mren——將DOS下的文件更名。

15mkdirrmdir命令

mkdir命令是建立一個目錄,rmdir是刪除一個空目錄。

語法:

mkdir directory_name

rmdir direcotry_name

rmdir經常用rm-rf命令替代,由於此命令能刪除未空的目錄。當心使用此命令。

16reboot命令

reboot——從新啓動系統。

17su命令

su——使普通用戶以root賬號登陸。

鍵入su命令,shell要求root密碼。鍵入密碼並擊回車鍵:現進入root賬號。鍵入exit(或按【Ctrl+D】)回到之前的普通用戶。

18tar命令

tar命令——建立和編輯UNIX歸檔文件。

例如:將rep/目錄(和其子目錄)下文件歸檔

$tar –c rep />rep.tar

得到的存檔能壓縮(使用gzipbzip2),例如:鍵入:

$gzip rep.tar

要展開一個存檔文件,鍵入:

$tar –xvf archive.tar

要解開例子中歸檔文件,應鍵入;

tar –xvf rep.tar

tar –xvfz rep.tar.gz(若是存檔使用gzip壓縮)

要發現全部的tar命令參數,鍵入:

man tar

19history命令

histoty——顯示歷史命令記錄。

在屏幕顯示歷史命令記錄,而且每條歷史命令都有一個記錄號。要執行一個命令,鍵入:

!command_number

會從新執行這條指令。

命令!!,將從新執行上次命令。

20kill命令

kill——停止一個進程。

kill[-s信號|p][-a]進程號

kill-l[信號]

kill向指定的進程發出特定的信號,若是沒有指定信號則送出TERM信號,TERM信號將殺死沒有捕捉到這個信號的進程。對於某些可能要使用KILL9)信號強制殺死。

例如:

$ps

PIDTTYTIMECMD

520pts/000:00:00bash

523pts/000:00:00ps

$

21which命令

which——顯示命令的全路徑。

22csh命令

csh——啓動CShell

習題

1.爲了實現「在二天後上午8點執行文件workfile中的做業」這項任務,須要():

A.超級用戶執行at$at –f workfile 8am+2days

B.通常用戶執行at$at –fworkfile 8am+2days

C.超級用戶執行at$at –fworkfile 2+8amdays

D.通常用戶執行at$at-fworkfile 2+8amdays

2.到達我的目錄的命令是():

Acd..

Bcd~

Ccd/

Dcd.

3.在文件中搜索匹配的行並輸出的命令是():

Agrep

Begrep

Cless

Dfgrep

4ls命令——列出當前目錄下的文件,顯示隱文件的參數是():

Al

Ba

Ccolor

Dx

4Shell簡介

本章內容提要

紅要求瞭解Shell的概念,學會操做進程,掌握基本的旗BourneShellscript語句。紅旗Linux系統的Shell做爲操做系統的外殼,爲用戶提L供使用操做系統的接口。它是命令語言、命令解釋程序及程i序設計語言的統稱。Shell是用戶和Linux內核之間的接口程n序,若是把Linux內核想像成一個球體的中心,Shell就是圍繞內核的外層。當從Shell或其餘程序向Linux傳遞命令時,內核會作出相應的反應。

本章重點內容

Shell的基本概念

☆進程及其操做

☆輸入輸出重定向

BourneShellscript編程基礎

4.1Shell的基本概念

Shell是一個命令語言解釋器,它擁有本身內建的Shell命令集,Shell也能被系統中其餘應用程序調用。用戶在提示符下輸入的命令都由Shell解釋後傳給Linux核心。

有一些命令,好比改變工做目錄命令cd,是包含在Shell內部的。還有一些命令,例如拷貝命令cp和移動命令rm,是存在於文件系統中某個目錄下的單獨的程序。對用戶而言,沒必要關心一個命令是創建在Shell內部仍是一個單獨的程序。

Shell首先檢查命令是不是內部命令,若不是再檢查是不是一個應用程序(這裏的應用程序能夠是Linux自己的實用程序,如lsrm,也能夠是購買的商業程序,如xv,或者是自由軟件,如emacs)。而後Shell在搜索路徑裏尋找這些應用程序(搜索路徑就是一個能找到可執行程序的目錄列表)。若是鍵入的命令不是一個內部命令而且在路徑裏沒有找到這個可執行文件,將會顯示一條錯誤信息。若是可以成功找到命令,該內部命令或應用程序將被分解爲系統調用並傳給Linux內核。

Shell的另外一個重要特性是它自身就是一個解釋型的程序設計語言,Shell程序設計語言支持絕大多數在高級語言中能見到的程序元素,如函數、變量、數組和程序控制結構。Shell

編程語言簡單易學,任何在提示符中能鍵入的命令都能放到一個可執行的Shell程序中。

當普通用戶成功登陸後,系統將執行一個稱爲Shell的程序。正是Shell進程提供了命令行提示符。做爲默認值,對普通用戶用「$」做提示符,對超級用戶(root)用「#」做提示符。

一旦出現了Shell提示符,就能夠鍵入命令名稱及命令所須要的參數。Shell將執行這些命令。若是一條命令花費了很長的時間來運行,或者在屏幕上產生了大量的輸出,能夠在鍵盤上按【Ctrl+c】發出中斷信號來中斷它(在正常結束以前,停止它的執行)。

當用戶準備結束登陸對話進程時,能夠鍵入logout命令、exit命令或文件結束符(EOF)(按【Ctrl+d】實現),結束登陸。

下面能夠來看一下Shell是如何工做的。

注意:cal是系統中一個命令的名字,用於顯示日曆。12001cal的兩個參數。該命令的含義是顯示20011月的日曆。在接收到這個命令後,shell便執行它。執行完以後又返回到命令接收狀態。

在例子中,#爲系統提示符,該提示符表示用戶於超級用戶的身份登錄的。

make是一個常常被用來編譯大程序的程序,它以參數做爲目標來進行編譯。在「makework」中,make編譯的目標是work。由於make找不到以work爲名字的目標,它便給出錯誤信息表示運行失敗,用戶又回到系統提示符下。

另外,用戶鍵入有關命令行後,若是Shell找不到以其中的命令名爲名字的程序,就會給出錯誤信息。例如,若是用戶鍵入:

$myprog

bash:myprog:command not found

$

此時能夠看到,用戶獲得了一個沒有找到該命令的錯誤信息。,這樣的錯誤信息通常出如今用戶輸入錯誤命令時。

Shell的種類

Linux中的Shell有多種類型,其中最經常使用的幾種是BourneShellsh)、CShellcsh)和KornShellksh)。三種Shell各有優缺點。BourneShellUNIX最初使用的Shell,而且在每種UNIX上均可以使用。BourneShellShell編程方面至關優秀,但在處理與用戶的交互方面作得不如其餘幾種Shell。紅旗Linux操做系統默認的ShellBourneAgainShell,它是BourneShell的擴展,簡稱Bash,與BourneShell徹底向後兼容,而且在BourneShell的基礎上增長、加強了不少特性。Bash放在/bin/bash中,它有許多特點,能夠提供如命令補全、令編輯和命令歷史表等功能,它還包含了不少CShellKornShell中的優勢,有靈活和強大的編程接口,同時又有很友好的用戶界面。

CShell是一種比BourneShell更適於編程的Shell,它的語法與C語言很類似。Linux爲喜歡使用CShell的人提供了TcshTcshCShell的一個擴展版本。Tcsh包括命令行編輯、可編程單詞補全、拼寫校訂、歷史命令替換、做業控制和相似C語言的語法,它不只和BashShell是提示符兼容,並且還提供比BashShell更多的提示符參數。

KornShell集合了CShellBourneShell的優勢而且和BourneShell徹底兼容。Linux系統提供了pdkshksh的擴展),它支持任務控制,能夠在命令行上掛起、後臺執行、喚醒或終止程序。

Linux中還包括了一些流行的Shellashzsh等。每一個Shell都有它的用途,有些Shell是有專利的,有些能從Internet網上或其餘來源得到。要決定使用哪一個Shell,只需讀一下各類Shell的聯機幫助,並試用一下。

用戶在登陸到Linux時由/etc/passwd文件來決定要使用哪一個Shell。例如:

#fgrep lisa/etc/passwd

lisa:x:500:500:User:/home/lisa:/bin/bash

Shell被列在每行的末尾(/bin/bash)。

4.2進程

一般從進程的角度來理解UNIXLinux系統的多任務的概念。進程或任務,是運行之中的程序的一個實例(instance),亦即程序的一次運行過程,是一個動態的概念。

用戶註冊的Shell就是一個進程。在提示符$下運行一條命令時,執行中的命令也是一個進程。

4.2.1分時

CPU機器,在同一時刻只能有一個進程在運行。多CPU機器,同一時刻一個CPU也只能運行一個進程。

多進程的同時運行是經過優先級管理機制,給每個進程分配不一樣的時間片,分時運行,使每個程序的執行者都感受系統是在爲本身服務。

4.2.2前臺進程和後臺進程

用戶在Shell下運行命令時,在該進程結束前不能執行其餘命令的進程執行方式,是前臺進程。而進程未結束前就能夠經過Shell運行別的命令的進程是後臺進程Shell提供操做符&,使用戶就能夠在後臺運行命令。在命令行尾附加&便可。

$cat/etc/passwd&

用戶一般能夠重定向命令的輸入和輸出。從而使程序的輸出不會干擾本身的對話期。

$cat/etc/passwd>file.copy&

用戶也能夠重定向標準錯誤輸出,以屏蔽錯誤信息。

$cat/etc/passwd>file.copy2>error.out&

用戶在對話期間建立的後臺進程,在用戶簽退後即被撤消,由於它們與用戶的註冊標識相聯。UNIX提供了命令nohap來使後臺進程在用戶簽退後仍然能夠運行。將nohap放在命令行以前便可。

$nohapcat/etc/passwd&

在管道線使用nohap時,必須對每個管道元素使用nohap

4.2.3父進程和子進程

一個進程啓動另外一個進程後,被啓動進程是子進程,原進程是啓動進程的父進程。一個父進程能夠有多個子進程,而一個子進程只有一個父進程。父進程消亡時子進程通常也消亡,用戶能夠使子進程繼續存在,該子進程的父進程就變成了原父進程的父進程。每個進程都有父進程。進程號是1的爲最原始進程。

4.2.4進程狀態命令ps

用戶能夠經過命令psprocessstatus,進程狀態)檢查機器中當前存活的進程。不加參數時,顯示發出該命令用戶的登陸對話期內全部正在運行的進程。其中參數以下所示。

-f:顯示進程的所有信息。

-a:顯示所有用戶當前活動的進程。

-e:顯示當前系統正在運行的所有進程。

-t終端名:顯示對應終端的進程。

-u用戶名:顯示某用戶的進程。

一般-ef-af-t使用較多。

顯示信息以下:

UID:用戶名;PID進程號。

PPID:父進程號;C進程最近所耗的CPU資源。

STIME:進程開始時間TTY啓動進程的終端設備。

TIME:進程總共佔用CPU的時間。

COMMAND:進程名。

4.2.5殺死進程

命令kill終止本身所擁有進程的執行,下面的幾個例子及其說明闡述了此命令的做用。

$kill 435

向進程號是435的進程發送信號15,使其終止,有可能不起做用;

$kill -9 362

強制終止362號進程;

$kill0

向一個進程組的所有進程發出終止信號;

ps-df

4.3輸入輸出重定向

4.3.1標準輸入與輸出

執行一個Shell命令行時一般會自動打開三個標準文件,即標準輸入文件(stdin),一般對應終端的鍵盤;標準輸出文件(stdout)和標準錯誤輸出文件(stderr),這兩個文件都對應終端的屏幕。進程將從標準輸入文件中獲得輸入數據,將正常輸出數據輸出到標準輸出文件,而將錯誤信息送到標準錯誤文件中。

下面以cat命令爲例,cat命令的功能是從命令行給出的文件中讀取數據,並將這些數據直接送到標準輸出。若使用以下命令:

$catconfig

將會把文件config的內容依次顯示到屏幕上。可是,若是cat的命令行中沒有參數,它就會從標準輸入中讀取數據,並將其送到標準輸出。例如:

$cat

Hello world

Hello world

Bye

Bye

$

用戶輸入的每一行都馬上被cat命令輸出到屏幕上。

另外一個例子,命令sort按行讀入文件正文(當命令行中沒有給出文件名時,表示從標準輸入讀入),將其排序,並將結果送到標準輸出。下面的例子是從標準輸入讀入一個採購單,並將其排序,假設文件爲temp

$sorttemp

輸出:apples

apples

bananas

bananas

carrots

carrots

這時用戶可在屏幕上獲得了已排序的採購單。

直接使用標準輸入/輸出文件存在如下問題:

1)輸入數據從終端輸入時,用戶輸入的數據只能用一次。下次再想用這些數據時就須要從新輸入。並且在終端上輸入時,若輸入有誤修改起來不是很方便。

2)輸出到終端屏幕上的信息只能看不能動。用戶沒法對此輸出做更多處理,如將輸出做爲另外一命令的輸入進行進一步的處理等。

爲了解決上述問題,Linux系統爲輸入、輸出的傳送引入了另外兩種機制,即輸入/輸出重定向和管道。

4.3.2輸入重定向

輸入重定向是指把命令(或可執行程序)的標準輸入重定向到指定的文件中。也就是說,輸入能夠不來自鍵盤,而來自一個指定的文件。因此說,輸入重定向主要用於改變一個命令的輸入源,特別是改變那些須要大量輸入的輸入源。

例如,命令wc統計指定文件包含的行數、單詞數和字符數。若是僅在命令行上鍵入:

$wc

wc將等待用戶告訴它統計什麼,這時Shell就好像死了同樣,從鍵盤鍵入的全部文本都出如今屏幕上,但並無什麼結果,直至按下【Ctrl+d】,wc纔將命令結果寫在屏幕上。

若是給出一個文件名做爲wc命令的參數,以下例所示,wc將返回該文件所包含的行數、單詞數和字符數。

$wc/etc/passwd

20 23 726/etc/passwd

$

另外一種把/etc/passwd文件內容傳給wc命令的方法是重定向wc的輸入。輸入重定向的通常形式爲:命令<文件名。能夠用下面的命令把wc命令的輸入重定向爲/etc/passwd文件:

$wc</etc/passwd

20 23 726

$

另外一種輸入重定向稱爲here文檔,它告訴Shell當前命令的標準輸入來自命令行。here文檔的重定向操做符使用<<。它將一對分隔符(本例中用delim表示)之間的正文重定向輸入給命令。下例將一對分隔符之間的正文做爲wc命令的輸入,統計出正文的行數、單詞數和字符數。

$wc<<this text forms the content

>of the here document,which

>continues until the end of

>text delimter

>delim

4 17 98

在「<<」操做符後面,任何字符均可以做爲正文開始前的分隔符,本例中使用delim做爲分隔符。here文檔的正文一直延續到碰見另外一個分隔符爲止。第二個分隔符應出如今新行的開頭。這時here文檔的正文(不包括開始和結束的分隔符)將從新定向送給命令wc做爲它的標準輸入。

因爲大多數命令都以參數的形式在命令行上指定輸入文件的文件名,因此輸入重定向並不常用。儘管如此,當要使用一個不接受文件名做爲輸入參數的命令,而須要的輸入內容又存在一個文件裏時,就能用輸入重定向解決問題。

4.3.3輸出重定向

輸出重定向是指把命令(或可執行程序)的標準輸出或標準錯誤輸出從新定向到指定文件中。這樣,該命令的輸出就不顯示在屏幕上,而是寫入到指定文件中。

輸出重定向比輸入重定向更經常使用,不少狀況下均可以使用這種功能。例如,若是某個命令的輸出不少,在屏幕上不能徹底顯示,那麼將輸出重定向到一個文件中,而後再用文本編輯器打開這個文件,就能夠查看輸出信息;若是想保存一個命令的輸出,也能夠使用這種方法。還有,輸出重定向能夠用於把一個命令的輸出看成另外一個命令的輸入(還有一種更簡單的方法,就是使用管道,將在下面介紹)。

輸出重定向的通常形式爲:命令>文件名。例如:

$ls>directory.out

$cat directory.out

ch1.doc ch2.doc ch3.doc chim config mail/test/

$

ls命令的輸出保存爲一個名爲directory.out的文件。

注意:若是「>」符號後邊的文件已存在,那麼這個文件將被覆蓋。

爲避免輸出重定向中指定文件只能存放當前命令的輸出重定向的內容,Shell提供了輸出重定向的一種追加手段。輸出追加劇定向與輸出重定向的功能很是類似,區別僅在於輸出追加劇定向的功能是把命令(或可執行程序)的輸出結果追加到指定文件的最後,而該文件原有內容不被破壞。

若是要將一條命令的輸出結果追加到指定文件的後面,能夠使用追加劇定向操做符「>>」。形式爲:命令>>文件名。例如:

$ls*.doc>>directory.out

$cat directory.out

ch1.doc ch2.doc ch3.doc chimp config mail/test/

ch1.docch2.docch3.doc

$

和程序的標準輸出重定向同樣,程序的錯誤輸出也能夠從新定向。使用符號2>(或追加符號2>>)表示對錯誤輸出設備重定向。例以下面的命令:

$ls/usr/tmp2>err.file

可在屏幕上看到程序的正常輸出結果,但又將程序的任何錯誤信息送到文件err.file中,以備未來檢查用。還能夠使用另外一個輸出重定向操做符(&)將標準輸出和錯誤輸出同時送到同一文件中。例如:

$ls/usr/tmp&>output.file

利用重定向將命令組合在一塊兒,可實現系統單個命令不能提供的新功能。例如使用下面的命令序列,即統計了/usr/bin目錄下的文件個數。

$ls/usr/bin>/tmp/dir

$wcw</tmp/dir

459

4.3.4管道

將一個程序或命令的輸出做爲另外一個程序或命令的輸入,有兩種方法,一種是經過一個臨時文件將兩個命令或程序結合在一塊兒,例如上個例子中的/tmp/dir文件將lswc命令聯在一塊兒;另外一種是Linux所提供的管道功能。這種方法比前一種方法更方便。

管道能夠把一系列命令鏈接起來,這意味着第一個命令的輸出會做爲第二個命令的輸入經過管道傳給第二個命令,第二個命令的輸出又會做爲第三個命令的輸入,以此類推。

顯示在屏幕上的是管道行中最後一個命令的輸出(若是命令行中未使用輸出重定向)。經過使用管道符「|」來創建一個管道行。用管道重寫上面的例子:

$ls/usr/bin|wc-w

1789

再如:

$cat sample.txt|grep"High"|wc-l

管道將cat命令(列出一個文件的內容)的輸出送給grep命令。grep命令在輸入裏查找單詞Highgrep命令的輸出則是全部包含單詞High的行,這個輸出又被送給wc命令,wc命令統計出輸入中的行數。假設sample.txt文件的內容以下:

Things to do today:

Low: Go grocery shopping

High:Return movie

High:Clear level3 in Alienvs.Predator

Medium:Pick up clothes from dry cleaner

那麼該管道行的結果是2

4.3.5命令替換

命令替換和重定向有些類似,但區別在於命令替換是將一個命令的輸出做爲另一個命令的參數。經常使用命令格式爲:

command1`command2`

其中,command2的輸出將做爲command1的參數。須要注意的是這裏的`符號,被它括起來的內容將做爲命令執行,執行後的結果做爲command1的參數。例如:

$cd`pwd`

該命令將pwd命令列出的目錄做爲cd命令的參數,結果仍然是停留在當前目錄下。

4.4Bourne Shell script編程基礎

不少操做系統都有很多語言及一些script功能,但不多有像UNIX/LinuxShell這樣靈活強大的script腳本語言能力。

對於系統管理員或程序員來講,熟練地使用Shellscript將對平常工做(系統維護及管理)很是有用,若是您想做一個合格的系統管理員,強烈建議您進一步深刻的瞭解和使用Shell。這部份內容將在《紅旗Linux系統管理教程》一書中詳細講述。

4.4.1分支語句

1if語句

格式

if[variable1=value1]

then

command

command

elif[variable1=value2]

then

command

command

elif[variable1=value3]

then

command

command

fi

例:

echo –n "Do you want to continue:Y or N"

read ANSWER

if[$ANSWER=N-o$ANSWER=n]

then

exit

fi

上例中當用戶的回答爲Nn時程序將結束。

read語句格式以下:

readvar1var2...varn

read將不做變量替換,但會刪除多餘的空格,直到遇到第一個換行符(回車),並將輸入值依次賦值給相應的變量。

2case結構

格式:

casevaluein

pattern1)

command

command;;

pattern2)

command

command;;

...

patternn)

command;

esac

case語句只執行第一個匹配模式

例:使用case語句創建一個菜單選擇Shellscript

#Displayamenu

echo_

echo"1Restore"

echo"2Backup"

echo"3Unload"

echo

#Read and excute the user's selection

echo –n "Enter Choice:"

read CHOICE

case "$CHOICE" in

1)echo "Restore";;

2)echo "Backup";;

3)echo "Unload";;

*)echo "Sorry $CHOICE is not avalid choice

exit1

esac

說明:

1.在上例中,*指默認匹配動做。

2#開頭的語句爲註釋語句。

此外,case模式中也能夠使用邏輯操做,以下所示:

pattern1|pattern2)command

command;;

這樣能夠將上面示例程序中容許用戶輸入數字或每個大寫字母。

case"$CHOICE"in

1|R)echo"Restore";;

2|B)echo"Backup";;

3|U)echo"Unload";;

*)echo "Sorry $CHOICE is not avalid choice

exit1

esac

4.4.2循環控制

1while循環

格式:

whilecommand

do

command

command

command

...

done

例:計算15的平方。

#!/bin/sh

#

#Filename:square.sh

int=1

while[$int-le5]

do

sq=`expr$int\*$int`

echo$sq

int=`expr$int+1`

done

echo"Jobcompleted"

$shsquare.sh

1

4

9

16

25

Jobcompleted

2until循環結構

格式:

untilcommand

do

command

command

....

command

done

示例:

使用until結構計算1-5的平方。

#!/bin/sh

int=1

until[$int-gt5]

do

sq=`expr $int\*$int`

echo$sq

int=`expr $int+1

done

echo"Job completed"

說明:

1expr $int\*$int`計算變量的平方。

2int=`expr $int+1爲賦值語句注意左邊的變量沒有$符號。

3for循環

格式:

for varin arg1 arg2...argn

do

command

....

command

done

1

$for letter in a b c d e; do echo $letter;done

a

b

c

d

e

2:對當前目錄下的全部文件操做:

$for i in *

do

if[-f$i]

then

echo"$i is a file"

elif[-d $i]

echo "$i is a directory"

fi

done

說明:

*表示當前目錄下的全部文件。

3:求命令行上全部整數之和:

#!/bin/sh

sum=0

for INT in $*

do

sum=`expr $sum + $INT`

done

echo $sum

說明:

$*表示全部的錄入參數。

4.4.3從循環中退出

從循環中退出可採用breakcontinue命令。

break:當即退出循環。

continue:忽略本循環中的其餘命令,繼續下一個循環。

Shell編程中有時要用到進行無限循環的技巧,也就是說這種循環一直執行碰到breakcontinue命令。這種無限循環一般是使用truefalse命令開始的。UNIX系統中的true老是返回0值,而false則返回非零值。以下例所示,一直執行到程序執行了break或用戶強行中斷時才結束循環。

while true

do

command

....

command

done

上面所示的循環也能夠使用until false,以下所示。

until false

do

command

....

command

done

在以下的Shellscript中同時使用了continuebreak以及case語句中的正規表達式用法:

#!/bin/sh

#Interactive program to restore,backup,or unload

#a directory

echo "Welcome to the menu driven Archive program"

while true

do

#Display a Menu

echo

echo"Make a Choice from the Menu below"

echo_

echo "1Restore Archive"

echo "2Backup directory"

echo "3Unload directory"

echo "4Quit"

echo

#Read the user's selection

echo –n "Enter Choice:"

read CHOICE

case $CHOICE in

[1-3])echo

#Read and validate the name of the directory

echo –n "What directory do you want?"

read WORKDIR

if [!-d "$WORK DIR"]

then

echo "Sorry, $WORK DIR is not a directory"

continue

fi

#Make the directory the current working directory

cd $WORK DIR;;

#Following is other operation

*)echo "Sorry, $CHOICE is not a valid choice"

continue

esac

case"$CHOICE"in

1)echo"Restoring..."

cpio -i</dev/rmt/0h;;

2)echo "Archiving..."

ls|cpio -o>/dev/rmt/0h;;

3)echo "Unloading..."

ls|cpio -o>/dev/rmt/0h;;

4)echo "Quitting"

break;;

esac

#Check for cpio errors

if [$? -ne 0]

then

echo "A problem has occurred during the process"

if [$CHOICE=3]

then

echo"The directory will not be erased"

fi

echo "Please check the device and try again"

continue

else

if[$CHOICE=3]

then

rm*

fi

fi

done

4.4.4處理不定長的參數

在以上的示例中老是假設命令行參數唯一或其個數固定,或者使用「$*」將整個命令行參數傳遞給Shellscript進行處理。當參數個數不固定而且但願對每一個命令參數進行單獨處理時則須要shift命令。使用shift能夠將命令行位置參數依次移動位置,即$2->$1,$6->$2.在移位以前的第一個位置參數$1在移位後將不在存在。

示例以下:

#!/bin/sh

#

#Filename:shifter

until[$#-eq0]

do

echo"Argument is $1 and `expr$# -1 `argument(s) remain"

shift

done

$shifter 1 2 3 4

Argument is 1 and 3 argument(s) remain

Argument is 2 and 2 argument(s) remain

Argument is 3 and 1 argument(s) remain

Argument is 4 and 0 argument(s) remain

$

使用shift時,每進行一次移位,$#1,使用這一特性能夠用until循環對每一個參數進行處理,以下示例中是一個求整數和的Shellscript

#!/bin/sh

#sumints –a program to suma series of integers

#

if[$# -eq 0]

then

echo "Usage:sumints integer list"

exit1

fi

sum=0

until[$#-eq0]

do

sum=`expr$sum+$1`

shift

done

echo$sum

$sh sumints 324 34 34 12 34

438

$

使用shift的另外一個緣由是BourneShell的位置參數變量爲$1~$9,所以經過位置變量只能訪問前9個參數。但這並不等於在命令行上最多隻能輸入9個參數。此時若是想訪問前9個參數以後的參數,就必須使用shift

另外,shift後可加整數進行一次多個移位,如:

shift3

4.4.5結構化編程:定義函數

同其餘高級語言同樣,Shell也提供了函數功能。函數一般也稱之爲子過程(subroutine),

其定義格式以下:

funcname()

{

command

...

command;#分號

}

定義函數以後,能夠在Shell中對此函數進行調用,使用函數定義能夠將一個複雜的程序分爲多個可管理的程序段,以下所示:

#startprogram

setup()

{commandlist;}

do_data()

{commandlist;}

cleanup()

{commandlist;}

errors()

{commandlist;}

setup

do_data

cleanup

#endprogram

技巧:在對函數命名時最好能使用有含義的名字,即函數名可以比較準確的描述函數所完成的任務。爲了程序的維護方便,請儘量使用註釋。

使用函數的另外一個好處就是能夠在一個程序中的不一樣地方執行相同的命令序列(函數),以下所示:

iscontinue()

{

while true

do

echo-n"Continue?(Y/N)"

read ANSWER

case $ANSWER in

[Yy])return0;;

[Nn])return1;;

*)echo"Answer Y or N";;

esac

done

}

這樣能夠在Shell編程中調用iscontinue,肯定是否繼續執行。

if iscontinue

then

continue

else

break

fi

Shell函數與Shell程序很是類似,但二者有一個很是重要的差異:Shell程序是由子Shell

執行的,而Shell函數則是做爲當前Shell的一部分被執行的,所以在當前Shell中能夠改變

函數的定義。此外在任意Shell(包括交互式的Shell)中都可定義函數,如:

$dir

dir: not found

$dir(){ls-l;}

$dir

total 5875

-rw-r--r--1 hbwork 100 Nov 1023:16doc

-rw-r--r--1 hbwork 2973806 Nov 1023:47 ns40docs.zip

-rw-r--r--1 hbwork 1715011 Nov 1023:30 ns840usr.pdf

-rw-r--r--1 hbwork 1273409 Sep 231998 radsol21b6.tar.Z

-rw-r--r--1 hbwork 7526 Nov 1023:47 wget-log

-rw-r--r --1 hbwork 1748 Nov 1321:51 wget-log.1

$unset dir

$dir(){

>echo"Permission Link Owner Group File_SZ LastAccess FileName"

>echo"-----------------------------------------------------------"

>ls-l$*;

>}

$dir

Permission Link Owne GroupFile_SZ LastAccess FileName

-----------------------------------------------------------

total5875

-rw-r--r--1 hbwork100Nov1023:16doc

-rw-r--r--1 hbwork 100 Nov 1023:16doc

-rw-r--r--1 hbwork 2973806 Nov 1023:47 ns40docs.zip

-rw-r--r--1 hbwork 1715011 Nov 1023:30 ns840usr.pdf

-rw-r--r--1 hbwork 1273409 Sep 231998 radsol21b6.tar.Z

-rw-r--r--1 hbwork 7526 Nov 1023:47 wget-log

-rw-r--r --1 hbwork 1748 Nov 1321:51 wget-log.1

一般狀況下,Shellscript是在子Shell中執行的,所以在此子Shell中對變量所做的修改對父Shell不起做用。點(.)命令使用Shell在不建立子Shell而由當前Shell讀取並執行一個Shellscript,能夠經過這種方式來定義函數及變量。此外點(.)命令最經常使用的功能就是經過讀取.profile來從新配置初始化login變量。以下所示:

$..profile

csh相對於命令的是source命令)。

4.4.6使用And/Or結構進行有條件的命令執行

1And

僅當第一個命令成功時才執行後一個命令,如同在邏輯與表達式中若是前面的結果爲真

時纔有必要繼續運算,不然結果確定爲假。格式:

command1 && command2

例:rm $TEMPDIR/* && echo "File successfully removed"

上例命令等價於如下語句所得效果。

if rm $TEMPDIR/*

then

echo"File successfully removed"

fi

2Or

And相反,只有前一個命令執行出錯時才執行後一條命令

例:rm$TEMPDIR/*||echo"File not removed"

等價於:

ifrm$TEMPDIR/*

then

command

else

echo"File not removed"

fi

3.混合命令條件執行

command1 && command2 && command3

command1,command2成功時才執行command3

command1 && command2 || comamnd3

僅當command1成功,command2失敗時才執行command3

固然能夠根據本身的須要進行多種條件命令的組合,在此很少講述。

4.4.7使用getopts命令讀取Linux格式選項

Linux格式選項指以下格式的命令行參數:

command -options parameters

getopts使用格式:

getopts option_string variable

具體使用方法請參考getopts的在線文檔(mangetopts)。

示例以下:

#newdate

if [$#-lt1]

then

date

else

while getopts mdyDHMSTjJwahr OPTION

do

case$OPTION

in

m)date'+%m';;#MonthofYear

d)date'+%d';;#DayofMonth

y)date'+%y';;#Year

D)date'+%D';;#MM/DD/YY

H)date'+%H';;#Hour

M)date'+%M';;#Minute

S)date'+%S';;#Second

T)date'+%T';;#HH:MM:SS

j)date'+%j';;#dayofyear

J)date'+%y%j';;#5digit Juliandate

w)date'+%w';;#Day of the Week

a)date'+%a';;#Day abbreviation

h)date'+%h';;#Month abbreviation

r)date'+%r';;#AM-PMtime

\?)echo"Invalid option $OPTION";;

esac

done

fi

$newdate -J

94031

$newdate -a -h -d

Mon

Jan

31

$newdate -ahd

Mon

Jan

31

$

示例程序:複製程序

#Syntax: duplicate [-cinteger][-v] filename

#where integer is the number of duplicate copies

#and -v is the verbose option

COPIES=1

VERBOSE=N

while getopts vc:OPTION

do

case $OPTION

in

c)COPIES=$OPTARG;;

v)VERBOSE=Y;;

\?)echo"IllegalOption"

exit1;;

esac

done

if [ $OPTIND -gt $#]

then

echo "No filename specified"

exit2

fi

shift `expr $OPTIND-1`

FILE=$1

COPY=0

while [$COPIES -gt $COPY]

do

COPY=`expr $COPY+1`

cp $FILE ${FILE}${COPY}

if [VERBOSE=Y]

then

echo ${FILE}${COPY}

fi

done

$duplicate -v fileA

fileA1

$duplicate -c 3 -vfileB

fileB1

fileB2

fileB3

習題

1.關於Linuxshell說法錯誤的是:()

A.一個命令語言解釋器

B.編譯型的程序設計語言

C.能執行內部命令

D.能執行外部命令

71紅旗Linux用戶基礎教程

2.超級用戶(root)用_____做默認的提示符。()

A$B#C?D!

3.操做符______使用戶就能夠在後臺運行命令。()

A!B&C%D@

4Linux的最原始進程是____。()

A.進程1B.進程0C.進程2D.進程3

5here文檔的重定向操做符使用______()

A>>B<C<<D>

6.對錯誤輸出設備重定向能夠用操做符_______()

A2>B>C>D<

7.管道符是:()

A||B|C<<D//

8.僅當前一個命令執行出錯時才執行後一條命令,須要採起的操做是:()

Acommand1 && command2

Bcommand1 XOR command2

Ccommand1 || command2

Dcommand1 << command2

9command1 && command2 || comamnd3的含義是:()

A.當command1成功,command2失敗時才執行command3

B.當command1,command2成功時才執行command3

C.當command1,command2失敗時才執行command3

D.當command1失敗,command2成功時才執行command3

5章使用vi

本章內容提要

viUNIX/Linux中最爲流行的編輯器,幾乎能夠說每一個UNIX/Linux系統都提供了vivivisual的縮寫,是一種全屏幕文本編輯器。在虛擬控制檯(console)裏是最好的文本編輯器之一。

本章重點內容

vi的編輯模式切換和指令模式及其切換

vi基本編輯方法

vi中移動光標

vi中進行刪除、複製、放置、修改

vi中的文件指令

☆要求能熟練使用vi

5.1vi的兩種模式

在使用vi以前,應該先了解一下vi的基本概念。vi有兩種工做模式:編輯模式和指令模式。編輯模式用來輸入和編輯文字資料;而指令模式則用來下達一些編排文件、存盤以及退出vi等操做指令。運行vi後,會先進入指令模式,此時輸入的任何字符都被視爲指令。

vi的指令分爲兩種:長指令和短指令。長指令以冒號開頭,鍵入冒號後,屏幕最末尾一行會出現一個冒號提示符,等待用戶鍵入後續的指令,輸入完後回車,vi就會執行該指令。短指令很像是快捷鍵,鍵入短指令時,vi不會給出任何提示,一個指令鍵入完畢後,vi將當即執行該指令。本章中,全部的長指令前都標有冒號,以和短指令相區分。要從編輯模式切換到指令模式能夠使用【Esc】鍵,若是不能判定目前處於什麼模式,能夠多按幾回【Esc】鍵,這時系統會發出很難聽的嗶嗶聲(除非你的機器沒有揚聲器)以肯定已經進入指令模式。

5.2啓動和退出vi

啓動vi的方法很簡單,只需在vi後面加上要編輯的文件名便可。若是該文件存在,vi將打開該文件,反之vi將創建新文件。若是vi後不跟文件名,則打開一個緩存區,可讓用戶寫,可是寫完以後因爲沒有文件名,這個文件始終存不了,意義也就不大。

進入vi後屏幕最左列會出現波浪符號,行首有該符號的行就是空行。進入vi時,系統處於指令模式。要退出vi能夠在指令模式下鍵入指令「:q」,指令「:wq」將當前文件磁盤並退出,這兩個指令都是長指令。

5.3編輯模式

有好幾個指令能夠進入編輯模式,這些指令都是短指令,用戶只需鍵入相應的字符便可。

1.新增(append

a從光標所在位置後面開始添加文本,光標後的文本隨新增文本向後移動。

A從光標所在行最後面的地方開始添加文本。

2.插入(insert

I從光標所在位置前面開始插入文本,光標後的文本隨新增文本向後移動。這項功能和【Insert】鍵功能相同。

I從光標所在行的第一個非空白字符前面開始插入文本。

3.開始(open

o在光標所在行下方新增一行並進入輸入模式。

O在光標所在行上方新增一行並進入輸入模式。

vi是一個全屏幕編輯器,用戶只要實際操做一下就能夠了解這些操做方式。

進入編輯模式後,就能夠使用四個方向鍵、【Ins】、【Del】和【Backspace】等按鍵進行文本編輯了。

5.4vi基本編輯方法

終端和鍵盤有許多種不一樣的類型。與用戶使用的PC不一樣,有些終端沒有特定的功能鍵,如方向鍵等。在PC上使用vi是很簡單的,用戶能夠利用PC鍵盤上的各類功能鍵進行光標的移動、刪除文本等操做。而在某些比較簡陋的終端中,因爲缺乏一些功能鍵,要實現這些操做就必須使用vi提供的各類編輯指令。

雖然多數用戶使用的都是PC,但筆者仍然打算簡要地介紹一下這些指令。這樣作並非徒勞的,由於讀者從此可能會使用不一樣的終端,更重要的是,telnet程序通常模擬終端VT100,而該終端就沒有方向鍵。

如下列出了vi的一些基本編輯指令。

X刪除光標所在字符。

Dd刪除光標所在的行。

R修改光標所在字符,r後接着要修正的字符。

R進入取代狀態,新增文本會覆蓋原先文本,直到按【Esc】鍵回到指令模式爲止。

S刪除光標所在字符,並進入編輯模式。

在指令模式下移動光標的基本指令是hjkl,它們天然能夠用PC上的方向鍵來代替,並且不管在編輯模式和指令模式中均可以。

固然PC鍵盤也有不足之處。有個很好用的指令u能夠恢復被刪除的文本,而U指令則能夠恢復光標所在行的全部改變。這與某些電腦上的【Undo】按鍵功能相同。

5.5vi高級應用

如今,讀者已經瞭解並進行了必定的實踐,vi的基本用法已有必定的掌握,應該能夠順利地利用vi編輯文本了。本節介紹其餘一些能夠進一步簡化操做的指令。

5.5.1移動光標

vi提供了許多移動光標的指令,如下總結了這些指令。

1.基本移動指令

0移動到光標所在列的最前面,對應的功能鍵是【Home】。

$移動到光標所在列的最後面,對應的功能鍵是【End】。

Ctrl-d向下半頁。

Ctrl-f向下一頁,對應的功能鍵是【PageDown】。

Ctrlu向上半頁。

Ctrlb向上一頁,對應的功能鍵是【PageUp】。

2.行間快速移動

H移動到屏幕的第一行。

M移動到屏幕的中間行。

L移動到屏幕的最後一行。

n-減號移動到上一行的第一個非空白字符,前面加上數字能夠指定移動到以上n行。

n+加號移動到下一行的第一個非空白字符,前面加上數字能夠指定移動到如下n行。

nG直接用數字n加上大寫G移動到第n行。

3.行內快速移動

b移動到下個詞的第一個字母。

w移動到上個詞的第一個字母。

e移動到下個詞的最後一個字母。

^移動到光標所在行的第一個非空字符。

fx往右移動到x字符上。

Fx往左移動到x字符上。

tx往右移動到x字符前。

Tx往左移動到x字符前。

;配合ft使用,重複一次。

,配合ft使用,反方向重複一次。

4.全文搜索

/string向後移動到有string的地方,string能夠是正則表達式。

?string往前移動到有string的地方。

n配合/?使用,重複一次。

N配合/?使用,反方向重複一次。

5.句間移動

n(左括號移動到句子的最前面,前面加上數字能夠指定往前移動n個句子。句子以「!」、「.」、「?」三種符號來界定。

n)右括號移動到下個句子的最前面,前面加上數字能夠指定日後移動n個句子。

6.段間移動

n{左括弧移動到段落的最前面,前面加上數字能夠指定往前移動n個段落。段落以段落間的空白行界定。

n}右括弧移動到下個段落的最前面,前面加上數字能夠指定日後移動n個段落。

只要多實踐幾回,讀者就能掌握這些指令,而且會發現它們能夠較大幅度地提升工做效率。vi的這些指令是其餘編輯器所不具有的,從這個意義上講,vi比其餘不少編輯器要優秀。其實,使用vi的基於文本的操做指令比使用基於圖形界面的操做指令來得方便、快捷,由於填寫對話框是很費時費力的工做。

5.5.2高級編輯指令

vi提供了一些很是靈活的編輯指令,這些指令基本上由指令與範圍構成。例如dw由刪除指令d與範圍w組成,表明刪除一個詞dDeletewWord)。

指令列表以下:

d刪除(delete

y複製(yank

p放置(put

c修改(change

範圍能夠是下列幾個:

e光標所在位置到該詞的最後一個字母。

w光標所在位置到下個詞的第一個字母。

b光標所在位置到上個詞的第一個字母。

$光標所在位置到該行的最後一個字母。

0光標所在位置到該行的第一個字母。

)光標所在位置到下個句子的第一個字母。

(光標所在位置到該句子的第一個字母。

}光標所在位置到該段落的最後一個字母。

{光標所在位置到該段落的第一個字母。

這些指令提供了更加靈活的文本編輯能力。值得注意的一點是,刪除與複製都會將指定範圍的內容放到內存中,而後能夠用指令p將它們貼到其餘地方去,這是vi實現塊複製與塊移動的辦法。

這些指令其實只是指定範圍的方式有點雜,而指令卻只有四個。

指令v很是好用,只要按下v鍵,光標所在的位置就會反白,而後能夠移動光標來設定範圍,接着再直接下達編輯指令便可。

對於整行操做,vi另外提供了更方便的編輯指令。前面提到的刪除整行文本的指令dd就是其中之一;cc指令能夠修改整行文字;yy指令能夠複製整行文字;指令D則能夠刪除光標到該行末尾的全部文字。

5.5.3文件指令

文件指令可能是以冒號開頭的長指令,與編輯指令有所不一樣。

下面簡要介紹一下文件指令:

1:q

結束編輯(quit),若是要放棄對文件所作的修改,應該使用「:q!」指令強行退出。

2:w

存盤(write),其後可加所存盤的文件名。能夠將多個文件指令合在一塊兒使用,例如「:wq」的做用是保存文件並退出。

3ZZ(大寫)

功能與「:wq」相同。

另外值得一提的是vi的部分存盤功能。能夠用「:n,mwfilename」指令將第n行到第m行的文本存放到指定的文件filename中。

有關vi的使用方法只講這些,內容還有不少。讀者沒必要刻意地去背誦這些指令,只要在使用vi的過程當中可以有意地去查一下幫助和使用一下,就必定能很快地掌握這些指令的使用方法。

習題

1.從編輯模式切換到指令模式能夠使用______鍵。(    )

AF2

BSHIFT

CTAB

DESC

2vi中,命令_________從光標所在行的第一個非空白字符前面開始插入文本。(    )

Ai BI Ca DS

3.刪除整行文本的指令是_______(    )

Ad Byy Cdd Dq

4.存盤並退出vi的指令是:(    )

Aq! Bq Cw Dwq

6章使用外部設備

本章內容提要

在紅旗Linux下,您能夠使用各類驅動器、文件系統和網絡設備。其中包括Linux分區、DOSMSWindows分區(硬盤驅動器或軟盤上的)、ZIPJazz驅動器以及CDROM文件系統。紅旗Linux還支持許多並不常見的文件系統。這意味着你能夠在Linux下用Netscape下載Windows軟件,把下載的軟件保存到Windows硬盤分區。

本章重點內容

☆如何使用CDROM

☆使用軟盤

☆使用Zip驅動器

☆掛裝文件系統

☆使用打印機

☆重點掌握CDROM,軟盤Zip,打印機的使用,學會掛裝,掌握mount命令紅旗Linux用戶基礎教程

6.1使用CDROM

使用mount命令能夠把CD中的全部目錄和文件加入到Linux目錄樹中。掛裝CDROM的命令以下,該命令須要以root身份執行。

#mountCDROM:

#mounttauto/dev/cdrom/mnt/cdrom

若是命令生效,光盤中的內容將出如今目錄/mnt/cdrom下。下面介紹該命令的工做原理。

它通知操做系統自動探測(選項「-tauto」)文件系統並安裝它。被安裝的設備爲/dev/cdrom,安裝點(安裝到的目錄)爲/mnt/cdrom。這一目錄必須已經存在併爲空。若是它不存在,那麼就須要使用以下命令進行建立:

$mkdir /mnt/cdrom

若是安裝命令失敗,則要確認/dev/cdrom設備存在。若是使用的是IDECDROM,對應的設備文件名多是/dev/hdb/dev/hdc或者/dev/hdd。若是使用的是SCSICDROM,對應設備文件名可能爲/dev/sda1/dev/sda2hda是第一IDE主驅動器,hdb是第一IDE從驅動器,hdc是第二IDE主驅動器,等等),hdd是第二IDE從驅動器;sda是第一SCSI接口,後面所接數字是SCSI驅動器id號。

假設/dev/cdrom不存在,而CDROM設備文件名爲/dev/hdb。用戶能夠使用以下命令創

建一個到文件/dev/cdrom的符號連接。

$ln -s /dev/hdb/dev/cdrom

若是系統提示「設備已經安裝(mounted)或目錄忙」,多是因爲用戶的當前目錄是在安裝點目錄/dev/cdrom或者子目錄中而形成的。此時必須切換到其餘目錄才能進行。

umount(卸載)一個已經安裝上的CD,須要退出/mnt/cdrom目錄,並以root身份輸入以下命令:

#umount/dev/cdrom

若是CDROM沒有可以成功卸載(umounted),光盤就沒法被取出。

6.2使用軟盤

安裝軟盤的命令以下:

$mount -t auto /dev/fd0/mnt/floppy

在安裝時,首先要確認/mnt/floppy目錄存在併爲空,而且/mnt/floppy不能是系統中何用戶的當前目錄。

成功安裝後,軟盤的文件出如今/mnt/floppy目錄下,這些文件對全部用戶可讀,但只有root才能夠修改、刪除這些文件。

卸載軟盤的命令以下:

$umount/mnt/floppy

注意:在卸載軟盤時,當前工做目錄不能是/mnt/floppy或其子目錄。

6.3使用Zip驅動器

安裝SCSI仿真並口擴展Zip驅動器的命令以下:

$mounttvfat/dev/sda4/mnt/zipdrive

使用「-tvfat」選項是由於Zip驅動器事先已經格式化爲vfat文件系統,這一文件系統屬於Windows文件系統,支持長文件名。卸載Zip驅動器的命令爲umount。若是不卸載,盤片將沒法彈出。Linux系統支持除USB以外的全部Zip驅動器(內置SCSIIDE,外置SCSI和並口)。

6.4讓系統識別並行端口Zip驅動器

若是Zip驅動器安裝不成功。則在安裝結束後,應該使用如下命令把並行端口zip驅動器模塊加載到內核中:

$/sbin/insmod parport

$/sbin/insmod ppa

爲了讓上面的指令在每次系統啓動時自動執行,應該將其加在文件/etc/rc.d/rc.local結尾。該文件相似DOS下的autoexec.bat文件。若是系統仍然不能識別,應該編輯文件/etc/modules.conf,例以下面是文件/etc/modules.conf的示例行。

alias parport_lowlevel parport_pc

6.5自動安裝(mount)功能

用戶也能夠使用自動安裝功能。自動安裝(automount)將在用戶訪問一個文件系統時自動安裝它,並在中止訪問時卸載它。

首先要以root身份運行setup命令,選擇netsysv,確認自動安裝服務。

接下來須要編輯automount的配置文件/etc/auto.master/etc/auto.misc,例如:

$pico/etc/auto.master

/misc/etc/auto.misc --timeout 1

該文件指明自動安裝設備將被安裝到/misc目錄,此目錄必須存在併爲空。timeout字段指定了自動安裝設備將在中止使用後一秒內自動卸載,該時間值能夠任意設置。配置文件是/etc/auto.misc。該文件示例以下:

kernel -rosoftintrftp.kernel.org:/pub/linux

cdrom -fstype=autoro:/dev/cdrom

floppy -fstype=autorw:/dev/fd0

zipdrive -fstype=vfatrw:/dev/sda4

dosdrive -fstype=vfatro:/dev/hda1

hacker_cdrom-fstype=nfsrohacker:/mnt/cdrom

hacker_floppy-fstype=nfsrwhacker:/mnt/floppy

hacker_usr-fstype=nfsrohacker:/usr

6.6設置32I/O硬件驅動器

打開32I/ODMA只能由root執行。爲了減少出錯重啓時對文件系統的損害,最好以單用戶模式進行。

例如,要在第一IDE硬盤hda上激活32I/O,能夠用下面的命令首先檢查硬件驅動器的I/O狀況。

$hdparm -t /dev/hda

若是要顯示當前I/ODMA配置,命令分別以下:

$hdparm -c /dev/hda

$hdparm -d /dev/hda

開啓32I/ODMA的命令以下:

$hdparm -c 1 /dev/hda

$hdparm -d 1 /dev/hda

讓配置生效的命令以下:

$hdparm -k 1 /dev/hda

若是要使新的設置在每次從新啓動系統時生效,應該在文件/etc/rc.d/rc.local結尾加入下面的命令:

hdparm -c 1 -d 1 -k 1/dev/hda

在執行上述操做之後,硬盤的性能就能夠有大幅度提升。

6.7使用打印機

Linux是一個多用戶系統,於是它的打印比較複雜。本節主要講述Linux下打印機的安裝\工做的原理、打印命令和KDE中提供的關於打印工做的管理和配置工具。

6.7.1安裝遠程打印機

若是要安裝一個遠程打印機,應該確認本身的主機有權使用遠程打印機。權限設置定義在/etc/host.lpd(較安全)或/etc/hosts.equiv(較不安全)中。這些文件簡單地列出了主機名稱,每一行定義一個主機。例如:

hacker

mars

要快速查看主機中的打印信息,能夠查看文件/etc/printcap

$cd/etc/

$cat printcap

下面是文件/etc/printcap的示例。

#LOCAL

djet500lp:\

:sd=/var/spool/lpd/dj:\

:mx # 0:

:lp = /dev/lp0:\

:sh:

其中,「:」爲字段分隔符,「\」表示行尾,繼續接下一行。djet500lp爲打印機名稱。sd參數行指定的路徑/var/spool/lpd/djspool目錄。mx#0爲打印做業最大長度,以塊爲單位,「0」表明無限制。sh說明進行頭部壓縮。打印頭部是打印工做前帶有用戶名字及信息的打印頁。lp=/dev/lp0爲本機設備名。/dev/lp0是紅旗Linux2.0第一併行端口的設備文件。if=/var/spool/lpd/lp/filter爲輸入過濾程序名稱,打印做業在送往打印機前先過濾。

6.7.2Linux下的打印工做

DOS下,用戶經常使用直接向打印機輸出的方法來打印。也就是用戶直接控制打印程序,完成打印操做,這種方法實現起來比較簡單。可是因爲DOS僅僅是單用戶的操做系統,運行狀況比較簡單,處理問題纔會如此容易。而Linux被設計成一個多用戶的操做系統,必須考慮多個用戶同時進行打印時,對打印機資源進行競爭的狀況,於是比較複雜。在Linux中打印工做有一套較爲複雜的機制,下面將對其進行介紹。

1.假脫機

Linux採用了假脫機(spooling)的打印方法。即當用戶打印一個文件時,打印文件的輸出並不直接輸送到打印機上,而是先送到一個「spool」目錄下,而後由一個負責打印的後臺進程把這些數據再送入打印機。這樣作避免了多個用戶的打印做業之間的互相干擾,能夠說是Linux系統對打印做業進行統一的管理和調度。

2.打印緩衝區目錄

spool」目錄稱爲緩衝區目錄。Linux中有許多有緩衝區的進程,負責打印的進程lpd在「spool」目錄下有本身的緩衝區。紅旗Linux在安裝時設置的打印緩衝區目錄是/var/spool/lpd」,要打印的數據在被打印以前先送到這裏。一般每一臺打印機在緩衝區目錄下都有一個與這臺打印機同名的打印機目錄,該目錄中專門存放關於該打印機的文件。例如,系統以「/var/spool/ipd」做爲系統的打印緩衝區目錄,一臺叫「hp」的hp4L激光打印機所擁有的打印機目錄即是「/var/spool/lpd/hp」。

3.打印機守護進程

Linux中負責後臺打印文件操做的是一個名爲lpd的打印機守護進程,它在系統啓動後便被激活,常常掃描打印緩衝區以查看有無須要打印的新文件。若是存在新文件,就按先進先出的順序打印緩衝區中的文件。

4.網絡打印

Linux系統中使用的打印機能夠是本地打印機,也能夠是網絡打印機,還能夠是UNIX主機上的打印機上或連在Windows服務器(只要提供Samba/LAManager服務)上的打印機。只要給出正確的服務器節點名稱和打印機的名稱,並進行了正確的網絡通信協議的配置,就能夠將網絡上的打印機像本地打印機同樣對待。

5.打印配置文件

Linux系統中將對打印機的配置放在了「/etc/printcap」文件中,這是一個文本文件,若是用戶以「root」身份登陸系統的話,能夠直接編輯這個文本,在這裏能夠設定打印機的名稱、使用的設備(並口)、所用的打印緩衝區目錄等。對於網絡打印機,還要指定打印機所屬的計算機名稱。

6.7.3命令行方式下的打印操做

Linux系統提供了一組有關打印的命令。通常狀況下,打印命令使用默認打印機。默認打印機是由PRINTER環境設定的。用戶也能夠在命令行上指定要使用的打印機。

1lpd命令

lpd命令是假脫機打印命令。該命令將打印做業放到打印緩衝隊列中,並向lpd守護進程發送消息,提出打印請求。Lpd掃描「/etc/printcap」文件,查詢打印對應的緩衝區目錄,而後由lpd控制打印,將須要打印的數據從緩衝區送到打印機上進行打印。

lpd命令的格式爲:

lpd[-P printer][#num][數據格式選項][其餘選項][name]

命令中各選項的含義以下:

-p:指定打印機。若是不用此選項,則使用默認打印機或環境變量PRINTER指定的打印機。

-m:打印完畢後發送e-mail

數據格式選項:對於要打印的文件,指定文件數據的格式,便於lpd進行處理和轉換。默認狀況下,認爲是標準的文本文件。詳細狀況請參見lpd的幫助。

-#num:打印文件的份數。

name:打印文件名。

2lpq命令

lpq是緩衝隊列檢查命令,它經過lpq在緩衝區中檢查打印文件,報告指定做業的狀態或指定用戶的做業。Linux中將每個打印任務稱爲一個做業,爲它分配一個做業標識號(做業ID),標識一個特定的做業。

Lpq命令的格式爲:

Lpq[-l][-p printer][jod#][user…]

命令中各選項的含義以下:

-p:指定一個打印機,不然使用默認打印機。

l:打印做業隊列中的全部文件的信息。

Jod:須要查詢的打印做業號。

User:指定用戶名,查詢他的打印做業。

上述參數和選項能夠組合使用,以明確查詢所要換的打印做業。

對提交的每個做業,lpq報告用戶名、在隊列中的級別、組成做業的文件、標識號以及總的打印數據的多少等信息。不帶任何參數的lpq命令顯示如今隊列中的全部做業。

3lprm命令

lprm命令用於從緩衝隊列中刪除打印做業。用戶能夠使用該命令從緩衝隊列中刪除屬於本身的一個或多個打印做業。

Lprm命令的格式爲:

lprm[-p printer][-][jod#][user…]

命令中各選項的含義以下:

-p:指定一個打印機,不然使用默認的打印機。

-:刪除用戶全部的打印做業。

User:刪除隊列中屬於用戶「user」的做業(只有超級用戶能夠這樣作)。

jod#jod是做業號,經過指定做業號「#」刪除某個打印做業。

例:若是剛剛提交了若干個文檔去打印,突然發現其中有一個文檔須要修改,必須取消對該文檔的打印,如何操做呢?

1)執行「lpql」命令,若是使用用戶名和打印機名做進一步的限制更好。以後從該命令的輸出結果中能夠查詢到所要找的文件,記住它的做業號。假設該文件做業名爲「job」。

2)而後,執行「lprmjob」,其中「job」是該做業的做業號,即可以從打印隊列中刪除對該文件的打印。

6.7.4KDE中打印機的操做和管理

在紅旗LinuxKDE環境下,提供了兩個圖形化的配置和管理工具:printCfgKlpq,使用它們能夠完成通常的打印任務。

1.打印機配置(printCfg

printCfg是紅旗Linux控制中心的組件之一,它能夠完成如下的管理和配置的任務。

增長打印機

增長系統中能夠使用的打印機,有3種類型可供選擇:Local(本地打印機),Remote(遠端UNIX),SMBsamba/LANManager打印機)。此外,還能夠爲本地打印機指定廠商和類型等參數,從而使用在系統中安裝過的驅動程序。

刪除打印機

將不可修改打印機的配置從系統中去掉。

修改打印機配置

能夠修改打印機的配置參數,包括打印機的隊列名、緩衝區目錄、打印機參數、網絡參數等。

2.顯示打印隊列(Klpq

啓動Klpq的菜單命令能夠在主程序菜單下找到。Klpq是集成了lpqlpqrm和其餘管理打印任務的命令所具備的功能,爲系統管理員提供了一個集中管理打印做業的工具。經過它能夠顯示出當前系統中正在執行的打印做業,能夠將不想要的打印做業刪除,還能夠改變打印做業在打印隊列中的前後次序。

6.8配置和使用聲卡

用命令sndconfig會彈出配置聲卡的對話框,根據提示便可完成配置。若是sndconfig不能正確配置您的聲卡,能夠啓動alsaconf來配置。要了解更多的信息,請參見附錄配置和使用聲卡的進一步討論。

6.9使用外設的若干常見問題

1.如何讓內核檢驗到兩塊網卡?

當有兩塊網卡時,在lilo.conf里加上:append="ether=0,0,eth1"

當有三塊網卡時,則爲:append="ether=0,0,eth1eth0,0,eth2"

固然這是不知道網卡ioirq的狀況下這麼設的,若是知道,通常採用ether=#irq,#io;

2.爲何不能看到Windows CDROM的長文件名?

若是您有一片CDROM,上面有Windows可看到,但Linux看不到長文件名,那麼這片光盤可能使用Microsoft專屬的Joliet文件系統格式。Microsoft制定了一種叫JolietISO CDROM文件系統延伸格式。它容許使用16-bitUNICODE編碼的長文件名。從2.0.34版核心起,Linux核心已支持MicrosoftJoliet文件系統格式。必須在覈心中啓用它。若是要用使用的語言(nativelanguage)正確地顯示在JolietCDROM上的文件名,也須要在覈心中支持相應的NLSISO8859字元集。

3.在CD上有隱藏文件,沒辦法讀有些CD的一些文件設定爲隱藏。這些文件正常狀態是看不到的。不過若是您掛裝時使用了「unhide」選項,那麼就能夠讀取了。

4.裝好Linux後,CDROM不能用了最多見的症狀是先用Linux安裝時,Linux認可您的CDROM。但裝完後,從軟盤或硬盤開機卻又不能用它了。

最大的可能就是多數Linux套件中,裝在硬盤的核心不必定和安裝片用的同樣。您選了支持您設備的安裝片,在硬盤上安裝的倒是不支持CD-ROM的「通用版」核心。

解決方法是重編譯核心,肯定您須要的CD-ROM驅動程序及其餘須要的部分(如SCSI卡,ISO-9660文件系統)都編進去了。

若是安裝時用了命令列參數(如「hdc=cdrom」),要把它加進開機載入程序的設定文件中(一般是/etc/lilo.conf)。

5.關機時,爲何光驅托盤自動退出來?

sbpcd驅動程序支持在卸下盤片時自動退片的功能。在舊版核心中這也是預設值。若是您下了關機指令,那麼掛上的CD就會被卸下,而後就會退片。

這樣在換片時就會很方便。若是在托盤打開狀態下掛上或讀取CD,那麼它也會自動進片。

有時這項功能會形成問題(如cdplayworkbone)。在1.1.60版核心中您能夠用軟件決定要不要用這功能。有一個例程序包含在sbpcd的文件裏。(或者用[52]eject程序)。能夠經過修改核心源代碼sbpcd.h文件,改變預設的行爲。

6.沒有root身份的人,如何掛上及卸下光驅

多數mount命令支持user選項。假設在/etc/fstab里加入了這樣一行:

/dev/sbpcd  /mnt/cdrom iso9660 user,noauto,ro

那麼普通使用者就能夠像下面這樣掛上或卸下這臺機器的資料:

%mount /mnt/cdrom

%umount /mnt/cdrom

掛上程序將會加上一些額外選項以確保系統安全,例如:程序不許執行,盤片上的設備文件將失效(不予理會);若是這些限制過嚴了,您能夠加入額外的選項(如「exec」選項可讓上面的程序可執行)。

另外一個辦法就是使用usermount軟件。它容許非root的使用者掛上或卸下可移除設備,如軟盤及CDROM等,但限制對其餘設備的動做(如硬盤分區)。

ftp.cdrom.com裏有mount.c的源代碼,容許通常使用者掛上或卸下CDROM

setuid是指將執行文件執行時的權限變成和文件全部人相同。普通執行文件執行時,權限是執行者的權限,這樣的話不少程序都不能跑。如:用戶不能修改/etc/passwd,因此不能變動密碼。而若是setuid,該文件又是root全部,這種執行文件就有root權限了。像passwd程序就是靠這個改密碼的。不過setuid反過來也多是系統安全的主要漏洞。

習題

1.上述命令執行以後,Linux報告出錯信息,則可能的緣由是:()

A/mnt/cdrom不存在

B/mnt/cdrom爲空

C/dev/cdrom設備不存在

D.當前目錄是安裝點/dev/cdrom

2$mounttauto/dev/fd0/mnt/floppy命令執行成功後:()

A.軟盤的文件出如今/mnt/floppy目錄下

B/mnt/floppy目錄下的文件對全部用戶可讀

C/mnt/floppy目錄下的文件對全部用戶可寫

D/mnt/floppy目錄下的文件對全部用戶可執行

7章多用戶管理及用戶安全

本章內容提要

要求掌握添加用戶和用戶組,刪除用戶和用戶組,配置用戶和用戶組權限,掌握限制用戶對主機使用的方法,瞭解PAM

當一臺計算機爲多人所用時,一般須要區分用戶,例如,使我的文件保持我的化。即便計算機只爲一人所用,這一點也很重要。所以,每一個用戶擁有一個單獨的用戶名,這個名字用於登陸。

本章重點內容

☆用戶管理

☆用戶組管理

☆用戶安全

7.1用戶類別

標準用戶:

也能夠稱之爲普通用戶。對普通用戶來講,他在硬盤上能夠進行寫操做的地方可能只有本身的主目錄。它位於「/home/用戶名」下。其中/home目錄保存全部用戶文件,包括用戶設置程序、配置文件、文檔數據,netscape的緩存文件以及用戶郵件等等。普通用戶僅僅能夠在本身的主目錄下建立新的子目錄來組織本身的文件,而且在沒有賦予其餘用戶普通用戶權限的狀況下,其餘用戶是無權讀寫您主目錄下的內容的。除了本身的主目錄外,普通用戶能夠查找﹑讀﹑執行系統內其餘目錄中的文件,可是通常狀況下他們不能修改或移動這些文件。

標準用戶組:

標準用戶組是由不少標準用戶組成的一個組。在系統中能夠有不少個標準用戶組。在同一個標準用戶組內的用戶能夠具備小組的存取許可權限,能夠使用組內的共享文件。

私有用戶組:

該用戶不屬於任何一個現有的標準用戶組,或者有的用戶可能時常須要獨自爲一個小組;有的用戶可能有一個SGID程序,須要獨自爲一個小組。這些用戶能夠稱之爲私有用戶。由他們所構成的組稱爲私有用戶組。

7.2用戶管理

7.2.1添加用戶

這裏介紹三種方法:

1.用useradd命令,

注意執行完畢也須要執行passwd username

例:

useradd lxh

passwd lxh

下面輸入lxh的密碼並確認。

2vi/etc/passwd

加入下面一行:

用戶名:密碼:UID:GID:用戶全名:用戶HOME目錄:用戶的Shell

好比:

test::500:500:TestUser:/home/test:/bin/bash

注意:

1)密碼必定什麼也不填。

2)用戶的HOME目錄必定要存在,否則用戶沒法登錄。

3UID不要和其餘用戶的相同。

4)若是密碼是通過shadow的,須要執行一下pwconv,以便把新加的密碼轉換成正確的合適。並更新/etc/shadow,而後須要執行passwdUSERNAME,以設定用戶密碼。

3.用紅旗Linux linuxconfuserconf

思考:如何建立無密碼用戶呢?

能夠使用passwd -d USERNAME命令完成之。USERNAME用實際的用戶名代替或者

編輯/etc/passwd文件,把該用戶對應行的第一個冒號和第二個冒號之間的部分刪除。若是有

/etc/shadow文件存在,也須要作與對/etc/passwd文件相同的操做。

7.2.2權限設置

1.用戶權限需求分析

紅旗Linux採用了將管理員和普通用戶分開的策略。這種策略保證了系統的健壯性,同時也使紅旗Linux下的病毒難以編寫(用戶編寫的程序僅對本身的目錄有寫權限,而與操做系統的其餘部分是隔離開的)。

首先必須對用戶設置訪問與加入的口令,其中包括普通用戶口令、組口令。若是以超級用戶註冊的話,還有超級用戶的口令。口令是用一個單向加密算法加密的,而且將加密結果保存在文件/etc/passwd中。而原始口令並不保存。

對於普通用戶的權限,只能在本身的主目錄下建立新的子目錄來組織本身的文件,若是在別的普通用戶沒有授予他用戶權限的狀況下,他無權讀寫其餘用戶主目錄下的內容。不過能夠查找﹑讀﹑執行系統內其餘目錄中的文件,只是不能修改或移動這些文件。

同時對於標準用戶組以及私人用戶組內的安全,以及組內用戶的讀寫、以及程序的運行權限都須要進行設置。此外,還應該有超級用戶的權限的操做命令。

2.權限設置方式

創建用戶

首先來介紹普通用戶的創建。超級用戶root能夠建立新的用戶帳號,例以下面的命令將創建一個名爲joe的新用戶:

#adduserjoe

#passwdjoe(鍵入joe的口令)

設置及修改口令

系統管理員能夠經過配置程序來設定口令的安全策略,例如您能夠以root身份啓動linuxconf實用程序:#linuxconf。在菜單【useraccount】→【policies】→【password & account

policies】下配置口令。root能夠在不知道用戶當前口令的前提下,修改任何一個用戶的口令。註冊時鍵入的口令被一個單向加密算法計算,並將結果與保存在/etc/passwd中的值進行比較。正確的話,用戶就能夠登陸系統。

用戶在第一次註冊時,可修改本身的口令命令,以下所示:

$passwd

(current)Unix Password[鍵入老的口令字]

New Unix Password[鍵入新的口令字]

Retype New UNIX password[再一次鍵入新的口令字]

出於安全考慮您鍵入的口令是不會回顯在屏幕上的。

若是普通用戶忘記了本身的口令,可讓root修改該用戶的口令。例如要修改用戶susan的口令,命令以下:

#passwd susan

該命令將提示輸入用戶susan的新的口令,它不須要輸入舊的口令來確認。

此外,若是在/etc/passwd中有的口令項前有*號,這意味着此帳號暫時不可用。當您想恢復這一帳號時,只要刪除這個星號,這個帳號就能夠用原來的口令註冊了。

3.文件的訪問權限的設置

能夠用「lsl」命令顯示任何文件全部者和全部者組。(「-l」選項表示以長格式顯示)。

例如執行以下命令:

$ls -l junk

-rwx----- -1 yogin inca 27 Apr 24 14:12 junk

將顯示文件junk的全部者爲yogin,全部者所在組爲inca。通常說來只有文件的全部者和root才能刪除該文件(其餘用戶只有被授予了相應權限後才能夠刪除)。

文件的全部者能夠經過命令chown改變全部者和chgrp改變所處的組。不過這些命令一般是root使用的,例如執行如下兩條命令權限:

#chown peter junk

#chgrp peter junk

顯示改變爲

$ls -l junk

-rwx----- -1 peter peter 27 Apr 25 20:27 junk

將文件junk的全部者由yogin變爲peter,全部者所在的組由inca變爲peter

能夠使用命令chmod修改您全部的文件的權限,用如下命令:

$chmod a+r junk

a」表示全部的用戶,此外還能夠用「u」「g」或「o」,其中「u」表示文件全部者,「g」表示同組用戶;「o」表示其餘用戶。

+」表明增長,此外還能夠用「-」(表示禁止)、「=」(設置某個權限)。「r」表示可讀,此外還能夠設置「w」(可寫)和「x」(可運行)權限。除了使用字母「r」「w」和「x」設置權限,您也能夠使用數字代替。其中讀(read)的權限值爲4;寫(write)的權限值爲2;執行(execute)的權限值爲1。因此4表明「只讀」,5表明「讀和執行」,6表明「讀和寫」,7表明「讀寫和執行」。例如命令:

$chmod 666 junk:將會給全部用戶讀和寫的權限;

$chmod 411 junk:賦予文件全部者讀權限,對同組用戶和其餘用戶賦予執行權限。

修改新建文件的默認文件權限,命令以下:

$umask u=rwx g= o=

它會在建立新文件時,給文件全部者以所有權限,而同組用戶及其餘用戶沒有任何權限。在umask中的數字設置方式與chmod命令相反,它表明的是要禁用的權限。所以umask 000會給所有用戶賦予新建立文件的所有權限,而命令umask 077會給文件全部者所有權限而其餘人什麼權限也沒有。

7.2.3刪除和查封用戶

刪除一個用戶必須:

1)刪除/etc/passwd文件中此用戶的記錄。

2)刪除/etc/group文件中說起的此用戶。

3)刪除用戶的主目錄。

4)刪除此用戶建立或屬於此用戶的文件。

userdel命令刪除用戶及其主目錄。

例:刪除用戶lxh及其主目錄

userdel -r lxh

此用戶相關的文件如郵箱和crontab文件,必須手工刪除。下面的命令:find/-user username -ls,能夠迅速找到與某用戶相關的文件。

注意:使用該命令的時候,/etc/passwd文件中必須有username的記錄。若是已經刪除了用戶username,則換成以下的格式:find/-uidnumls.num是已經刪除了用戶的UID

臨時查封一個用戶有兩種方法:

1)把用戶的記錄從/etc/passwd中去掉,保留主目錄和其餘文件不變。

2)在/etc/passwd(或/etc/shadow)文件中在該用戶的passwd域的第一個字符前面加上一個「*」。

例:臨時查封用戶lxhlxh:*gERo4lxhBzleUc:10084:0:180:7:::

7.2.4超級用戶

1.超級用戶的權限

超級用戶屬於系統指定的特殊用戶,一般也稱爲root用戶。一些系統管理命令只能由超級用戶運行。超級用戶擁有其餘用戶所沒有的特權。對於root用戶,權限上沒有任何限制,它不只能夠讀、寫或者刪除系統中的任何文件並且能夠修改文件的權限以及全部者。

此外root用戶還能夠運行一些特殊的程序,如給磁盤分區,創建文件系統等。系統管理員一般使用命令:/bin/su或以root進入系統從而成爲超級用戶。

2.超級用戶的管理

系統管理員以root帳戶登陸到系統中,能夠完成普通用戶不能完成的任務。因爲root可以做任何事情,於是在這個帳戶下,很容易因爲操做失誤而形成災難性的後果。做爲通常的用戶,若是不當心使用了刪除etc目錄中全部文件的命令,系統將不容許您這樣作。可是對於以root帳戶登陸的用戶,系統將對其操做不加任何限制,所以使用root帳戶時,稍有不慎就容易致使系統的崩潰,於是爲了不事故,須要對超級用戶的使用進行有效的管理,較好的方法是:

在多用戶系統下不讓普通用戶經過root帳戶登陸,只容許系統管理員以root登陸。能夠經過口令設置來實行。

root帳戶提供一個不一樣於普通用戶帳戶的提示符。這時須要修改root帳戶下的.bashrc.login文件,把Shell提示符設置成不一樣於普通帳戶的提示符。

只有在徹底必要的狀況下才使用root帳戶登陸。一旦做爲root用戶完成所需工做,就及時推出。使用的root帳戶越少,對系統形成損害的可能性就越小。

不要習慣使用root帳戶。由於習慣在root帳戶中操做,就有可能將root中的權限和普通用戶的權限混淆,從而致使沒必要要的損害。如,在某個用戶名下,用戶自覺得是普通用戶時,可能其實是以root用戶登陸。

3.使用su命令改變身份

用戶在使用過程當中能夠隨時使用susetuser的縮寫)命令來改變身份。例如,root帳號通常用於系統管理,使用root帳號時必須特別當心以防損壞系統。所以,管理員在平時工做時能夠用普通帳號登陸,而在進行系統維護時用su命令得到root權限,維護完畢後再用su切回原帳號。更爲重要的是,考慮到系統安全問題,紅旗Linux系統默認不容許以root身份進行遠程登陸(telnet),若是管理員要從客戶機上進行遠程管理,就必須先以普通用戶登陸,而後再用su得到root權限。

su的用法以下:

#su [username]

username是要切換到的用戶名,若是省略usernamesu默認將用戶身份切換至root,固然須要給出正確的密碼。只有root用戶使用su時纔不須要密碼。

4.找回root口令

root口令丟了,徹底不必重裝。解決辦法:用紅旗Linux啓動盤啓動,進入到安裝狀態,而後把文件系統mount到一個目錄裏,如/mnt裏,隨後修改/etc/passwd便可。或者乾脆在lilo出現的時候,輸入linuxsingle(或者是singlelinux)登錄進去之後,改/etc/passwd中的root密碼就能夠。

7.3用戶組管理

Linux系統中,每一個用戶帳號都至少屬於一個用戶組,每一個用戶組能夠包括好多個帳號。屬於同一用戶組的用戶享有該組共有的權限(主要是文件使用權限)。例如,管理員能夠建立game用戶組,使該組中的用戶都具備運行系統中游戲程序的權利。

7.3.1用戶組的實例

在用戶較多的大型系統中,使用用戶組能夠方便管理。有關用戶組的信息存放在/etc/group文件中,下面給出一個group文件的內容:

root::0:root

bin::1:root,bin,daemon

daemon::2:root,bin,daemon

sys::3:root,bin,adm

adm::4:root,adm,daemon

tty::5:

disk::6:root,adm

lp::7:lp

wheel::10:root

floppy::11:

rootmail::12:

mailnews::13:

newsuucp::14:

uucpman::15:man

users::100:games

nogroup::-1:

group文件的內容和passwd文件的格式很像,group的每一行記錄了一個羣組的資料。

每一個羣組的資料包括四個欄位,以「:」隔開。它們分別是:

羣組名稱

該羣組名稱,如rootbin

羣組密碼

設置加入羣組的密碼,大部分的狀況下是不使用羣組密碼,因此這個欄位一般沒有做用。

GID

羣組號碼,就像用戶同樣,羣組也有本身的號碼供系統識別,且每個羣組的號碼必定不會相同。

羣組成員

這一欄記錄了屬於該羣組成員,在大部分用戶的我的羣組這一欄是空的,您能夠按照需求將用戶加入某羣組成爲該羣組的成員。

7.3.2將用戶添加至用戶組

要將一個用戶帳號添加到某一工做組中,只須要修改group文件,將其用戶名添加到該組的users列表中便可。

7.3.3添加用戶組

使用groupadd命令添加用戶組:

#groupadd[option]group

如命令sgrgupaddkpk便是在系統內新增名爲kpk的羣組。

7.3.4刪除用戶組

將羣組由系統內刪除。

語法:

groupdel group

例:使用groupdel命令刪除用戶組:

#groupdel

7.3.5設置羣組密碼

gpasswd可用來設置羣組密碼的指令。但通常狀況下,使用羣組密碼的狀況並很少,而這個命令用來管理組內的用戶倒很方便,gpasswd能夠把用戶加入羣組,能夠從羣組內刪除。

這個指令只有root或是羣組的管理員有權使用。

語法:gpasswd[option][user][group]

參數說明以下所示。

-a:將用戶user加入group羣組。

-d:將用戶usergroup羣組裏刪除。

-r:取消羣組密碼。

例:將用戶kpk加入到kapak羣組內。

$gpasswd -a kpk kapak

7.3.6修改羣組記錄

groupmod指令修改在/etc/group文件中的資料。

語法:groupmod[options]group

選項的說明以下所示。

-gGID:更改羣組號碼。

-nname:更改羣組名稱。

-o:強制接受更改的羣組號碼爲重複的號碼。

例:將羣組kapak改名爲kpk

$groupmod -n kpk kapak

7.3.7在用戶組間切換

一個用戶能夠分屬於不一樣的用戶組,用戶能夠使用groups命令來查看本身屬於哪些用戶組:

#groups[username]

username是要查看的用戶名,若是省略則查看本身所屬的用戶組。下面的命令查看root帳號所屬的工做組:

#groupsroot

root : root bin daemon sYs adm disk wheel

Linux系統規定,任何用戶在任意時刻只能屬於一個用戶組,也就是說,在同一時刻只能享有一個用戶組的權利。當用戶登陸時,他所屬的工做組由passwd文件中的GID字段指定。

使用newgrp命令在所屬的用戶組中切換,使用方法以下:

#newgrg [group]

group參數給出欲切換到的目標用戶組,若是沒有給出該參數,則切回登陸時所在的工做組。

7.3.8用戶組權限需求分析

出於安全的要求。用戶組必須保證組內的用戶能夠訪問到組內的共享文件,而非組內的成員沒有通過容許不能訪問組內的信息。所以必須設置一個組的訪問口令。

文件存取的權限

設置組內的用戶或者是組外的用戶對於文件的存取權限。

用戶組的安全權限的設置

能夠設置一個組的口令。

組內用戶的權限設置

首先採用如下命令,能夠查看文件的讀寫信息。

$ls -l文件名

可能會顯示如下的信息:

-rwxrwxrwx

跳過第一個「-」(若是爲「d」,則表明其爲一目錄),其中前三個字母表明文件全部者的權限,第二組三個字母表明與全部者同組人的權限,第三組爲其餘用戶的權限。若是沒授予相應權限則以「-」替代權限。上述信息代表該文件對全部用戶(全部者;同組;其餘人)都具有全部的權限(讀、寫、執行)。

利用命令「$chmod 411文件名」能夠賦予用戶對文件的讀寫以及執行的權限。例如:

$chmod 411 junk

上述命令賦予文件全部者讀權限,對同組用戶和其餘用戶賦予執行權限。

此外,文件的全部者能夠經過命令chown來改變全部者和chgrp改變所處的組。可是這些命令一般是root(超級用戶)使用的。

7.4用戶安全

Linux是多用戶的操做系統,若是一我的想運行並操做Linux的話,就必須在系統中擁有一個合法的用戶帳號。如今讀者應該至少已經擁有了兩個帳號,一個是root,另外一個則是在安裝時設定的。爲了使其餘人也可以使用本身的Linux,應當爲他們創建帳號。

注意:只有root超級用戶才能管理用戶帳號,所以請讀者在管理帳號前以root身份登陸。

爲了管理多用戶的權限,維護系統的安全,首先應該以root身份登陸。最簡單的管理用戶的工具是紅旗usercfg/x、紅旗usercfg,還有另一些命令行的管理用戶工具:useradduserdelusermodusersgroupaddgroupdelgroupmodgroups。您必定想知道系統的密碼系統是怎樣操做的吧,如今能夠來研究一個文件——/etc/passwd

7.4.1多用戶訪問權限控制

Linux是一個多用戶的操做系統,因此它的安全和保密性是十分重要的。Linux把系統的使用者分爲兩種:超級用戶和普通用戶。超級用戶用「root」名註冊進入系統,他對文件的操做不受限制。普通用戶對文件的操做則受到文件存取權限的限制。

文件權限是由一個十位的二進制數組成。這十位數分爲四段,第一段是第一位,之後的每三位是一段。其中第一段標誌該文件的類型。文件類型與其標誌的關係如表7-1所示:

7-1文件類型與標誌

文件類型 標誌

普通文件 -

塊設備文件 b

字符設備文件 c

鏈接文件 l

目錄文件 d

套接字 s

命名管道 p

第二段是文件的全部者對該文件的存取權限。Linux給文件三種類型的存取權限:「r」,「w」,「x」,即「讀」,「寫」,和「執行」權限。對於文件來講是:讀文件的內容(r)、寫數據到文件(w)、做爲命令執行該文件(x)。對目錄文件的讀,寫,執行權限,又與普通文件的有些不同。對目錄文件的讀權限表示容許查看目錄內容;對目錄文件的寫權限表示容許在目錄中創建新文件和子目錄;對目錄文件的執行權限表示容許用戶使用cd命令轉到指定目錄。

第三段是該文件全部者同組的用戶對文件的權限。同組用戶是指與該文件全部者有關係的用戶,如:同一個開發小組的用戶。

第四段是其餘用戶對該文件的權限。其餘用戶通常指與文件全部者無關的用戶。

文件權限如圖7-1所示:

標誌位 全部者 同組用戶 其餘用戶

-bcldsp rwx rwx rwx

7-1文件權限

對每一個文件或目錄都有4類不一樣的用戶。每類用戶各有一組讀、寫和執行(搜索)文件的訪問權限,這4類用戶分別是:「超級用戶」,「文件全部者」,「同組用戶」,和「其餘用戶」。「超級用戶」自動擁有了全部文件和目錄的全面的讀、寫和搜索的權限,因此沒有必要明確指定他們的權限。後三種類型的用戶權限的大小是逐漸下降的,「全部者」權限最大,並由他決定「同組用戶」和「其餘用戶」的權限。對應這三種用戶,文件權限對應位置上出現的字母表示該用戶擁有的權限,沒有哪種權限,就在該位置上用「-」符號代替。

如:某個文件的權限爲:「-rwxr-xr--」表示該文件是普通文件,文件的全部者對文件有「讀」,「寫」,「執行」權限;全部者的同組用戶對該文件有「讀」和「執行」權限;其餘用戶對該文件只有「讀」權限,不能寫,也不能執行。

在一個新文件被建立後,就有一個默認的權限,通常爲「-rw-r--r」就是說文件全部者能夠讀寫該文件,同組用戶和其餘用戶只能讀文件。同時,還能夠使用下面的命令檢查新建文件的默認存取權限:

umask -s

7.4.2口令安全

在任何一個Linux系統中,都有一個passwd文件,它存放在/etc目錄下。這個文件存

放着全部用戶帳號的信息,包括用戶名和密碼,所以,它對系統來講是相當重要的。讀者

能夠使用以下命令查看該文件:

#cat/etc/passwd

下面是一個passwd文件的內容:

root:sWMrPGa52GO1Y:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/adm:

lp:x:4:7:lp:/var/spool/lpd:

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:

news:x:9:13:news:/var/spool/news:

uucp:x:10:14:uucp:/var/spool/uucp:

operator:x:11:0:operator:/root:

games:x:12:100:games:/usr/games:

gopher:x:13:30:gopher:/usr/lib/gopher-data:

ftp:x:14:50:FTPUser:/home/ftp:

nobody:x:99:99:Nobody:/:

arp:GFcoDv58s4YYg:500:500:user:/home/somebody:/bin/bash

讀者能夠看到rootarp等帳號。

Passwd文件由許多條記錄組成,每條記錄佔一行,記錄了一個用戶帳號的全部信息。

每條記錄由7個字段組成,字段間用冒號「:」隔開,其格式以下:

username:password:UserID:GroupID:comment:homedirectory:Shell

各字段的涵義是:

1username:用戶名,它唯一地標識了一個用戶帳號,用戶在登陸時使用的就是它。

2password:該帳號的口令,passwd文件中存放的密碼是通過加密處理的。Linux的加密算法很嚴密,其中的口令幾乎是不可能被破解的。盜用帳號的人通常都藉助專門的黑客程序,構造出無數個密碼,而後使用一樣的加密算法將其加密,再和本字段進行比較,若是相同的話,就表明構造出的口令是正確的。正由於如此,筆者才建議讀者不要使用生日、經常使用單詞等做爲口令,它們在黑客程序面前幾乎是不堪一擊的。特別是對那些直接連入較大網絡的系統來講,系統安全性顯得尤其重要。

3UserID:用戶識別碼,簡稱UIDLinux系統內部使用UID來標識用戶,而不是用戶名。UID是一個整數,用戶的UID互不相同。

4GroupID:用戶組識別碼,簡稱GID。不一樣的用戶能夠屬於同一個用戶組,享有該用戶組共有的權限。與UID相似,GID唯一地標識了一個用戶組。

5comment:這是管理員給用戶帳號作的註解,它通常是用戶真實姓名、電話號碼、住址等,固然也能夠是空的。

6home directory:家目錄,這個目錄屬於該帳號,當用戶登陸後,它就會被置於此目錄中,就像回到家同樣。通常來講,root帳號的家目錄是/root,其餘帳號的家目錄都在/home目錄下,而且和用戶名同名。固然這個目錄也能夠改到別的地方。

7login command:用戶登陸後執行的命令,通常來講,這個命令將啓動一個Shell程序。使用過BBS的用戶都知道,用BBS帳號登陸後,會直接進入BBS系統,這是由於BBS帳號的login command指向的是BBS程序,等系統登陸到BBS時就自動運行這些命令。

1.系統默認帳號

系統中還有一些默認的帳號,如admdaemonbinsys等,讀者能夠在前面的passwd

文件中找到它們。這些帳號有着特殊的用途,通常用於進行系統管理,例如:

bin帳號擁有可執行文件。

sys帳號擁有可執行文件。

adm帳號擁有帳號文件(如passwd)和日誌(log)文件。

在比較大型的工做站中,超級用戶可能但願將繁重的維護任務分派給其餘維護人員,但又不但願賦予他們root權限,這時這些帳號就派上用場了。這些帳號的口令大部分用星號表示,表明它們不能在登陸時使用。

2.安全密碼

爲了加強系統的安全性,Linux系統還能夠爲用戶提供MD5Shadow安全密碼服務。若是在安裝紅旗Linux服務器版的時候在相關配置的選項上選中了MD5Shadow服務,那麼將看到的/etc/passwd文件和上邊的例子文件稍有差異,差異就是在/etc/passwd裏的passwd項上不管是什麼用戶,都是一個「*」,這就表示這些用戶都登陸不了;系統實際上是把真正的密碼數據放在了/etc/shadow文件裏,用戶只能以root身份來瀏覽這個文件。爲何要這樣作呢,緣由其實很簡單,在系統設計的時候,/etc/passwd文件是任何人均可以讀的,那麼那些心有所圖的人就能夠利用這個文件,使用各類各樣的工具按照Linux密碼加密的方法把用戶甚至root的密碼試出來,這樣整個系統就會被他所控制,嚴重危害系統的安全和用戶數據的保密性。

/etc/passwd中存放的加密的口令用於用戶登陸時輸入的口令經計算後相比較,符合則容許登陸,不然拒絕用戶登陸。用戶可用passwd命令修改本身的口令,不能直接修改/etc/passwd中的口令部分。

一個好的口令應當至少有6個字符長,不要取用我的信息(如生日,名字,反向拼寫的登陸名,房間中可見的東西),普通的英語單詞也很差(由於可用字典攻擊法),口令中最好有一些非字母(如數字,標點符號,控制字符等),還要好記一些,不能寫在紙上或計算機中的文件中,選擇口令的一個好方法是將兩個不相關的詞用一個數字或控制字符相連,並截斷爲8個字符。固然,若是能記住8位亂碼天然更好。

不該使用同一個口令在不一樣機器中使用,特別是在不一樣級別的用戶上使用同一口令,會引發全盤崩潰。用戶應按期改變口令,至少6個月要改變一次,系統管理員能夠強制用戶按期作口令修改。爲防止眼明手快的人竊取口令,在輸入口令時應確認無人在身邊。

7.4.3關於PAM

Linux的解決方案相似於第二個方案,叫作shadow password。在/etc/passwd文件中的密碼串被替換成了’x’,組密碼也同樣處理。系統在使用密碼文件時,發現標記會尋找shadow文件,完成相應的操做。而shadow文件只有root用戶可存取。

這個辦法真是既簡單又可靠。可是,問題尚未完,許多程序在運行時都須要用戶認證,必須修改全部這些程序,再次編譯,以便支持這項技術。還有新的、更安全可靠和經濟的認證技術不斷出現,若是想使用這些技術,仍然須要修改許多程序。

爲了達到更經濟合理的目的,PAMPluggableAuthenticationModules)可插拔認證模塊就應運而生了。它在須要認證的程序和實際認證機制之間引入中間件層。一旦程序是基於PAM發行的,那麼,任何PAM支持的認證方法均可以用於程序。這樣就沒有從新編譯全部程序的麻煩了,只要PAM發展了新技術,如數字簽名,基於PAM的程序能夠立刻使用它。這種強大的靈活性能是企業級應用不可或缺的。更進一步,普通認證手段難以完善的管理用戶、會話數據等工做還能夠交給PAM來作。好比,您能夠很是容易地禁止某些用戶在特定的時間段登陸,或要求他們登陸時使用特別的認證方式。甚至還能夠把Linux工做站綁定到基於MicrosoftNT的網絡中,在NT域下使用本身的Linux工做站,完成認證工做。卻並不須要買額外的軟件。Linux的發行版若是不是基於PAM方式發行的,那你作的工做會多一些,好比安裝PAM套件,編譯相應程序。

7.4.4限制用戶對主機的使用

有時,不得不在主機上創建用戶帳號,開放交互登陸。若是對用戶使用主機不加限制,用戶作的很多事情會給您形成麻煩。好比:Linux默認沒有磁盤限額控制,任何一個用戶都有可能把您的磁盤空間用光!再如,運行高計算強度的軟件,把主機CPU處理時間統統耗光。諸如此類的事情絕對不能發生。

1.內存及CPU使用的限制

如今幾乎全部的Linux都綁定了PAM,這套組件能夠用來限制用戶使用的內存數量。

在紅旗Linux系統下的/etc/security/limits.conf文件,能夠用來作此類控制。(若是沒有的話,只能經過安裝盤,把組件安裝上去)。

此配置文件的格式是:

用戶名、組名(以@開頭)或「*」表示全部用戶。

soft」或「hard」,soft表示限制不嚴格,須要時能夠超過此值,但會有警告,hard

表示嚴格限制,不能超過此值。

cpu->佔用的處理時間片單位、maxlogins->容許此用戶同時登陸的個數、nproc→最大進程數等等。

對應的數字值

舉例以下:

*soft core 0

*hard rss 10000

@student hard nproc20

@faculty soft nproc20

@faculty hard nproc50

ftp hard nproc0

@student -maxlogins 4

2.磁盤使用的限制

Quota是用來限制用戶使用磁盤數量的。絕大多數Linux發行版本都捆綁了它,可是默認狀態是關閉的。

若是不肯定核心對Quota的支持,就從新編譯內核,在相應選項裏面選擇Quota的支持。而後

1)修改啓動腳本/etc/rc.d/rc.sysinit文件,在最後面加入下面的腳本:

#Check quota and then turn quota on.

if [-x /usr/sbin/quotacheck]

then

echo "Checking quotas.This may take some time."

/usr/sbin/quota check -a vug

echo"Done."

fi

if [-x /usr/sbin/quotaon]

then

echo"Turning on quota."

/usr/sbin/quotaon -avug

fi

注意:必須在/etc/fstab裏面的文件系統裝載後再打開Quota,不然Quota不起做用。

2)修改/etc/fstab文件

通常沒有加入Quota時像這樣:

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usr ext2 defaults 1 1

在包含"defaults"這個字的第四個欄位加上"usrquota"

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usrext2 defaults,usr quota 1 1

若是須要在一文件系統中開啓羣組quota支持,將"usrquota"改成:

"grpquota"

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usr ext2 defaults,grp quota 1 1

若是要同時支持使用者quota與羣組quota的話

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usr ext2 defaults,usr quota,grp quota 1 1

3)創建相應配置文件

在加入了Quota的分區根目錄下使用下列命令建立文件。這些文件只能容許root用戶

讀寫,其餘用戶沒有任何權限。

touch/partition/quota.user

touch/partition/quota.group

chmod600/partition/quota.user

chmod600/partition/quota.group

4)從新啓動並編輯用戶限額

使用edquota命令。

edquota -u xxxxxx指用戶名稱)或edquota -g xxxxxx指組名稱)會帶你進入VI編輯器,編輯相應內容便可。「man edquota」能夠查看細節內容。

3.文件許可權

文件屬性決定了文件的被訪問權限,即誰能存取或執行該文件。用ls -l能夠列出詳細的文件信息,如:

-rwxrwxrwx 1 pat cs440 70 Jul 28 21:12 zombin包括了文件許可,文件連接數,文件全部者名,文件相關組名,文件長度,上次存取日期和文件名。

其中文件許可分爲四部分:

-:表示文件類型。

第一個rwx:表示文件屬主的訪問權限。

第二個rwx::示文件同組用戶的訪問權限。

第三個rwx:表示其餘用戶的訪問權限。

若某種許可被限制則相應的字母換爲-

在許可權限的執行許可位置上,多是其餘字母:sStTsS可出如今全部者和同組用戶許可模式位置上,與特殊的許可有關,後面將要討論,tT可出如今其餘用戶的許可模式位置上,與「粘貼位」有關而與安全無關。小寫字母(xst)表示執行許可爲容許,負號或大寫字母(-ST)表示執行許可爲不容許。

改變許可方式可以使用chmod命令,並以新許可方式和該文件名爲參數。新許可方式以38進制數給出,r4w2x1。如rwxr-xr--754

chmod也有其餘方式的參數可直接對某組參數修改,在此再也不多說,詳見UNIX系統的聯機手冊。

文件許可權可用於防止偶然性地重寫或刪除一個重要文件(即便是屬主本身)!

改變文件的屬主和組名可用chownchgrp,但修改後原屬主和組員就沒法修改回來了。

4.目錄許可

UNIX系統中,目錄也是一個文件,用ls-l列出時,目錄文件的屬性前面帶一個d

目錄許可也相似於文件許可,用ls列目錄要有讀許可,在目錄中增刪文件要有寫許可,進入目錄或將該目錄做路徑份量時要有執行許可,故要使用任一個文件,必須有該文件及找到該文件的路徑上全部目錄份量的相應許可。僅當要打開一個文件時,文件的許可纔開始起做用,而rmmv只要有目錄的搜索和寫許可,不需文件的許可,這一點應注意。

5umask命令

umask設置用戶文件和目錄的文件建立默認屏蔽值,若將此命令放入.profile文件,就可控制該用戶後續所建文件的存取許可。umask命令與chmod命令的做用正好相反,它告訴系統在建立文件時不給予什麼存取許可。

6.設置用戶ID和同組用戶ID許可

用戶ID許可(SUID)設置和同組用戶ID許可(SGID)可給予可執行的目標文件(只有可執行文件纔有意義)當一個進程執行時就被賦於4個編號,以標識該進程隸屬於誰,分別爲實際和有效的UID,實際和有效的GID。有效的UIDGID通常和實際的UIDGID相同,有效的UIDGID用於系統肯定該進程對於文件的存取許可。而設置可執行文件的SUID許可將改變上述狀況,當設置了SUID時,進程的有效UID爲該可執行文件的全部者的有效UID,而不是執行該程序的用戶的有效UID,所以,由該程序建立的都有與該程序全部者相同的存取許可。這樣,程序的全部者將可經過程序的控制在有限的範圍內向用戶發表不容許被公衆訪問的信息。

一樣,SGID是設置有效GID。用chmod u+s文件名和chmod u-s文件名來設置和取消SUID設置。用chmod g+s文件名和chmod g-s文件名來設置和取消SGID設置。當文件設置了SUIDSGID後,chownchgrp命令將所有取消這些許可。

7cpmvlncpio命令

cp拷貝文件時,若目的文件不存在則將同時拷貝源文件的存取許可,包括SUIDSGID許可。新拷貝的文件屬拷貝的用戶全部,故拷貝別人的文件時應當心,不要被其餘用戶的SUID程序破壞本身的文件安全。

mv移文件時,新移的文件存取許可與原文件相同,mv僅改變文件名。只要用戶有目錄的寫和搜索許可,就可移走該目錄中某人的SUID程序且不改變其存取許可。若目錄許可設置不正確,則用戶的SUID程序可被移到一個他不能修改和刪除的目錄中,將出現安全漏洞。

ln爲現有文件創建一個鏈,即創建一個引用同一文件的新名字。如目的文件已經存在,則該文件被刪除而代之以新的鏈,或存在的目的文件不容許用戶寫它,則請求用戶確認是否刪除該文件,只容許在同一文件系統內建鏈。若要刪除一個SUID文件,就要確認文件的連接數,只有一個鏈才能確保該文件被刪除。若SUID文件已有多個鏈,一種方法是改變其存取許可方式,將同時修改全部鏈的存取許可,也能夠chmod000文件名,不只取消了文件的SUIDSGID許可,並且也取消了文件的所有鏈.要想找到誰與本身的SUID程序創建了鏈,不要馬上刪除該程序,系統管理員可用ncheck命令找到該程序的其餘鏈。

cpio命令用於將目錄結構拷貝到一個普通文件中,然後可再用cpio命令將該普通文件轉成目錄結構。用-i選項時,cpio從標準輸入設備讀文件和目錄名錶,並將其內容按檔案格式拷貝到標準輸出設備,使用-o選項時,cpio從標準輸入設備讀取先已建好的檔案,重建目錄結構。cpio命令經常使用如下命令作一完整的目錄系統檔案:

find fromdir -print|cpio-o>archive

根據檔案文件重建一個目錄結構命令爲:

cpio -id<archive

cpio的安全約定以下:

檔案文件存放每一個文件的信息,包括文件全部者,小組用戶,最後修改時間,最後存取時間,文件存取許可方式。

1)根據檔案創建的文件存放於檔案中的存取許可方式。

2)從檔案中提取的每一個文件的全部者和小組用戶設置給運行cpio -i命令的用戶,而不是設置給檔案中指出的全部者和小組用戶。

3)當運行cpio -i命令的用戶是root時,被創建的文件的全部者和小組用戶是檔案文件所指出的。

4)檔案中的SUID/SGID文件被重建時,保持SUIDSGID許可,若是重建文件的用戶不是rootSUID/SGID許但是檔案文件指出的用戶/小組的許可。

現存文件與cpio檔案中的文件同名時,若現存文件比檔案中的文件更新,這些文件將不被重寫。

若是用修改選項U,則同名的現存的文件將被重寫。可能會發生一件很奇怪的事:如被重寫的文件原與另外一個文件建了鏈,文件被重寫後鏈並不斷開,換言之,該文件的鏈將保持。所以,該文件的全部鏈實際指向從檔案中提取出來的文件,運行cpio無條件地重寫現存文件以及改變鏈的指向。cpio檔案中可含的全路徑名或父目錄名給出的文件。

8sunewgrp命令

1su命令:可沒必要註銷戶頭而將另外一用戶又登陸進入系統,做爲另外一用戶工做。它將啓動一個新的Shell並將有效和實際的UIDGID設置給另外一用戶。所以必須嚴格將root口令保密。

2newgrp命令:與su類似,用於修改當前所處的組名。

9.文件加密

crypt命令可提供給用戶以加密文件,使用一個關鍵詞將標準輸入的信息編碼爲不可讀的雜亂字符串,送到標準輸出設備。再次使用此命令,用同一關鍵詞做用於加密後的文件,可恢復文件內容。

通常來講,在文件加密後,應刪除原始文件,只留下加密後的版本,且不能忘記加密關鍵詞。在vi中通常都有加密功能,用vi-x命令可編輯加密後的文件。關於加密關鍵詞的選取規則與口令的選取規則相同。因爲crypt程序可能被作成特洛依木馬,故不宜用口令作爲關鍵詞。最好在加密前用packcompress命令對文件進行壓縮後再加密。

7.4.5其餘安全問題

用戶的.profile文件

因爲用戶的HOME目錄下的.profile文件在用戶登陸時就被執行。若該文件對其餘人是可寫的則系統的任何用戶都能修改此文件,使其按本身的要求工做。這樣可能使得其餘用戶具備該用戶相同的權限。

ls -a

此命令用於列出當前目錄中的所有文件,包括文件名以「。」開頭的文件,查看全部文件的存取許可方式和文件全部者,任何不屬於本身但存在於本身的目錄中的文件都應懷疑和追究。

.exrc文件

爲編輯程序的初始化文件,使用編輯文件後,首先查找$HOME/.exrc文件和./.exrc文件,若該文件是在$HOME目錄中找到,則可像.profile同樣控制它的存取方式,若在一個本身不能控制的目錄中,運行編輯程序,則可能運行其餘人的.exrc文件,或許該.exrc文件存在那裏正是爲了損害他人的文件安全。爲了保證所編輯文件的安全,最好不要在不屬於本身或其餘人可寫的目錄中運行任何編輯程序。

暫存文件和目錄

UNIX系統中暫存目錄爲/tmp/usr/tmp,對於程序員和許多系統命令都使用它們。若是用這些目錄存放暫存文件,別的用戶可能會破壞這些文件。使用暫存文件最好將文件屏蔽值定義爲007,但最保險的方法是創建本身的暫存文件和目錄:$HOME/tmp,不要將重要文件存放於公共的暫存目錄。

UUCP和其餘網絡

UUCP命令用於將文件從一個UNIX系統傳送到另外一個UNIX系統,經過UUCP傳送的文件一般存於/usr/spool/uucppublic/login目錄,login是用戶的登陸名,該目錄存取許可爲777,經過網絡傳輸並存放於此目錄的文件屬於UUCP全部,文件存取許可爲666777,用戶應當將經過UUCP傳送的文件加密,並儘快移到本身的目錄中。其餘網絡將文件傳送到用戶HOME目錄下的rjc目錄中。該目錄應對其餘人是可寫可搜索的,但沒必要是可讀的,於是用戶的rjc目錄的存取許可方式應爲733,容許程序在其中創建文件。一樣,傳送的文件也應加密並儘快移到本身的目錄中。

特洛依木馬

UNIX系統安全中,用特洛依木馬來表明一種程序,這種程序在完成某種具備明顯意圖的功能時,還破壞用戶的安全。若是PATH設置爲先搜索系統目錄,則受特洛依木馬的攻擊會大大減小。如模似的crypt程序。

誘騙

相似於特洛依木馬,模擬一些東西使用戶泄漏一些信息。不一樣的是,它由某人執行,等待無警覺的用戶來上當。如模擬的login

計算機病毒

計算機病毒經過把其餘程序變成病毒從而傳染系統,能夠迅速地擴散。特別是系統管理員的粗枝大葉,做爲root運行一個被感染的程序時。實驗代表,一個病毒可在一個小時內(平均少於30分鐘)取得root權限。

離開本身已登陸的終端

要離開本身已登陸的終端,除非能對終端上鎖,不然必定要註銷戶頭。

智能終端

因爲智能終端有sendenter換碼序列,告訴終端送當前行給系統,就像是用戶敲入的同樣。這是一種危險的能力,其餘人可用write命令發送信息給本用戶終端,信息中如含有如下的換碼序列:移光標到新行(換行),在屏幕上顯示"rm -r *"

將該行送給系統,後果你們能夠想像。禁止其餘用戶發送信息的方法是使用mesg命令。

mesgn不容許其餘用戶發信息,mesgy容許其餘用戶發信息。即便如此還是有換碼序列的問題存在,任何一個用戶用mail命令發送一樣一組換碼序列,不一樣的要用!rm -r *替換rm -r *.mail將以!開頭的行解釋爲一條Shell命令,啓動Shell,由Shell解釋該行的其餘部分,這被稱爲Shell換碼。爲避免mail命令發送換碼序列到本身的終端,可創建一個過濾程序,在讀mail文件以前先運行過濾程序,對mail文件進行處理:

myname="$LOGNAME";

tr -d [\001-\007][-\016-\037]>$HOME/mailbox;

>/usr/mail/$myname;

mail -f $HOME/mailbox

其中tr將標準輸入的字符轉換手寫到標準輸出中。這只是一個簡單的思路,從原則上來講,此程序應爲一C程序,以免破壞正發送到的文件,可用鎖文件方式實現。

斷開與系統的鏈接

用戶應在看到系統確認用戶登陸註銷後再離開,以避免在用戶未註銷時由他人潛入。

cu命令

該命令使用戶能從一個UNIX系統登陸到另外一個UNIX系統,此時,在遠地系統中註銷用戶後還必須輸入"~"後回車,以斷開cu和遠地系統的鏈接。cu還有兩個安全問題:

1)如本機安全性弱於遠地機,不提倡用cu去登陸遠地機,以避免因爲本地機的不安全而影響較安全的遠地機。

2)因爲cu的老版本處理"~"的方法不完善,從安全性強的系統調用安全性弱的系統時,會使弱系統的用戶使用強系統用戶的cu傳送強系統的/etc/passwd文件,除非確信正在使用的cu是正確版本,不然不要調用弱系統。

保持用戶安全的要點

1)保持口令的安全。

◆不要將口令寫下來。

◆不要將口令存於終端功能鍵或MODEM的字符串存儲器中。

◆不要選取顯而易見的信息做口令。

◆不要讓別人知道。

◆不要交替使用兩個口令。

◆不要在不一樣系統上使用同一口令。

◆不要讓人看見本身在輸入口令。

2)不要讓本身的文件或目錄可被他人寫。

◆若是不信任本組用戶,umask設置爲022

◆確保本身的.profile除本身外對他人都不可讀寫。

◆暫存目錄最好不用於存放重要文件。

◆確保HOME目錄對任何人不可寫。

uucp傳輸的文件應加密,並儘快私人化。

3)若不想要其餘用戶讀本身的文件或目錄,就要使本身的文件和目錄不容許任何人讀。

umask設置爲006/007

◆若不容許同組用戶存取本身的文件和目錄,umask設置爲077

◆暫存文件按當前umask設置,存放重要數據到暫存文件的程序,就被寫成能確保暫存文件對其餘用戶不可讀。

◆確保HOME目錄對每一個用戶不可讀。

4)不要寫SUID/SGID程序。

5)當心地拷貝和移動文件。

cp拷貝文件時,記住目的文件的許可方式將和文件相同,包括SUID/SGID許可在內,如目的文件已存在,則目的文件的存取許可和全部者均不變。

mv移動文件時,記住目的文件的許可方式將和文件相同,包括SUID/SGID許可在內,若在同一文件系統內移文件,目的文件的全部者和小組都不變,不然,目的文件的全部者和小組將設置成本用戶的有效UIDGID

◆當心使用cpio命令,它能覆蓋不在本用戶當前目錄結構中的文件,可用t選項首先列出要被拷貝的文件。

6)刪除一個SUID/SGID程序時,先檢查該程序的連接數,若有多個鏈,則將存取許可方式改成000,而後再刪除該程序,或先寫空該程序再刪除,也可將該程序的i節點號給系統管理員去查找其餘鏈。

7)用crypt加密不肯讓任何用戶(包括超級用戶)看的文件。

◆不要將關鍵詞做爲命令變量。

◆用ed -xvi -x編輯加密文件。

8)除了信任的用戶外,不要運行其餘用戶的程序。

9)在本身的PATH中,將系統目錄放在前面。

10)不要離開本身登陸的終端。

11)如有智能終端,小心來自其餘用戶,包括write命令,mail命令和其餘用戶文件

的信息中有換碼序列。

12)用【Ctrl+D】或【exit】退出後,在斷開與系統的鏈接前等待看到login:提示。

13)注意cu版本。

◆不要用cu調用安全性更強的系統。

◆除非確信cu不會被誘騙去發送文件,不然不要用cu調用安全性較弱的系統。

習題

1.刪除一個用戶必須:()

A.刪除/etc/passwd文件中此用戶的記錄

B.刪除/etc/group文件中說起的此用戶

C.刪除用戶的主目錄

D.刪除此用戶建立或屬於此用戶的文件

2.對全部用戶增長對文件test的讀權限,能夠用命令:( )

A$chmod ar+test

B$chmod a+rtest

C$chmod +artest

D$chmod r+test

3.臨時查封用戶,在該用戶的passwd域的第一個字符前面加上一個____( )

A&B!C||D*

8章備份數據和資料

本章內容提要

☆備份計劃

☆簡單備份

☆多級備份

☆壓縮備份

☆要求理解備份的重要性,掌握備份計劃,簡單備份,多級備份,壓縮備份實施方法

8.1備份計劃

8.1.1備份的重要

每一個人的數據對於他本身來講都是最有意義的,最有價值的。假如不當心丟失數據,那麼就要花費不少的時間和精力來恢復,雖然有時候是不能恢復的。因此,必須重視數據的保護,並採起正確的保護措施。

丟失數據通常有如下幾個緣由:硬件出錯、軟件存在問題、人的操做的失誤,天然災害等。雖然現代硬件已經愈來愈可靠,但損壞仍是不可避免的。存儲數據最重要的硬件是硬盤,它依賴微小的磁區在充滿電噪聲的世界上保存數據。當今的軟件的可靠性仍然沒有獲得保證,一個真正徹底可靠的程序幾乎是不可能出現的。而人爲因素更是數據丟失的一大緣由,由於人的操做可能會出現失誤,並且人爲故意破壞數據的可能性也不能排除。此外天然災害形成數據丟失或毀壞更是不可避免的。總之,想要數據一點錯誤都不出,全部工做均可以完美的進行,這幾乎是不可能的。

備份是進行數據保護的一個十分不錯的方法。擁有多個備份,就不怕其中的某個被損壞,假如數據真的被損壞了,只需從備份數據中恢復數據就能夠了。正確的備份是很重要的。正確的備份要保證它是有效的,可用的。

8.1.2備分內容

許多人都有可能有這樣的想法,就是儘量的多備份。可是實際上,有些數據是沒必要要備份的,以避免花費沒必要要的時間、精力和金錢。其中包括那些很容易從新安裝的軟件,但即便是這些軟件,也會有一些重要的配置文件須要備份;另外還包括/proc文件系統,由於它只含有內核且老是自動產生的數據,因此沒有必要備份。尤爲沒有必要備份/proc/kcore文件,由於它只是當前物理內存的一個映像,並且很是大。此外可備份也可不備份的部分包括newsspoollog文件、以及/var中的許多數據。

通常來講,須要備份的是用戶文件(/home)和系統配置文件(主要在/etc)。基本上,用戶應該檢查包含任何下列文件的目錄:非標準Linux安裝文件或比將要新安裝的Linux還新的文件並分開那些將要繼續保留的文件。

建議對下列每一項都作了一個.tgz的文件並存儲在備份媒體上:

/usr/lib/rn

/usr/lib/smail

/usr/lib/trn/usr/lib的其餘部分須要從新安裝)

/usr/local/src

/usr/local/bin

/usr/local/lib

/usr/local/lpfont

/usr/local/man

/usr/local/sbin

/usr/local/thot

/usr/openwin

/usr/X11R6/lib/X11/app -defaults

/usr/X11R6/lib/X11/initrc(其餘Xfree86的部分要從新安裝)

/var/named

/var/openwin

/var/texfonts

8.1.3選擇備份介質

要想獲得有效的、可用的備份,最重要的是選擇好備份介質。選擇備份介質須要考慮到成本、可靠性、速度、可取得、可用性。

成本是很重要的,由於可能須要有某些數據的多個存儲、多個備份。所以經常須要便宜的介質。

可靠性是最重要的,由於壞的備份會叫人更難辦。備份介質必須能保存數據不少年而不會出現數據損壞。如何使用備份介質會影響到它的可靠性。硬盤通常來講是至關可靠的,可是若是用它做爲備份介質,並且與它要備份的數據放在同一臺機器上,那麼它的可靠性就得不到保證了。

若是備份不是交互進行,那麼速度一般不是過重要。可是若是備份只能在機器空閒時進行,那麼速度就是個問題了。

可取得性很明顯是必要的,由於用戶不可能使用一種不存在的介質。可是還要注意的是這種介質在未來是否還能獲得,而且它是否能在其餘計算機上使用。

可用性是決定是否須要常常作備份的一個主要因素。備份越容易使用越好。一種備份介質千萬不能太難以使用。

備份介質的典型選擇是軟盤和磁帶。軟盤很便宜,可靠性還能夠,速度不很快,並且很容易獲得,可是不太適合備份大量的數據。磁帶有的便宜有的貴,通常來講價格仍是能夠接受的,可靠性還能夠,速度也不錯,很容易獲得,並且磁帶的容量也比較合適。此外也還有一些其餘選擇。可是這些備份介質通常很差取得,但若是這不是問題,那麼這些介質也不錯。例如,磁光盤同時具備軟盤(隨機訪問,使得恢復單個文件速度很快)和磁帶(能備份大量數據)的優勢。

如今使用硬盤的愈來愈多了。由於幾十GB的大硬盤實在是便宜,速度又是一流。另外,CDR/CDRW也是不錯的選擇,可是多了刻盤的時間,速度不及硬盤,卻是畢竟便宜。另外經常使用的介質就是磁帶了。流式讀寫,不能隨機存取。但便宜穩定是其優勢。

8.2實施備份

8.2.1簡單備份

簡單的備份是一次備份全部東西,而後再備份從上次備份之後修改過的全部東西。第一個備份叫徹底備份(fullbackup),接下來所作的備份叫增量備份(incrementalbackups)。

徹底備份比增量備份要花費更多的時間和勞動,由於有不少的東西須要一次寫到磁帶上,有時候徹底備份還有可能一盤磁帶都不夠(更別說軟盤了)。從增量備份中進行恢復要比從徹底備份進行恢復須要更多的時間和更多的勞動。備份能夠進行優化,作法是自上次全備份之後,總用增量備份保存全部修改過的文件。這樣,備份可能須要多花上一點工做量,但用戶只需恢復一個全備份和一個增量備份,而不須要作更多的工做了。下面幾種方法能夠實現簡單備份。

1tar

tar能夠爲文件和目錄建立檔案。利用tar,用戶能夠爲某一特定文件建立檔案(備份文件),也能夠在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上建立檔案,如今,用戶能夠在任何設備上建立檔案。利用tar命令,能夠把一大堆的文件和目錄所有打包成一個文件,這對於備份文件或將幾個文件組合成爲一個文件以便於網絡傳輸是很是有用的。Linux上的tarGNU版本的。

語法:

tar[主選項+輔選項]文件或者目錄

使用該命令時,主選項是必需要有的,它告訴tar要作什麼事情,輔選項是輔助使用的,能夠選用。

主選項:

c:建立新的檔案文件。若是用戶想備份一個目錄或是一些文件,就要選擇這個選項。

r:把要存檔的文件追加到檔案文件的末尾。例如用戶已經做好備份文件,又發現還有

一個目錄或是一些文件忘記備份了,這時能夠使用該選項,將忘記的目錄或文件追加到備份文件中。

t:列出檔案文件的內容,查看已經備份了哪些文件。

u:更新文件。就是說,用新增的文件取代原備份文件,若是在備份文件中找不到要更新的文件,則把它追加到備份文件的最後。

x:從檔案文件中釋放文件。

輔助選項:

b:該選項是爲磁帶機設定的。其後跟一數字,用來講明區塊的大小,系統預設值爲2020*512bytes)。

f:使用檔案文件或設備,這個選項一般是必選的。

k:保存已經存在的文件。例如用戶把某個文件還原,在還原的過程當中,遇到相同的文件,不會進行覆蓋。

m:在還原文件時,把全部文件的修改時間設定爲如今。

M:建立多卷的檔案文件,以便在幾個磁盤中存放。

v:詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。

w:每一步都要求確認。

z:用gzip來壓縮/解壓縮文件,加上該選項後能夠將檔案文件進行壓縮,但還原時也必定要使用該選項進行解壓縮。

1:把/home目錄下包括它的子目錄所有作備份文件,備份文件名爲usr.tar

$tar cvf usr.tar/home

2:把/home目錄下包括它的子目錄所有作備份文件,並進行壓縮,備份文件名爲usr.tar.gz

$tar czvf usr.tar.gz/home

3:把usr.tar.gz這個備份文件還原並解壓縮。

$tar xzvf usr.tar.gz

4:查看usr.tar備份文件的內容,並以分屏方式顯示在顯示器上。

$tar tvf usr.tar|more

要將文件備份到一個特定的設備,只需把設備名做爲備份文件名。

5:用戶在/dev/fd0設備的軟盤中建立一個備份文件,並將/home目錄中全部的文件都拷貝到備份文件中。

$tar cf/dev/fd0/home

要恢復設備磁盤中的文件,則可以使用xf選項:

$tarxf/dev/fd0

若是用戶備份的文件大小超過設備可用的存貯空間,能夠建立一個多卷的tar備份文件。

M選項指示tar命令提示您使用一個新的存貯設備,當使用M選項向一個軟驅進行存檔時,tar命令在一張軟盤已滿的時候會提醒您再放入一張新的軟盤。這樣就能夠把tar檔案存入幾張磁盤中。

$tar cMf/dev/fd0/home

要恢復幾張盤中的檔案,只要將第一張放入軟驅,而後輸入有xM選項的tar命令。在必要時會被提醒放入另一張軟盤。

$tar xMf/dev/fd0

2gzip命令

減小文件大小有兩個明顯的好處,一是能夠減小存儲空間,二是經過網絡傳輸文件時,能夠減小傳輸的時間。gzip是在Linux系統中常用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。

語法:gzip[選項]壓縮(解壓縮)的文件名

各選項的含義:

-c:將輸出寫到標準輸出上,並保留原有文件。

-d:將壓縮文件解壓。

-l對每一個壓縮文件,顯示壓縮文件的大小、未壓縮文件的大小、壓縮比和未壓縮文件的名字。

-r:遞歸式地查找指定目錄並壓縮其中的全部文件或者是解壓縮。

-t:測試,檢查壓縮文件是否完整。

-v:對每個壓縮和解壓的文件,顯示文件名和壓縮比。

-num:用指定的數字num調整壓縮的速度,-1--fast表示最快壓縮方法(低壓縮比),-9--best表示最慢壓縮方法(高壓縮比)。系統默認值爲6

假設一個目錄/home下有文件mm.txtsort.txtxx.com

1:把/home目錄下的每一個文件壓縮成.gz文件。

$cd/home

$gzip*

$ls

m.txt.gzsort.txt.gzxx.com.gz

2:把例1中每一個壓縮的文件解壓,並列出詳細的信息。

$gzip-dv*

mm.txt.gz43.1%-----replaced with mm.txt

sort.txt.gz43.1%-----replaced with sort.txt

xx.com.gz43.1%-----replaced with xx.com

$ls

mm.txt sort.tx txx.com

3:詳細顯示例1中每一個壓縮的文件的信息,並不解壓。

$gzip-l*

compressed uncompr.ratio uncompressed_name

277 445 43.1%mm.txt

278 445 43.1%sort.txt

277 445 43.1%xx.com

$ls

mm.txt.gz sort.txt.gz xx.com.gz

4:壓縮一個tar備份文件,如usr.tar,此時壓縮文件的擴展名爲.tar.gz

$gzipusr.tar

$ls

usr.tar.gz

3unzip命令

Windows下的壓縮軟件WinZip壓縮的文件如何在Linux系統下展開呢?能夠用unzip命令,該命令用於解擴展名爲.zip的壓縮文件。

語法:unzip[選項]壓縮文件名.zip

各選項的含義:

-x:文件列表解壓縮文件,但不包括指定的file文件。

-v:查看壓縮文件目錄,但不解壓。

-t:測試文件有無損壞,但不解壓。

-d:把壓縮文件解到指定目錄下。

-z:只顯示壓縮文件的註解。

-n:不覆蓋已經存在的文件。

-o:覆蓋已存在的文件且不要求用戶確認。

-j:不重建文檔的目錄結構,把全部文件解壓到同一目錄下。

1:將壓縮文件text.zip在當前目錄下解壓縮。

$unziptext.zip

2:將壓縮文件text.zip在指定目錄/tmp下解壓縮,若是已有相同的文件存在,要求unzip命令不覆蓋原先的文件。

$unzip -n text.zip -d/tmp

3:查看壓縮文件目錄,但不解壓。

$unzip -v text.zip

4zgrep命令

這個命令的功能是在壓縮文件中尋找匹配的正則表達式,用法和grep命令同樣,只不過操做的對象是壓縮文件。若是用戶想看看在某個壓縮文件中有沒有某一句話,即可用zgrep命令。

5rsync

一個富有特點的工具。能夠跨越網絡使用。rsync是鏡像文件最有效的工具之一。它同時能夠保持文件原有的狀態,如權限、連接等等。它還支持所謂的「anonymous」匿名模式,既能夠從服務器也能夠從遠程客戶機容許程序。使用客戶機運行時沒必要使用root用戶,能夠匿名工做。須要使用註冊用戶時,自動加密認證信息(128位!)。安全有保證。功能十分強大,使用起來駕輕就熟。

從下面網址能夠獲得rsync:http://rsync.samba.org/

該工具被安裝後會在/etc/目錄下生成rsyncd.conf文件,能夠按照本身的需求配置。以下所示:

motd file = /etc/rsync.motd # specifies a file to be displayed,legal disclaimer,etc.

max connections = 5 # maximum number of connections so you don't get flooded

[pub-ftp]

comment = public ftp area # simple comment

path = /home/ftp/pub # path to the directory being exported

read only = yes # make it readonly, great for exported directories

chroot = yes # chroot to /home/ftp/pub

uid = nobody # explicitly set the UID

gid = nobody # explicitly set the GID

[secret-stuff]

comment = my secret stuff

path=/home/user/secret#path to my stuff

list = no # hide this module when asked for a list

secrets file = /etc/rsync.users # password file

auth users = me,bob,santa # list of users It rust to see my secret stuff

hosts allow = 1.1.1.1,2.2.2.2 # list of hosts to allow

使用manrsyncd.conf能夠查看詳細資料。

和防火牆合用時,須要修改ipchainsrsyncd使用TCP,873端口。

ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 873

ipchains -A input -p tcp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0873

ipchains -A input -p tcp -j DENY -s 0.0.0.0/0-d0.0.0.0/0 873

6.其餘商業軟件

另外還有一些其餘商業軟件也可用來備份,下面列出幾種,從其後的網址中可獲得相應的軟件。

BRU(Backup and Restore Utility)

http://www.estinc.com/features.html

Quickstart

http://www.estinc.com/qsdr.html

BackupProfessional

http://www.unitrends.com/bp.html

CTAR

http://www.unitrends.com/ctar.html

CTAR:NET

http://www.unitrends.com/ctarnet.html

PCPara Chute

http://www.unitrends.com/pcpara.html

8.2.2多級備份

簡單備份的方法,適合於我的使用或小的站點使用。對於多數很重要的使用,使用多級備份更好。

簡單備份有兩個備份級:徹底備份和增量備份。這能夠通用化到任何數量的級別。徹底備份是0級,增量備份可分爲123級等等,每一個增量備份級備份本級或上一級別的上次備份後全部修改過的東西。

這樣能夠擁有更便宜的更長的備份記錄歷史(backup history)。更長的備份記錄歷史是很是有用的,由於刪除或損壞的文件可能長期得不到注意。這樣即便得不到一個文件的最新版本,但也比沒有好。

備份級可以使文件系統在最少的時間內恢復。若是您有許多隻是單調增加級別數的增量備份,要恢復整個文件系統,只須要恢復全部備份。而若是級別數不是單調增加,能夠減小備份和恢復的數目。

爲了減小用於恢復操做時的已備份磁帶數量,能夠用小的級別作每一個增量磁帶。然而,這樣作會作每一個增量備份的時間會增長(每一個備份拷貝了上次全備份後改變的全部東西)

8.2.3 壓縮備份 

備份佔用了大量的介質空間,並且要花費大量金錢。爲了節省存儲空間,經常將備份文件進行壓縮。有幾種方法。  

其中一種辦法是使用tar中的-z選項,進行壓縮備份。可是壓縮備份可能致使問題。因爲壓縮工做的原理,若是一個bit錯誤,可能致使全部其餘壓縮數據不可用。雖然有些備份程序內置糾錯功能,但沒有什麼辦法能夠處理大量的錯誤。因此這個壓縮方法不是很好。  

還有一個方法是單獨壓縮每一個文件,這樣一個文件的丟失,不會影響到其餘文件。afio程序(cpio的一個變種)能夠用來作這樣的工做。  

壓縮須要時間,這可能使得備份程序不能儘量快地將數據寫到磁帶驅動器中,這能夠靠輸出緩衝來避免(若是備份程序足夠智能,能夠內置,不然能夠用其餘程序來作),但即便這樣,運行工做也並不必定足夠好。 

8.2.4  使用舉例 

1tar至文件 

% cd /u/jypai  

% tar cf backup.tar doc         <-- /dev/rst1改成backup.tar,進行tar  

% ls -l backup.tar  

-rw-r--r--  1 jypai       20480 Oct  2 17:34 backup.tar  

% cd /tmp                       <-- 換至/tmp下解tar,以避免覆蓋掉原來的doc  

% tar xf /u/jypai/backup.tar    <-- tar  

% ls doc  

doc:  

Amanda.is.charming      TANet.lst address-book  

-documents.tar       address-book 

 % 

 通常來講,用戶都會順便將.tar文件用compress壓縮成.Z文件,節省儲存空間;要還

原時,要先uncompress,再解tar

 % compress backup.tar                                      <-- 壓縮  

% ls -l backup* 

 -rw-r--r--  1 jypai        3085 Oct  2 17:34 backup.tar.Z  <-- 只剩.Z文件 

 % uncompress backup.tar.Z                                  <-- 解壓縮 

 % tar xf backup.tar                                        <-- tar  

%               

同理,也能夠用gzip/gunzip來代替compress/uncompress,不過要注意未來要解壓縮的電腦中有沒有gunzip可用。  

2tar的線上壓縮/解壓縮 

 tarproject所發展的tar版本,它增長了許多功能,例如線上壓縮(在tar的同時進行壓縮;若用UNIX標準tar,只能在執行完後,另外再進行壓縮,因此不適用於磁帶)、remote tar(經由網絡,每部電腦均可以利用server上的磁帶機進行tar)...等等。本小節將介紹最經常使用到的線上壓縮。 

tar不是標準UNIX軟件,您必須先肯定本身的電腦上有安裝。紅旗LINUX上已安裝方法是執行"tar --help",如果 tar,則會顯示以下的消息: 

% tar --help                                    <-- 肯定您執行到的是 tar  

This is  tar, the tape archiving program. 

 choose one of the following: 

 -A, --catenate,  

    --concatenate       append tar files to an archive 

 ....()  

%  

%  

使用 tar線上壓縮功能,只要增長「z」選項便可,下面是一個簡單的示範:

  % cd /u/jypai  

% tar zcf /tmp/backup.tar.gz doc     <-- 增長'z'(線上壓縮)功能 

% cd /tmp  

% tar ztf backup.tar.gz              <-- 增長'z'(線上解壓)功能  

doc/Amanda.is.charming  

doc/-documents.tar  

doc/TANet.lst 

 doc/address-book 

 % tar zxf backup.tar.gz              <--增長'z'(線上解壓)功能 

其中,「z」功能選項的做用是將文件內容交由gzip來作壓縮處理,tar另外還提供'Z'選項,將壓縮處理交由compress來作,例如:

 % tar Zcf backup.tar.Z doc  

 

習題 

1.丟失數據通常有如下幾個緣由,它們是?(   )

 A.硬件出錯     B.軟件存在問題     C.人的操做的失誤     D.天然災害

 2.通常來講,須要備份的是:(   )

 A.用戶文件(/home ) 

B/var

 C.系統配置文件(主要在/etc )。  

D/proc 文件系統 

3.壓縮備份能夠使用哪一種方法?(   ) 

A.使用tar中的-z選項 

B.用afio 程序單獨壓縮每一個文件 

C.用rsync 

D.使用tar中的-v選項 

 

9章文件系統

本章內容提要 

 

文件是一組相關信息集合,在Linux中文件是不包括其餘結構的字符流。文件中的任何兩個字節之間沒有任何相互關係。文件中各字節的意義是靠相應的軟件去解釋的。Linux用文件來組織信息。文件的內容可爲文本、程序信息、命令腳本或者實際中其餘類型的信息。 在紅旗Linux系統中,文件包括普通文件、目錄文件、設備文件、連接文件。其中普通文件又分爲文本文件、數據x文件、命令文件和可執行文件。  

本章重點內容  

☆ 創建文件系統 

☆ 安裝文件系統 

☆ 拆卸文件系統 

☆ 網絡文件系統 

☆ 交換空間

☆ 磁盤空間配額管理 

☆ 碎片清理和文件系統維護 

☆ 要求掌握文件系統的創建,安裝,拆卸和維護。

9.1  文 件 系 統 

文件系統是操做系統用於明確磁盤或分區上的文件的方法和數據結構;即在磁盤上組織文件的方法。也指用於存儲文件的磁盤或分區或文件系統種類。所以,能夠說「我有2個文件系統」意思是有2個分區,一個存文件,或者用「擴展文件系統」,意思是文件系統的種類。 

磁盤或分區和它所包括的文件系統的不一樣是很重要的。少數程序(包括最有理由的產生文件系統的程序)直接對磁盤或分區的原始扇區進行操做;這可能破壞一個存在的文件系統。大部分程序基於文件系統進行操做,在不一樣種文件系統上不能工做。  

一個分區或磁盤能做爲文件系統使用前,須要初始化,並將記錄數據結構寫到磁盤上。

這個過程就叫創建文件系統。  

大部分linux文件系統種類具備相似的通用結構,即便細節有些變化。其中心概念是超級塊superblocki節點inode,數據塊data block,目錄塊directory block,和間接塊indirection block。超級塊包括文件系統的整體信息,好比大小(其準確信息依賴文件系統)。i節點包括除了名字外的一個文件的全部信息,名字與i節點數目一塊兒存在目錄中,目錄條目包括文件名和文件的i節點數目。i節點包括幾個數據塊的數目,用於存儲文件的數據。i節點中只有少許數據塊數的空間,若是須要更多,會動態分配指向數據塊的指針空間。這些動態分配的塊是間接塊;爲了找到數據塊,這名字指出它必須先找到間接塊的號碼。  

linux文件系統一般容許在文件中產生孔(hole),意思是文件系統僞裝文件中有一個特殊的位置只有0字節,但沒有爲這文件的這個位置保留實際的磁盤空間(這意味着這個文件將少用一些磁盤空間)。這在小的二進制文件中常常發生,Linux共享庫、一些數據庫和其餘一些特殊狀況。(孔由存儲在間接塊或i節點中的做爲數據塊地址的一個特殊值實現,這個特殊地址說明沒有爲文件的這個部分分配數據塊,即,文件中有一個孔)。 

Linux的最重要特徵之一就是支持多種文件系統。這樣它更加靈活並能夠和許多其餘種操做系統共存。其中下面幾種是最經常使用的: 

 Minix:最古老的,但一直被認爲是最可靠的文件系統。它的功能和容量都十分有限。文件名最長只能到30個字符,每一個文件系統最多支持64MB。 

 Xiaminix文件系統的一個修正版本,提高了文件名和文件系統大小的限制,除此之外並無增長新的功能。該文件系統一直都不太流行,但運行狀況不錯。 

 Ext2:當前最通用的Linux文件系統。它被設計成易於向上兼容,因此新的文件系統代碼無需重作已有的文件系統。 

 Extext2的老版,它不支持向上兼容。很難用新版安裝程序安裝,如今幾乎沒人再用它。

  Msdos:與MSDOSOS/2等的FAT文件系統兼容。

  UmsdosLinux下的擴展msdos文件系統,支持長文件系統、文件全部者、文件權限、連接以及折本文件。 

 ISO9660:標準的CD-ROM文件系統。

  NFS:網絡文件系統,使得多太計算機之間更易於共享文件。

  HPFSOS/2文件系統。 

 SYSVUNIX System V 文件系統。

 Raiserfsext3均是linux環境下對基於低版本內核的ext2文件系統的一個大的修改,從名字中能夠看出ext3是直接對ext2的升級,並且在2.4的測試版本中已經能夠看到ext3的影子,可是因爲raiserfs文件系統還有一些bug沒有解決,因此雖然raiserfs文件系統具備不少做爲高級服務器文件系統的優勢,出於穩定性的考慮並無放進2.4的測試內核中。不過從文件系統的角度來看,raiserfs文件系統對比ext2來講,是有至關大的進步的。好比說,對小文件的存儲處理,對文件系統故障的修復等等。如今暫且只能在Intel結構體系上使用,

如今Internet上已經有不少將ext2文件系統直接轉爲raiserfs文件系統的工具。不過也能夠將其編譯進kernel或做成一個安裝模塊。 

用戶能夠從http://www.devlinux.com/namesys下載raiserfs的補丁程序,而且要注意下載的補丁版本和kernel的版本是一致的。 

下載後用root身份登陸進入系統,切換至/usr/src/linux目錄,執行命令:  

    #cd [文件下載的目錄

# gunzip linux-2.2.16-reiserfs-3.5.24-patch.gz  

    # patch -p1 -i linux-2.2.16-reiserfs-3.5.24-patch  

    假設讀者使用的是2.2.16的內核,這也是紅旗linux server2的默認設置。這樣就能夠使用其餘編譯內核的工具來完成加載或編譯進內核的任務了。 

Reiserfs的相關應用程序在 /usr/src/linux/fs/reiserfs/utils 目錄下,好比說咱們mkreiserfs命令從新格式化一個已經存在的分區成raiserfs文件系統類型,在作完這一步後,能夠修改/ets/fstab文件,指定加載這個raiserfs分區,或使用如「mount -t reiserfs /dev/hda2 /raiserfs」,加載這個raiserfs分區到目錄/raiserfs下,這樣就能夠同使用其餘類型分區同樣使用這個新的分區了。 

固然這個工做也能夠經過經常使用命令fdisk來完成。 

Linux並不使用設備號或驅動器名稱來訪問獨立文件系統,而是經過文件系統層次樹結構來訪問它。Linux每安裝一個文件系統時都會將其加入到文件系統層次樹中。無論文件系統屬於什麼類型,都被鏈接到一個目錄上且此文件系統上的文件將取代此目錄中已存在的文件。這個目錄被稱爲安裝點或者安裝目錄。當卸載此文件系統時這個安裝目錄中原有的文件將再次出現。  

9.1.1  創建、安裝及拆卸文件系統 

1.創建文件系統 

Linux文件系統的創建是經過mkfs命令來完成的。用mkfs命令能夠在任何指定的塊設備上創建不一樣類型的文件系統。對於每一個不一樣種類的文件系統使用的都是不一樣的。單獨的程序。Mkfs只是對於不一樣文件系統肯定運行何種程序的一個外殼而已。 

通常最經常使用的mkfs語法以下: 

mkfs [-v] [-t fs-type] [fs-options] device [size] 

其中各參數的意義以下: 

-v:強迫產生長格式輸出;

 

-t fs-type:選擇文件類型。 fs-options:將要創建的文件系統選項,它能夠是下面的選項。

 -c:搜索壞塊並初始化相應的壞塊表。 

-l filename:從文件filename中讀初始的壞塊表。 

-v:讓實際建造的文件系統程序產生長格式輸出。 

device:文件系統所在設備號。

 size:文件系統大小。 

例:在軟盤上創建一個ext2文件系統:  

#mkfs t ext2 /dev/fd0  

命令運行後,軟盤上已創建好ext2文件系統,能夠對其進行加載或讀寫操做,並在必要時寫入/etc/fstab文件中,以便在引導時安裝。  

2.安裝文件系統 

一個文件系統,若是其存在但卻未被合併到可存取文件系統結構中,則稱爲卸下的文件系統。若是它已經被併入到可存取的文件系統結構中,則稱其爲已安裝的文件系統。一個文件系統在使用以前,必須執行文件系統的安裝;只有安裝後的文件系統,用戶才能對其進行通常的文件操做。文件系統的安裝,能夠在系統引導過程當中自動安裝,也能夠使用mount命令手工安裝。 

多數狀況下,用戶須要使用的文件系統是比較固定的,不會常常變化。若是每次使用時都須要從新安裝這是很麻煩的,所以,能夠方便地定義一個系統在引導時自動安裝文件系統的方法。經過修改/etc/fstab文件中的表項來選擇啓動時須要安裝的文件系統。在內核引導過程時,它首先從LILO指定的設備上安裝根文件系統,隨後將加載/etc/fstab文件中列出的文件系統。/etc/fstab指定了該系統中的文件系統的類型、安裝位置及可選參數。fstab是一個文本文件,能夠用任何編輯軟件進行修改,但請在修改前做好備份,由於破壞或刪除其中的任何一行將致使下次系統引導時該文件系統不能被加載。該文件被稱爲文件系統安裝表,其中每一行表明一個須要安裝的文件系統,其格式以下: 

device  mnt  type  options  dump  passno 

其中: 

device:指定須要安裝的文件系統。

 mnt:指定文件系統的安裝點。對交換文件使用none。 

type:指定安裝文件系統的類型,目前支持這幾種類型: 

    minix,ext,ext2,xiafs,msdos,hpfs,iso9660,nfs,swap,umsdos,sysv

 options:使用逗號隔開的安裝選項列表,至少須要指出文件系統的安裝類型。 

dump:指定兩次備份之間的時間。

 passno:指定系統引導時檢查文件系統的順序,根系統值爲1,其他值爲2,若是此值沒有指定,則引導時文件系統不被檢查。

 下面是一個實際的/etc/fstab文件: 

$ Sample /etc/fstab file 

/dev/hda3   /             ext2    defaults  1  1 

/dev/hda5   /dos          vft     defaults  0  0 

/dev/fdo    /mnt/floppy    ext2    noauto  0  0 

/dev/cdrom  /mnt/cdrom   iso9660  noauto  0  0 

其中,/dev/hda3 是根文件系統,使用ext2文件系統類型,安裝選項是默認值;/dev/hda5 Windows 95/98 的 vfat 文件系統,/dev/fdo /dev/cdrom 分別是軟驅和光驅。

 還要說明的一點是所謂的默認值defaults表明如下選項:設定爲可讀/寫文件系統;容許執行二進制文件;能夠使用mount a 命令安裝該系統;不容許普通用戶安裝該系統;全部I/O操做均採用異步執行的方式。 

除了在系統引導時自動安裝文件系統之外,用戶也能夠使用mount命令實現對文件系統的手工安裝。Mount命令用於告訴Linux系統內核將一個文件系統合併到可訪問的文件系統結構中。 

Mount命令的語法以下: 

Mount [-t type] device  dir 

其中,device:表明設備名;dir:表明安裝點。 

例如: 

$ mount t ext2 /dev/fdo /mnt/floppy 

該命令把設備/dev/fdo上類型爲ext2的文件系統安裝到/mnt/floppy下。 

Mount命令還帶有許多參數,以下: 

-f: 完成每步操做,但不真正安裝文件系統。 

-v: 長格式模式。 

-w: 安裝有讀/寫權限的文件系統。 

-r: 安裝只讀文件系統。 

-n: 不把條目寫入/etc/mtab 的文件。 

-a: 安裝/etc/fstab 中全部文件系統。 

注意:在安裝文件系統以前,設備上必須已經創建了文件系統,而且安裝時指明的文件系統類型應與創建的文件系統類型一致。 

3.卸下文件系統 

文件系統的拆卸與安裝是相反的過程。當再也不使用一個文件系統時,能夠將其卸下。

除了根文件系統外,其餘文件系統都是能夠拆卸的。經常使用的是對於軟盤和光盤上的文件系統,每更換一次盤就必須安裝/拆卸一次。 

拆卸文件系統可以使用umount 命令,其格式以下: 

umount  設備名安裝點

 該命令使用設備名或者安裝點做爲參數,用於拆卸設備名或者安裝點所對應的文件系統。

 Umount命令拆卸文件時容易犯的錯誤是拆卸正在使用的文件系統。在這種狀況下,應該退出安裝目錄並通知在此目錄下工做的其餘用戶也一塊兒退出,而後在執行umount命令。

 只有超級用戶才能使用mount 和 umount命令。 

注意:若是文件系統已在/etc/fstab中出現,則加載時只需指出安裝位置或設備名稱,如:#mount /home與此相對應,卸載一個文件系統的命令爲umount,將文件系統/home卸載:#umount /home  

9.2  網絡文件系統  

9.2.1  網絡文件系統的概念 

NFSNetwork File System),也即網絡文件系統,是UNIX系統間實現磁盤文件共享的一種方法,它由Sun Microsystems公司發展起來,逐漸成爲主機間共享資源的一個標準。

它能夠把遠程主機上的一個文件系統安裝在本機的某一目錄下,使對遠程主機上文件的訪問變成了對本地文件的訪問,使得運行不一樣操做系統的不一樣體系結構的計算機之間經過網絡實現資源共享,節省了磁盤空間。NFS能夠在不一樣的操做系統中實現。在每一個操做系統上,NFS模型都被映射爲本地文件系統,讓用戶感受就像在本機工做同樣。NFS還容許多個計算機使用同一文件。

 NFS系統要正常工做必須知足三個必要條件:客戶機服務器之間能夠經過TCP/IP協議進行通訊;服務器必須使文件系統是能夠被安裝的;客戶機必須將此文件系統安裝爲NFS文件系統。其中服務器是指用於放置被其餘計算機安裝的文件系統的計算機。客戶機指用於安裝該文件系統的計算機。 

9.2.2  網絡文件系統的安裝 

NFS使用遠程過程調用(RPC)方法,由後臺的駐留服務和配置文件控制。要啓動NFS進程,須要以root身份登陸並執行:# /etc/rc.d/init.d/nfs start  

NFS的主要配置文件爲/etc/exports/etc/fstab。首先要把準備共享的文件目錄(注意:這裏是文件目錄,而非文件系統)和有關選項填入/etc/exports,格式爲:  

Dir_to_export host1(permission) host2(permission)  

其中hostn爲容許共享該目錄的其餘主機,permission是它們使用該目錄時的權限,分爲rw(讀寫)、ro(只讀)和no_root_squash(認可客戶機的root用戶權限)。  

配置好/etc/exports後,利用exportfs命令向後臺駐留服務發出信號,要NFS相關進程從新讀此文件並作更新。如:  

# exportfs -a  

此時,便可在客戶端安裝該目錄,若是主機名爲server1, 共享目錄爲/home/exports, 則在客戶機上使用mount命令安裝此輸出文件系統:  

# mount server1:/home/exports /home/share  

說明:mount還有其餘多個參數,下面是其格式: 

mount [-t nfs] [-o specific-options] 文件系統 安裝點

 其中參數的意義以下: 

-t:指定安裝的文件系統類型。

 文件系統:要安裝的文件系統名。

 

安裝點:該文件系統

的安裝目錄。 -o:指定安裝選項。 specific-options:安裝選項,其中最經常使用的選項以下: 

ro:只讀。 

rw:可讀寫。 

soft:軟安裝。 

hard:硬安裝。 

Rsize:指定NFS客戶讀請求使用的數據報的大小,默認值爲1024

 Wsize:指定NFS客戶寫請求使用的數據報的大小,默認值爲1024。 Tim:置NFS客戶等待請求完成的時間,默認值爲0.7秒。 

若是須要客戶機在引導時即加載該輸出文件系統,則在/etc/fstab中加入此目錄名。不一樣的是,在設備名一列使用server1:/home/exports, 並將其類型設爲nfs。 

9.3  磁盤空間配額管理  

當用戶總把一些很大的文件下載到主機,或在服務器上安裝佔用大量磁盤空間的應用軟件時,硬盤很快就撐得滿滿當當。其實,在紅旗Linux下,能夠經過對用戶的磁盤空間進行配額管理,用戶佔用的空間不會超過所規定的上限。下面就一個示例說明配額管理的方法。下面舉一個例子具體說明。 

假設有一名用戶Fred,規定其在文件系統/home上最大的磁盤佔有量爲1000 blocks。  

1)首先,創建相應的系統使用文件quota.userquota.group,前者是用戶磁盤配額文件,後者則是針對組用戶的。  

# touch /quota.user  

# touch /quota.group  

# chmod 600 /quota.user  

2)對該系統的/etc/fstab文件中的文件系統/home所在行進行修改,在參數列上加入usrquota,代表該文件系統將實施配額管理。  

/dev/hda5ext2/homedefaults, usrquota12  

3)從新加載該文件系統,使上述改動生效。  # mount o remountdefaults, usrquota /home  

4)下面,能夠肯定該用戶配額的具體上限。用命令edquota Fred打開配額文件,其內容爲:  

/dev/hda5:  

blocks in use: 0, limits(soft = 1200, hard = 1000)  

inodes in use: 0, limits(soft = 0, hard = 0)  

在這裏,只需改動limits後面的數值。hard項表明該用戶在此文件系統擁有的磁盤最大使用量,Soft項表示用戶能夠臨時超過其配額,達到該容量,但期限一過,用戶只能按其配額數量使用磁盤。通常只改變blocks的使用限制,而對inodes不作限制(使其limits項均爲0),由系統自動分配inode數量。改變完畢,可存盤退出。  

5)最後,打開該用戶磁盤配額控制。  

# quotaon uv Fred  

此時,用戶Fred在文件系統/home中僅擁有1000 blocks的空間,一旦該上限被突破,便會獲得警告信息,沒法繼續增長磁盤使用量。用戶可經過quota命令查看本身的磁盤配額,而root用戶能夠用repquota檢查全部用戶的配額狀況。  

9.4  碎片清理和文件系統維護 

文件寫到磁盤時,不必定在連續的塊中。沒在連續塊中的文件叫碎片。讀碎片文件時磁盤的讀寫頭須要更多地移動,因此將花費較長的時間。所以最好仍是避免碎片。Ext2文件系統試圖使碎片最少,即便不能將一個文件的全部塊存在連續扇區中,也儘可能靠近。Ext2一般有效地安排了文件其餘塊最近的空閒塊,所以不多須要關心碎片問題。

 Linux的文件系統至關複雜,很容易發生錯誤,所以Linux提供了一個命令fsck專門檢查文件系統的運行是否正確。Fsck命令的格式以下:

 Fsck  [選項1] [-s] [文件類型] [選項2] 文件系統名稱

 其中選項1及其意義以下: 

-A:檢查全部/etc/fstab中列出的文件系統。 

-V:長格式模式。 

-R:使用A參數時不檢查根文件系統。

 -T:不顯示開頭的標題欄。 

-N:顯示每一步的執行,但不進行檢查。 

-P:使用A參數時,檢查根文件系統。 

選項2及其意義以下: 

-a:直接修改檢查發現的問題,而不徵求用戶意見。 

-l:列出文件系統中全部的文件名。 -r:修改檢查發現的問題以前,徵求用戶贊成。 

此外: 

-s:檢查文件系統前列出管理塊信息。 

9.5  交 換 空 間 

9.5.1  建立交換空間 

交換(swap)空間是系統從硬盤中劃分的一部分硬盤空間,它與計算機的物理RAM 一塊兒構成整個系統的虛擬內存空間。這樣用戶用到的內存空間能夠大於實際的物理內存空間。當沒有空閒的物理內存空間時,操做系統內核會把當前沒有使用的內存塊的內容寫到硬盤以便騰出存儲空間,須要時內核又會把這些內存塊從硬盤中讀回到內存中。

 紅旗Linux運行時所需的總存儲空間與系統的運行方式有關,若是隻使用命令行方式那麼至少須要32MB總存儲空間;若是要運行X Window系統,那麼,至少須要64MB總存儲空間;並且SWAP空間大小至少要爲物理內存大小的1.5倍。

 Linux能夠用文件系統中的普通文件或者用一個專門的分區做爲交換空間。使用交換分區速度快,使用交換文件能夠靈活地改變大小。若是偶爾須要用到較大的交換空間,用戶能夠臨時創建一個交換文件,使用完後再將其刪除,而沒必要固定保留一個大的交換空間,以免硬盤空間的浪費。

 交換文件是一個普通文件,對操做系統內核而言,交換文件除了無空洞外,並沒有特別之處。所謂空洞,即佔用一片連續的硬盤物理空間。系統中最多能夠有個交換文件每個最大爲16MB。 

創建交換文件的步驟以下: 

1)建立一個具備指望交換大小的文件。 

$dd if=/dev/zero of=/swapfile  bs=1024 count=8192 

該命令物理地建立一個交換文件swapfile,每個交換塊大小爲1024字節,共有8192

塊。 

注意:由於交換文件是連續的,因此不能用cp來建立交換文件。

 (2)建立交換文件 

$mkswap /swapfile 8192 

3)強迫將交換區內容寫入磁盤 

$sync 

4)激活該交換文件 

$swapon  /swapfile 

5)使用完交換文件以後,關閉或刪除它 

$swapoff  /swapfile 

$rm /swapfile  

紅旗Linux容許有多個SWAP分區,每個最大可達124MB,這些SWAP分區能夠根據須要隨時建立並激活。交換分區也無特別之處,用戶能夠像建立其餘分區同樣地建立交換分區,稍有不一樣的是,交換分區是一個原始分區,它不包含任何文件系統。交換分區的創建及激活步驟以下: 

1)先用fdisk 建立一個分區。 

2)創建一個交換分區使用命令:mkswap  實際分區名。 

例:$mkswap c /dev/hda4 

138  9章  文件系統 

hda4表明實際的分區名,這裏沒有指明分區大小,所以系統會自動檢測。 

3)激活此交換分區:swapon  實際分區名。 

例:$swapon /dev/hda4 

若是設置系統啓動時也激活此交換區,請修改/etc/fstab,在其中加入適當的條目。

 例如:/dev/hda4 swap default 0 0 

4)關閉交換分區:swapoff  實際分區名

 例:$swapoff /dev/hda4 

 

習題 

1.文件標誌b表示:(   )

 A.字符設備文件

 B.目錄文件 

C.塊設備文件 

D.套接字 

2Linux支持哪些文件系統:(   ) 

AMinix   BExt2   CMsdos   DNFS   EISO9660 

3.在軟盤上創建一個ext2文件系統:(   ) 

A#mkfs t ext2 /dev/fd0 

Bformat a: 

Cfdisk  a: 

D#mkfs  ext2 /dev/fd0 

4.交換文件:(   )  

A.是連續的     B.是普通文件 

C.無空洞       D.能夠有個交換文件每個最大爲16M 

 

  

10章  目 錄 系 統

本章內容提要 

 

Linux的幾個重要目錄: / 目錄、/usr目錄、/var目錄、/proc目錄、/dev目錄、/etc目錄。 

瞭解目錄、/usr目錄、/var目錄、/proc目錄、/dev 目錄、/etc目錄的內容。

 Linux文件系統採用層次的多級樹形目錄結構,整個文n件系統有一個根目錄,在根目錄下包含若干子目錄。每一級目錄下均可以包含普通文件和次一級的目錄。 

10.1  文件名和路徑名 

10.1.1  文件名 

Linux系統與其餘操做系統同樣,必須使用一個名稱來標誌一個特定的文件。Linux文件的命名是至關寬鬆的,沒有什麼太多的特殊規定。 

Linux文件名中不能含有空格,此外,文件名中必定不能含有「/」由於「/」在Linux的目錄樹中表示根目錄或是路徑中的分隔符(如同DOS中的「\」)。文件名長度仍是有規定的,最大能夠爲256個字符,爲了與UNIX兼容,建議使用14個如下字符長度的文件名。

文件名一般是由字母數字「.」(點號)「_」(下劃線)和「-」(減號)組成的另外還有一些字母是合法的可是並不推薦使用它們例如「*」(星號)「?」(問號)「 」(空格)「$」(美圓符號)「&」和任何括號。在Linux中,文件名是區分大小寫的。因此,Linux的全部命令都用小寫字母表示。 

Linux在查找或者指定文件名時,能夠使用通配符。經常使用的通配符有:

 *:匹配零個或多個字符;如「a」匹配以字母a開頭的全部文件名。

 ?: 匹配任何一個字符,如「a?」匹配以字母a開頭的全部兩個字符的文件名。 

[abc1]:匹配任何一個在枚舉集合中的字符在該例中該集合是a b c 1。 

[a-z]:匹配任何一個小寫字符。 

[A-F]:匹配任何一個從AF的大寫字符。 

[0-9]:匹配任何一個單個數字。

 [a-z A-Z 0-9]:匹配任何字符(小寫或大小)或任何數字。 

10.1.2  路徑名 

系統查找一個文件所通過的路徑稱爲路徑名。若是使用當前目錄下的文件,能夠直接引用文件名。若是要使用其餘目錄下的文件,就必須指定該文件是在哪一個目錄之中。 

查找文件只能從兩個起點開始:即從根目錄開始或者從當前目錄開始,因而出現了兩種路徑名:絕對路徑名和相對路徑名。從根目錄開始的路徑名爲絕對路徑名;從用戶當前所在目錄開始的路徑名爲相對路徑名。 

DOS同樣,在每一個目錄下面都有名爲「.」和「..」的兩個文件。前者表明當前目錄,後者表明當前目錄的父目錄。相對路徑名是從「..」開始的。

  

注意:在樹型目錄結構中到某一肯定文件的絕對路徑和相對路徑均只有一條。絕對路徑是肯定不變的,而相對路徑則隨着用戶工做目錄的變化而不斷變化。 

用戶能夠使用pwd命令來查看當前所在目錄的目錄名。 

10.2  目 錄 結 構 

10.2.1  目錄樹 

Linux的目錄樹如圖10-1所示: 

/           home       ftp 

                      happy 

          bin 

          proc 

          boot 

          usr            bin 

                        lib 

                        tmp 

                        man 

 

          dev 

10-1  目錄樹 

Linux目錄結構主要由根(/)文件系統,/usr文件系統,/var文件系統,以及/home

件系統等組成。

 10.2.2  根(/)文件系統 

根文件系統中的文件不須要常常改動,並且數目比較少,所以根文件系統通常佔的空間並不大。它是比較特殊的文件系統。它包含系統引導以及其餘文件系統安裝所須要的一些關鍵文件。根文件系統通常除了標準的系統引導映像之外,不包含任何其餘文件。全部其餘文件都存放在根文件系統的子目錄中。 

 /bin存放系統中的可執行文件。這些可執行文件大都是Linux系統裏最經常使用的命令,通常用戶和超級用戶都常用該目錄下的命令。  

 /sbin存放那些不打算提供給普通用戶使用的命令。  

 /etc存放大部分系統配置文件,對系統的配置主要就是對該目錄下的文件修改。  

 /root超級用戶的目錄。  

 /lib根文件系統上的程序所需的共享庫。這些庫文件僅在執行/bin /sbin目錄下的命令時纔會用到。  

 /lib/modules核心可加載模塊,特別是那些恢復損壞系統時引導所需的(例如網絡和文件系統驅動)。  

 /dev設備文件。用戶經過這些文件訪問外部設備。  

 /tmp臨時文件。引導啓動後運行的程序應該使用/var/tmp,而不是/tmp,由於前者可能在一個擁有更多空間的磁盤上。  

 /boot用於放置引導系統時使用的各類文件,如LILO。內核映像也常常在這裏,而不是在根目錄。若是有許多內核映像,這個目錄可能變得很大,這時可能使用單獨的文件系統更好。最重要的是要確保核心映像必須在IDE硬盤的前1024柱面內。  

 /mnt系統管理員臨時mount的安裝點。  

 /proc/usr/var/home其餘文件系統的安裝點。

 10.2 3  /usr文件系統 

/usr文件系統常常很大,用於存放可被系統中全部用戶共享的文件。本地安裝的程序和其餘東西在/usr/local下。這樣在升級時無須從新安裝所有程序。/usr的有些子目錄在下面列出(一些不過重要的目錄省略了)。  

 /usr/X11R6 X Window系統的全部文件。爲簡化X的開發和安裝,X的文件沒有集成到系統中。  

 usr/bin存放了幾乎全部用戶命令。其餘的一些命令在/bin/usr/local/bin中。  

 /usr/sbin許多系統管理命令,例如多數服務程序。  

 /usr/man/usr/info/usr/doc存放手冊頁、GNU信息文檔和各類其餘文檔文件。  

 /usr/include C編程語言的頭文件。從一致性上考慮這實際上應該在/usr/lib下,但傳統上支持這個名字。  

 /usr/lib存放庫函數文件。  

 /usr/local本地安裝的軟件和其餘文件放在這裏。 

10.2.4  /var文件系統 

/var包括系統正常運行時要改變的數據。每一個系統是本機所特有的,即不經過網絡與其餘計算機共享。  

 /var/catman格式化好的man頁的cacheman頁的源文件通常存在/usr/man/man*中;

 有些man頁可能有預格式化的版本,存在/usr/man/cat*中。而其餘的man頁在第一次查看須要格式化,格式化完的版本存在/var/man中,這樣下一我的再看相同的頁時就無須等待格式化了。  

 /var/lib存放系統正常運行時要改變的文件。  

 /var/local存放/usr/local 中安裝的程序的可變數據(即系統管理員安裝的程序)。  

 /var/lock鎖定文件。許多程序遵循在/var/lock中產生一個鎖定文件的約定,以指出他們正在使用某個特定的設備或文件。其餘程序注意到這個鎖定文件,將不試圖使用這個設備或文件。  

 /var/log存放各類程序的Log文件。  

 /var/run存放與系統有關的信息文件。  

 /var/spool存放郵件,消息,打印隊列等等。  

 /var/tmp/tmp容許的大或須要存在較長時間的臨時文件。 

10.2.5  /proc 文件系統 

/proc文件系統是一個虛構的文件系統。此目錄中的文件實際上不存在磁盤上。而是由內核在內存中產生。用於提供關於系統的信息。下面說明一些最重要的文件和目錄。  

 /proc/1關於進程1的信息目錄。每一個進程在/proc下有一個名爲其進程號的目錄。  

 /proc/cpuinfo計算機CPU的檢測報告。  

 /proc/devices當前使用的系統設備的報告。  

 /proc/dma顯示當前使用的DMA通道。  

 /proc/filesystems存放本內核所配置的文件系統。  

 /proc/interrupts顯示使用的中斷和中斷次數。  

 /proc/ioports當前使用的I/O端口。  

 /proc/kcore系統物理內存映像。與物理內存大小徹底同樣,但不實際佔用這麼多內存。  

 /proc/kmsg內核輸出的消息。  

 /proc/ksyms內核符號表。  

 /proc/loadavg記錄系統"平均負載"。  

 /proc/meminfo內存使用信息。  

 /proc/modules當前加載了哪些核心模塊。  

 /proc/net網絡協議狀態信息。  

 /proc/self到查看/proc的程序的進程目錄的符號鏈接。當兩個進程查看/proc 時,是不一樣的鏈接。這主要爲了方便程序獲得它本身的進程目錄。  

 /proc/stat系統的統計信息。 

 /proc/uptime系統啓動的時間長度。  

 /proc/version內核版本。  

10.2.6  /dev文件系統 

/dev目錄包含了全部的設備文件,這些設備是系統設置的、通常都和系統硬件有必定相互對應關係的特殊文件,不是特別須要請不要隨便更改和刪除。下面列出了/dev目錄中一些經常使用的設備文件。 

 /dev/console 系統控制檯,由顯示器和鍵盤組成。 

 /dev/fd 軟盤驅動器。第一軟盤驅動器的設備文件是/dev/fd0,第二軟盤驅動器的設備文件是/dev/fd1。 

 /dev/hd  IDE硬盤設備。/dev/hda指整個第一主盤,/dev/hda1指第一主盤上的第一分區。 

 /dev/sd  CSI磁盤設備。

  /dev/md Multiple Devices。將不一樣硬盤上的分區集合在一塊兒構成一個大的設備,很像磁盤陣列(RAID),但主要由系統核心來完成,而不是磁盤陣列控制器。 

 /dev/tty 虛擬控制檯。 

 /dev/pty 用於遠程登陸進程的僞終端。如用戶經過telnet遠程使用系統,則他的終端設備就是/dev/pty

  /dev/ttyS 串口設備。

  /dev/null 空設備,全部寫入/dev/null的數據都將永遠丟失。能夠使用它來屏蔽一個程序的輸出結果,也能夠用它來創建特殊的長度爲0的文件。 

10.2.7  /etc目錄文件 

 /etc/hosts 

文件格式:IPaddress hostname aliases 

文件功能:提供主機名到IP地址的對應關係,建議將本身常用的主機加入此文件中,也可將沒有DNS記錄的機器加入到此文件中,這樣會方便網絡應用。 

127.0.0.1       localhost       localhost.localdomain 

202.118.66.81   helius.dlut.edu.cn      helius 

 /etc/resolv.conf 

文件功能:DNS客戶機配置文件,設置DNS服務器的IP地址及DNS域名。 

相關文件:/etc/host.conf

 文件格式:

         domainname 域名 

        search  域名 

        nameserver Primary_DNS_Server_IP_address 

        nameserver Second_DNS_Server_IP_address 

        其中domainnamesearch可同時存在,也可只有一個;nameserver可指定多個示例文件內容: 

search dlut.edu.cn 

nameserver 202.118.66.6 

 /etc/host.conf 

文件功能:指定主機名查找方法,一般指先查找文件/etc/hosts,找不到時再向DNS服務器請求。對於大多數用戶不用改動此文件內容。 

相關文件:Linux: /etc/host.conf 

文件內容:order hosts, bind 

          multi on 

   Soalris: /etc/nsswitch.conf 中的hosts

                 hosts files, dns 

 /etc/HOSTNAME 

    功能:設置主機名,不一樣Linux之間可能有所差異,請使用 

        egrep hostname /etc/rc.d/init.d/* 

        或

         egrep hostname /etc/init.d/* 

        查找相應版本上的主機名設置文件及方法。

  /etc/inetd.conf 

Internet超級服務器,相關程序:/usr/sbin/inetd 

相應服務:

              telnet 

             ftp 

             pop3 

             r*      rsh rcp rlogin(建議最好關閉r服務) 

示例文件內容: 

# inetd.conf    This file describes the services that will be available 

#               through the INETD TCP/IP super server.  To re-configure 

#               the running INETD process, edit this file, then send the 

#               INETD process a SIGHUP signal. 

# Version:      @(#)/etc/inetd.conf     3.10    05/27/93 

# Authors:      Original taken from BSD UNIX 4.3/TAHOE.

 #               Fred N. van Kempen,  

# Modified for Debian Linux by Ian A. Murdock  

# Modified for RHS Linux by Marc Ewing  

#        

# Echo, discard, daytime, and chargen are used primarily for testing.

 # 

# To re-read this file after changes, just do a 'killall -HUP inetd'

 # 

#echo   stream  tcp     nowait  root    internal 

#echo   dgram   udp     wait    root    internal

 #discard        stream  tcp     nowait  root    internal

 #discard        dgram   udp     wait    root    internal 

#daytime        stream  tcp     nowait  root    internal 

#daytime        dgram   udp     wait    root    internal 

#chargen        stream  tcp     nowait  root    internal 

#chargen        dgram   udp     wait    root    internal 

# These are standard services. 

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a 

telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd 

gopher  stream  tcp     nowait  root    /usr/sbin/tcpd  gn 

# do not uncomment smtp unless you *really* know what you are doing.

 # smtp is handled by the sendmail daemon now, not smtpd.  It does NOT 

# run from here, it is started at boot time from /etc/rc.d/rc#.d.

 #smtp   stream  tcp     nowait  root    /usr/bin/smtpd  smtpd 

#nntp   stream  tcp     nowait  root    /usr/sbin/tcpd  in.nntpd 

# Shell, login, exec and talk are BSD protocols.

 # 

Shell   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd 

login   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind 

#exec   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rexecd 

talk    dgram   udp     wait    root    /usr/sbin/tcpd  in.talkd 

ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  in.ntalkd 

#dtalk  stream  tcp     waut    nobody  /usr/sbin/tcpd  in.dtalkd 

# Pop and imap mail services et al

 # 

pop-2   stream  tcp     nowait  root    /usr/sbin/tcpd  ipop2d 

pop-3   stream  tcp     nowait  root    /usr/sbin/tcpd  ipop3d 

imap    stream  tcp     nowait  root    /usr/sbin/tcpd  imapd 

# The Internet UUCP service. 

#uucp   stream  tcp     nowait  uucp    /usr/sbin/tcpd  /usr/lib/uucp/uucico    -l

 # 

# Tftp service is provided primarily for booting.  Most sites 

# run this only on machines acting as "boot servers." Do not uncomment 

# this unless you *need* it.   

#tftp   dgram   udp     wait    root    /usr/sbin/tcpd  in.tftpd 

#bootps dgram   udp     wait    root    /usr/sbin/tcpd  bootpd 

# Finger, systat and netstat give out user information which may be 

# valuable to potential "system crackers."  Many sites choose to disable  

# some or all of these services to improve security. 

# cfinger is for GNU finger, which is currently not in use in RHS Linux 

finger  stream  tcp     nowait  root    /usr/sbin/tcpd  in.fingerd 

#cfinger stream tcp     nowait  root    /usr/sbin/tcpd  in.cfingerd 

#systat stream  tcp     nowait  guest   /usr/sbin/tcpd  /bin/ps -auwwx 

#netstat        stream  tcp     nowait  guest   /usr/sbin/tcpd  /bin/netstat    -f inet

 # 

# Time service is used for clock syncronization. 

time    stream  tcp     nowait  nobody  /usr/sbin/tcpd  in.timed 

time    dgram   udp     wait    nobody  /usr/sbin/tcpd  in.timed 

# Authentication 

auth   stream  tcp     nowait    nobody    /usr/sbin/in.identd in.identd -l -e -o 

# End of inetd.conf 

 

linuxconf stream tcp wait root /bin/linuxconf linuxconf --http 

 

 inetd.conf 

相關文件:/etc/servicesSYSV/BSD/Linux相同) 

基本不用編輯,linux自帶的已包含大部分服務,Solaris可能須要增長(POP3),參考相應的服務器安裝說明,在此文件中列出了全部可用的網絡服務。

 示例文件內容: 

# services      This file describes the various services that are 

#               available from the TCP/IP subsystem.  It should be 

#               consulted instead of using the numbers in the ARPA 

#               include files, or, worse, just guessing them. 

# Version:      @(#)/etc/services       2.00    04/30/93 

# Author:       Fred N. van Kempen,  

 文件格式:    服務名稱      端口號/協議         服務別名 

tcpmux          1/tcp                           # rfc-1078 

echo            7/tcp 

echo            7/udp 

discard         9/tcp           sink null

 discard         9/udp           sink null 

systat          11/tcp          users 

daytime         13/tcp 

daytime         13/udp 

netstat         15/tcp 

qotd            17/tcp          quote 

chargen         19/tcp          ttytst source 

chargen         19/udp          ttytst source 

ftp-data        20/tcp 

ftp             21/tcp 

telnet          23/tcp 

smtp            25/tcp          mail

 time            37/tcp          timserver 

time            37/udp          timserver 

rlp             39/udp          resource        # resource location 

name            42/udp          nameserver

 whois           43/tcp          nicname         # usually to sri-nic 

domain          53/tcp 

domain          53/udp 

mtp             57/tcp                          # deprecated 

bootps          67/udp                          # bootp server 

bootpc          68/udp                          # bootp client 

tftp            69/udp 

gopher          70/tcp                          # gopher server 

rje             77/tcp 

finger          79/tcp 

http            80/tcp                          # www is used by some broken  

www             80/tcp                          # progs, http is more correct 

link            87/tcp          ttylink 

kerberos        88/udp          kdc             # Kerberos authentication--udp 

kerberos        88/tcp          kdc             # Kerberos authentication--tcp 

supdup          95/tcp                          # BSD supdupd(8) 

hostnames       101/tcp         hostname        # usually to sri-nic 

iso-tsap        102/tcp 

x400            103/tcp                         # ISO Mail 

x400-snd        104/tcp 

csnet-ns        105/tcp 

pop-2           109/tcp                         # PostOffice V.2 

pop-3           110/tcp                         # PostOffice V.3 

pop             110/tcp                         # PostOffice V.3 

sunrpc          111/tcp 

sunrpc          111/tcp         portmapper      # RPC 4.0 portmapper UDP 

sunrpc          111/udp 

sunrpc          111/udp         portmapper      # RPC 4.0 portmapper TCP 

auth            113/tcp         ident           # User Verification 

sftp            115/tcp 

uucp-path       117/tcp 

nntp            119/tcp         usenet          # Network News Transfer 

ntp             123/tcp                         # Network Time Protocol

 ntp             123/udp                         # Network Time Protocol 

netbios-ns      137/tcp         nbns 

netbios-ns      137/udp         nbns 

netbios-dgm     138/tcp         nbdgm 

netbios-dgm     138/udp         nbdgm 

netbios-ssn     139/tcp         nbssn 

imap            143/tcp                         # imap network mail protocol 

NeWS            144/tcp         news            # Window System 

snmp            161/udp 

snmp-trap       162/udp 

exec            512/tcp                         # BSD rexecd(8) 

biff            512/udp         comsat 

login           513/tcp                         # BSD rlogind(8) 

who             513/udp         whod            # BSD rwhod(8) 

 Shell           514/tcp         cmd             # BSD rshd(8) 

syslog          514/udp                         # BSD syslogd(8) 

printer         515/tcp         spooler         # BSD lpd(8) 

talk            517/udp                         # BSD talkd(8) 

ntalk           518/udp                         # SunOS talkd(8)

 efs             520/tcp                         # for LucasFilm 

route           520/udp         router routed   # 521/udp too 

timed           525/udp         timeserver 

tempo           526/tcp         newdate 

courier         530/tcp         rpc             # experimental 

conference      531/tcp         chat

 netnews         532/tcp         readnews 

netwall         533/udp                         # -for emergency broadcasts 

uucp            540/tcp         uucpd           # BSD uucpd(8) UUCP service 

klogin          543/tcp                         # Kerberos authenticated rlogin 

kShell          544/tcp         cmd             # and remote Shell 

new-rwho        550/udp         new-who         # experimental 

remotefs        556/tcp         rfs_server rfs  # Brunhoff remote filesystem 

rmonitor        560/udp         rmonitord       # experimental 

monitor         561/udp                         # xperimental 

pcserver        600/tcp                         # ECD Integrated PC board srvr 

mount           635/udp                         # NFS Mount Service 

pcnfs           640/udp                         # PC-NFS DOS Authentication 

bwnfs           650/udp                         # BW-NFS DOS Authentication 

kerberos-adm    749/tcp                         # Kerberos 5 admin/changepw 

kerberos-adm    749/udp                         # Kerberos 5 admin/changepw 

kerberos-sec    750/udp                         # Kerberos authentication--udp 

kerberos-sec    750/tcp                         # Kerberos authentication--tcp 

kerberos_master 751/udp                         # Kerberos authentication 

kerberos_master 751/tcp                         # Kerberos authenticati

ingreslock      1524/tcp 

tnet            1600/tcp                        # transputer net daemon 

cfinger         2003/tcp                        # GNU finger 

nfs             2049/udp                        # NFS File Service 

eklogin         2105/tcp                        # Kerberos encrypted rlogin 

krb524          4444/tcp                        # Kerberos 5 to 4 ticket xlator

 irc             6667/tcp                        # Internet Relay Chat 

dos             7000/tcp        msdos 

 

# End of services.

 linuxconf       98/tcp          # added by linuxconf RPM 

 

/etc/hosts.allow /etc/hosts.deny (Linux,或使用了tcpd, 參考inetd.conf) 

 

/etc/hosts.allow 設置容許使用inetd服務的機器,如:All:202.118即容許全部來自202. 118.x.x的請求 

/etc/hosts.deny 設置不容許使用inetd的機器 

這兩個文件的設定順序請參考在線文檔:

 man tcpd 

man hosts.allow 

man hosts.deny 

Internet 網絡服務訪問控制文件,對於安全性要求較高的服務器建議採用xinetd替代inetdxinetd debian自帶,其餘的能夠用源代碼進行編譯安裝。 

 /etc/networks  /etc/netmasks 

文件功能:

 列出路由所須要的網絡地址,相關命令/usr/sbin/route,固然也能夠不使用這兩個文件,在維護路由表時可直接使用IP地址及網絡屏蔽位。 

Example: 

    /etc/networks 

    dlrin   202.199.128.0 

    /etc/netmasks 

    202.199.128.0 255.255.240.0 

 /etc/passwd 

用戶口令文件: 

 /etc/shadow(若是有此文件,系統支持shadow機制) 

$ls -l /etc/shadow 

-rwx------   root   ....    /etc/shadow 

/etc/fstab 

 File System Table 

#設備名    MountPoint   Filesystem Type  加載選項 ... fsck標誌 

/dev/hda1       /       ext2    defaults        1       1 

/dev/hda6       /home   ext2    defaults        1       2 

/dev/hda3       /usr    ext2    defaults        1       2 

/dev/hda5       /var    ext2    defaults        1       2 

/dev/hda2       swap    swap    defaults        0       0 

/dev/fd0        /mnt/floppy     auto    sync,user,noauto,nosuid,nodev,unhide   0 

    0 

/dev/cdrom      /mnt/cdrom      auto    user,noauto,nosuid,nodev,ro     0      0 

 none    /proc   proc    defaults        0       0     

   Solairs下對應文件:  /etc/vfstab 

 /etc/exports 

文件功能:NFSNetwork File SystemServer輸出文件系統表,最好不使用NFS。 

nfs相關進程:  

     Solaris: mountd , nfsiod 

              /etc/init.d/nfs.server 

     Linux:  內核支持nfs, /proc/filesystem, 也能夠經過加載modules實現,

  /etc/defaultrouter (Solaris 2.x) 

   內容爲Default Routerip地址

   在linux

        Redhat 5.x: /etc/sysconfig/network 

                GATEWAY=202.118.66.1 

                GATEWAYDEV=eth0   

        Debian: /etc/init.d/network 

                #! /bin/sh 

                ifconfig lo 127.0.0.1 

                route add -net 127.0.0.0 

                IPADDR=202.118.66.88 

                NETMASK=255.255.255.0 

                NETWORK=202.118.66.0 

                BROADCAST=202.118.66.255 

                GATEWAY=202.118.66.1 

                ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast

 ${BROADCAST} 

                route add -net ${NETWORK} 

                [ "${GATEWAY}" ] && route add default gw ${GATEWAY} metric 1  

 /etc/bashrc /etc/csh.cshrc /etc/profile 

    /etc/bashrc  BASH(Bourne Again Shell) RunTime Command  

                Shell Script用的最多 

        系統用戶默認的環境設置,PATHumaskTERM Type 

    /etc/csh.cshrc CSH Runtime COmmand  

 /etc/ftpaccess   

    FTP訪問控制文件文件位置可變 經過 

    #egrep ftp /etc/inetd.conf 

    ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a  

ftp服務器守護進程文件名

     #which in.ftpd 

    /usr/sbin/in.ftpd 

    #strings  /usr/sbin/in.ftpd |egrep ftpaccess 

     /etc/ftpaccess  

    相關配置在ftp服務器配置中講述。 

 /etc/ftpusers 

    不容許ftp的用戶列表,通常包括root, uucp, bin等 

 /etc/ftpconvions /etc/ftpgroups   

     FTP服務器配置文件 

 /etc/group   

用戶組文件

  /etc/sendmail.cf (Linux)    

SendmailEMAIL服務器)配置文件

     /etc/sendmail.cw           本地主機名 

                主機名: gingko.dlut.edu.cn 

                但願接收: user@gingko.dlut.edu.cn 

                          user@mail.dlut.edu.cn 

                           user@dlut.edu.cn 

    /etdc/aliases       郵件別名文件 

/etc/aliases.db     郵件別名二進制數據文件newaliases創建 

/etc/sendmail.hf    sendmail 幫助文件,  

     $telnet mailserver 25 

     Trying 202.118.66.8...

      Connected to gingko.

      Escape character is '^]'.

      220 gingko.dlut.edu.cn ESMTP Sendmail 8.9.1/8.9.1; Tue, 2 Feb 1999 10:41:20 +080 

     0 (CST)         

     HELP 

     214-This is Sendmail version 8.9.1 

     214-Topics: 

     214-    HELO    EHLO    MAIL    RCPT    DATA 

     214-    RSET    NOOP    QUIT    HELP    VRFY 

     214-    EXPN    VERB    ETRN    DSN 

     214-For more info use "HELP ". 

     214-To report bugs in the implementation send email to 

     214-    sendmail-bugs@sendmail.org. 

     214-For local information send email to Postmaster at your site.

      214 End of HELP info   

以上目錄結構是Linux的目錄結構, Solaris 2.x目錄結構是:

     /etc/mail/sendmail.cf 

    /etc/mail/sendmail.cw 

    /etc/mail/sendmail.hf 

    /etc/mail/aliases 

    /etc/mail/aliases.db  

 /etc/issue.net

 telnet時顯示信息( strings in.telnetd |egrep issue) 

    /etc/motd    用戶進入系統後的提示信息

  /etc/named.boot 

     DNS(BIND 4.9.x) 啓動文件

      示例文件:(Caching Only Server) 

     directory /etc/namedb 

     primary 0.0.127.in-addr.arpa  named.local 

     cache . root.cache 

     其中root.cache 文件可經過dig獲得

     dig @ns.internic.net . ns > /etc/namedb/root.cache 

     named.local文件內容以下:

       @  IN      SOA localhost. root.localhost. ( 

                1999020301 

                10800 

                3600 

                86400 

                86400 ) 

         IN    NS       localhost.

      1  IN      PTR     localhost. 

     /etc/named.conf 

     DNS(BIND 8.1.x) 啓動文件

      (Redhat 5.2下可用/usr/doc/bind-8.1.2/named-bootconf.plbind 4.9.x 

     的named.boot文件轉換爲bind8named.conf文件格式執行過程以下

     /usr/doc/bind-8.1.2/named-bootconf.pl /etc/named.boot > /etc/named.conf) 

       /etc/host.equiv 

    $HOME/.rhosts 

    R*(rlogin, rsh , rcp, rexec)服務信任主機 

    格式:

         主機名(FQDN)    用戶列表 

   /etc/ld.so.conf (Linux) 

    動態連接庫文件目錄列表相應命令ldconfig 

     $LD_LIBRARY_PATH Solaris 下相應的環境變量 

     用ldd 列出相應文件所使用的動態連接庫 

     /etc/default[119]ldd /usr/ucb/ls 

       libc.so.1 =>     /usr/lib/libc.so.1 

       libdl.so.1 =>    /usr/lib/libdl.so.1  

     *修改過此文件以後請使用命令ldconfig從新生成目錄列表及鏈接庫文件列表。

  /etc/pam.d/login ( Linux Redhat) 

        auth       required     /lib/security/pam_securetty.so  

    /etc/securetty (Linux Redhat, Debian) 

         root可登陸的終端設備列表, tty[1-8] 爲主控臺上的設備

        ttyp* (Linux)遠程登陸終端(TELNET)設備 

    /etc/default/login (Solaris) 

        # If CONSOLE is set, root can only login on that device. 

        # Comment this line out to allow remote login by root. 

        # 

        CONSOLE=/dev/console   

    註釋掉相應的記錄便可容許超級用戶root從遠程主機telnet登陸

     /etc/login.defs Linux Debian 登陸控制文件 

 Linux Loader /etc/lilo.conf 

    多重啓動文件,  

    **** 修改完此文件後必定須要執行lilo,  

    **** 從新編譯安裝新的linux kernel修改此文件並執行lilo 

 /etc/syslog.conf  

    syslogd configuration file,  

 /etc/smb.conf 

    SAMBA  服務器配置文件,linux的文件系統與Windows 9x/NT共享 

 /etc/nologin 

系統在要關機時不但願用戶登陸進來,就產生此文件,此文件內容爲顯示給用戶的有關拒絕鏈接的信息,用戶此時就不能進入系統。當系統從新啓動時若是有此文件,則機器啓動後任何用戶不能使用系統,此時可考慮從軟盤或光盤引導刪除此文件,而後再從新啓動系統。 

 /etc/security 

設定那些終端可讓root登陸,通常狀況下設定爲只有console上的用戶可能用root

 注意:使用了PAM機制後,相應的文件爲/etc/securetty。 

 /etc/X11/* 

XFree86配置文件。 

 /etc/Shells 

用戶能夠使用的Shell列表,若是強行修改/etc/passwd文件,也能夠使用不在列表中的Shell程序,但對於Shell不在此列表中的用戶將沒法使用FTP鏈接本系統。 

 /etc/mtab 

系統在啓動時建立的信息文件,內容爲已經mount的文件系統,此文件內容是動態更新的,參考/proc/mounts。 

10.3  目 錄 管 理 

1.創建目錄 

建立目錄的命令爲:mkdir。 

其格式爲:mkdir   目錄名 

mkdir命令能夠同時建立多個子目錄,如「mkdir dir1 dir2」,此時建立的子目錄dir1dir2是當前目錄的同級子目錄。若是要同時建立子目錄和它之下的子目錄,則使用mkdir命令的「-p」選項,如「mkdir p dir1/dir2」,則dir2dir1的子目錄。 

2.刪除目錄 

刪除目錄的命令爲:rmdir

 其格式爲:rmdir   目錄名 

rmdir命令只能刪除空目錄。若是但願刪除指定目錄以及該目錄下的全部文件和子目錄,則使用rmdir命令的「-r」選項,如「rmdir r dir1」,則刪除目錄dir1,以及它之下的全部文件和它的子目錄。 

3.顯示目錄內容 

顯示目錄內容使用的命令爲:ls。 

其格式爲:ls [選項] [目錄名(文件名)

ls命令的具體狀況在經常使用命令介紹一章中做了詳細介紹,這裏不在重複。 

4.移動目錄及更名 

移動目錄使用的命令爲:mv

 其格式爲:mv  源目錄名 目標目錄名 

若是目的目錄名不存在,則把源目錄名改成目標目錄名,若是目標目錄名已經存在,則把源目錄移動到目標目錄之下,做爲它的子目錄。 

5.複製目錄 

複製目錄使用的命令爲:cp

 其格式爲:cp r 源目錄  目標目錄 

注意:複製目錄完成後,源目錄和目標目錄都存在,而移動目錄完成後,源目錄將不存在。

 6.肯定當前目錄 

肯定當前目錄使用的命令爲:pwd 。它不帶任何參數,顯示用戶當前所在的目錄。 

7.改變工做目錄 

改變工做目錄使用的命令爲:cd。 

其格式爲:cd [路徑名

其中路徑名能夠是絕對路徑,也能夠是相對路徑。若是省略路徑名,則轉到用戶的註冊目錄中。能夠用「cd..」命令移回到父目錄。此外,若路徑名用「-」代替則轉到上一次cd操做所在的目錄。

 習題 

1Linux文件名中不能含有:(   )

 A.空格     B.「」      C.「*」     D.「?」      E.「$」 

2.系統正常運行時要改變的數據存放在:(   ) 

A. /        B. /proc    C. /dev     D/var 

3Linux_____表示當前目錄。(   ) 

A*         B.        C..          D?  

 

 

11章  文件和目錄操做

本章內容提要 

 

本章目的是使用戶會列出文件,能刪除和複製文件,會改變文件屬性,能壓縮和解壓文件;能實現LinuxWindow9X資源共享。 

前面兩章分別介紹了Linux文件系統及文件系統中的文件和目錄。本章將詳細介紹針對文件和目錄的操做。

 

本章重點內容 

 

☆ ls列出文件 

☆ 文件的刪除和複製

☆ 文件屬性操做 

☆ 壓縮和解壓 

☆ 用fsck檢查文件系統完整性 

☆ 用badblocks檢查磁盤錯誤

☆ 文件碎片

☆ linux和 Window9X資源共享

☆ 文件系統疑難解決  

  

 

11.1  文件基本操做 

11.1.1  列文件 

列文件和目錄的命令爲:ls,其格式爲: 

ls [option] [-color] [-help] [version] [filename] 

其中,option選項及其意義以下: 

-a:列出全部文件,包括那些以:「.」開頭的文件。 

-b:強制顯示非圖形字符,並以八進制表示。 

-c:排序時不按字母順序排列,而是按文件的最後時間排列。 

-d:若是後面接的是一個目錄,那麼使用該參數使得只輸出該目錄的名稱。 

-f:不對目錄中的文件排序,而是直接按照文件在磁盤中的存放順序顯示。 

-I:顯示每一個文件的索引節點。

 -k:以千字節爲單位顯示文件條目。

 -l:使用長模式顯示文件條目,包括鏈接數目、全部者、大小、最後修改時間、權限等。

 -m:水平排列文件名,每行能放置多少文件名就放置多少。 

-n:列出每一個文件的全部者的用戶ID和組ID。 

-p:在文件名前面加上一個字母說明文件類型。

 -q:將文件名中的非圖形字符顯示爲?。 

-r:按字母順序反向顯示文件條目。 

-s:以千字節爲單位顯示文件大小。 

-t:按文件修改時間進行排序,而不是使用文件名排序。 

-u:使用文件的最後訪問時間進行排序。 

-x:強制多列輸出,每一行進行排序。 

-A:功能與-a相同,可是不列出「.」,「..」目錄。 

-B:不列出以「-」結尾的文件,除非是在命令行中特別指出。

 -C:強制多列輸出,每一列進行排序。 

-F:在文件名末尾使用一個符號來表示文件類型。 

-G:當使用長格式顯示時,不顯示相關組信息。 

-N:不顯示文件名。 

-R:遞歸列出全部目錄及其子目錄內容。

 -S:按文件大小排序,大的文件排在前面。 

164  11章  文件和目錄操做

 -X:按文件擴展名排序,沒有擴展名的文件排在前面。 

-l:按一行一個文件的形式顯示文件。 

-color:切換到彩色顯示模式。 

-help:顯示ls的簡單幫助。

 -version:打印版本信息後退出。 

11.1.2  複製文件 

複製文件使用的命令爲:cp

 其格式以下:cp [選項源文件或目錄 目標文件或目錄 

該命令的功能是將選定的文件或目錄拷貝到指定地點,它的功能很是強大。 

該命令的選項及其意義以下: 

-a:該選項一般在拷貝目錄時使用,它儘量保持原有的文件屬性和目錄結構。 

-d:複製時保留連接。 

-f:強制刪除複製目標的全部文件而不給出提示。 

-I:和f選項相反,在覆蓋一個文件以前將給出提示。 

-p:此時cp除複製源文件的內容外,還保留原文件的全部屬性,如權限、全部者、組等等。

 -r:若給出的源文件是一目錄文件,此時cp將遞歸複製全部的文件。 

-l:不做拷貝,只是連接文件。

 11.1.3  刪除文件 

Linux中建立文件很容易,當文件變得沒有用處時,用戶能夠用rm命令將其刪除。

注意,當要刪除一個文件時,首先用戶必須擁有對該文件的讀/寫權限,或者用戶就是該文件的全部者。rm命令格式以下: 

rm [option] 文件名; 

rm -r [option] 文件名;  

前一種格式用於刪除文件,後一種格式用於刪除目錄,及其下的全部文件和子目錄中的全部文件。對於連接文件,只是刪除了連接,原有文件均保持不變。 

該命令中的選項及其意義以下:

 -f:當指定文件不存在時,不給出提示。 

-r:將參數中列出的目錄和子目錄,以及其下全部文件刪除。

 -I:進行交互式刪除。

 -v:顯示被刪除的文件的信息。 

使用rm命令要特別當心。一旦一個文件被刪除,它是不能被恢復的。因此建議用戶使用rm命令中的i選項來確認要刪除的每一個文件。若是用戶輸入y,文件將被刪除。不然文件將被保留。 

11.1.4  移動和重命名文件 

用戶能夠使用mv命令來移動文件到另外一個目錄中,或者爲文件從新命名。mv命令的格式以下: 

mv [option] 源文件 目標文件或目錄 

若是第二個參數是一個已存在目錄,則該命令把源文件移入該目錄中,若是第二個參數是目標文件,則mv命令完成文件重命名。 

11.2  文件屬性操做 

11.2.1  改變訪問權限 

Linux使用chmod命令來改變文件訪問權限,可是隻有用戶對某文件擁有「寫」(w)權限時,才能夠改變該文件的權限。超級用戶能夠改變全部文件的權限。用戶能夠利用Linux系統提供的chmod命令來改變文件或目錄的訪問權限。該命令有兩種用法: 

1.文字設定法 

採用這種方法時,chmod命令格式以下:

 chmod [用戶選項] [操做符] [模式文件名文件名2  

其中,用戶選項能夠是下面幾種選擇: 

u:文件或目錄的全部者。

g:全部者同組的用戶。 

o:其餘用戶。 

a:全部用戶。

 操做符能夠是下面幾種選擇: 

+:添加某個權限到原來的權限上。 

-:從原權限中取消某個權限。 

=:用給定權限替代其餘全部權限。 

模式能夠有下面幾種選擇: 

r:讀權限。

w:寫權限。

x:可執行權限。

 2.數字設定法 

除了使用字母「r」「w」和「x」設置權限外,也能夠使用數字代替。用數字表示的屬性的含義:0表示沒有權限,1——可執行權限,2——可寫權限,4——可讀權限,而後將其相加。因此數字屬性的格式應爲3個從07的八進制數,其順序是:全部者、同組用戶、其餘用戶。例如,若是想讓某個文件的全部者有「讀//執行」三種權限,須要把4(可讀)+2(可寫)+1(可執行)=7(讀//執行)。使用數字設定法,chmod命令的格式爲:

 chmod [模式文件名 

其中,模式也可爲:r,w,x。其含義與文字設定法中的相同。例如: 

$ chmod 644 aa.txt 

則文件aa的全部者有讀/寫權限,全部者同組用戶有讀權限,其餘用戶也有讀權限。 

11.2.2  改變組屬 

改變文件或目錄所屬的組使用chgrp命令,其格式爲:

  chgrp [選項新組 文件名文件名2   

其中,選項的意義是: 

- R:遞歸式地改變指定目錄及其下的全部子目錄和文件的屬組。 

該命令改變指定文件所屬的用戶組。其中新組能夠是用戶組的ID,也能夠是用戶組的組名。文件名支持通配符,若是用戶不是該文件的全部者或超級用戶,則不能改變該文件的組。要把某個用戶設置爲某文件的全部者,應該使用chown命令,該命令的格式爲: 

  chown [選項用戶/組 文件名文件名2  

其中,選項的意義是: 

- R:遞歸式地改變指定目錄及其下的全部子目錄和文件的擁有者。 

Chown:將指定文件的擁有者改成指定的用戶或組。 

11.2.3  查看文件內容 

用戶須要查看一個文件的內容時,能夠選擇如下的命令。 

1cat命令 

cat命令將一個文件的所有文本一次所有送往顯示設備,因此cat命令適合與查看小文件。它的格式以下: 

cat [ option ] 文件 

其中選項及其意義以下: 

-v:用一種特殊形式顯示控制字符,除去LFOTAB。 

-T:將TAB顯示爲「^I。該選項須要與- v選項一塊兒使用。 

-E:在每行的末尾顯示一個$符。該選項也須要與- v選項一塊兒使用。

 -u:輸出不通過緩衝區。 

-n:顯示輸出行的編號。 

-b:顯示非空輸出行的編號。  

-e:至關於- vE。  

-A:至關於- vET。 

-t:至關於- vT。  

2more命令 

當文件內容過多時,通常可用more等命令分屏顯示,以避免因屏幕滾動太快而沒法看清。它一次只顯示一屏的文本,顯示滿以後,停下來,按f鍵或【Space】可進入下一屏。more命令使用範圍很廣,功能強大。其格式爲: 

more [ option ] 文件 

其中選項及其意義以下: 

more命令中各個選項的含義爲: 

-p:顯示下一屏以前先清屏。 

-c:做用同- p基本同樣。

 -d:在每屏的底部顯示更友好的提示信息:  

- - More- - XX%[Press space to contiune , q to quit . ]  

並且若是用戶輸入的命令不對,則會顯示出錯信息。

 -l:忽略< Ctrl+l >(換頁符)。若是沒有給出這個選項,那麼在顯示了一個包含有< Ctrl+l >字符的行後將會暫停顯示,並等待接收命令。 

-s:把文件中連續的空白行壓縮成一個空白行顯示。 

此外,more命令在顯示完一屏內容以後,將停下來等待用戶輸入某個命令。more命令在執行中用到的一些經常使用命令如,其中i表明的是行數。 

i空格:顯示下面的i行,若不指定i值,則顯示下一整屏。 

i回車:顯示下面的i行;i的默認值爲1。 

按【CtrlD】:顯示下面的i行;i的默認值爲11

id 同上 。 

iz 同「i空格」相似,不過i將成爲如下每屏的默認行數。

Is:跳過下面的i行再顯示一屏。i的默認值爲1。 

if:跳過下面的i屏再顯示一屏。i的默認值爲1。 

按【CtrlB】:往回跳過i屏,再顯示一屏。i的默認值爲1。 

qQ:退出more。 

=:顯示當前行號。 

h:顯示各命令的幫助信息。 

·重複上次鍵入的命令。 

11.2.4  壓縮和解壓 

減小文件大小有兩個明顯的好處,一方面能夠減小存儲空間,另外一方面能夠減小網絡傳輸的時間。在Linux系統中常用gzip命令對文件進行壓縮和解壓縮。gzip命令格式爲: 

gzip [選項文件名 

其中,選項及其意義爲: 

-c:將輸出寫到標準輸出上,並保留原有文件。 

-d:將壓縮文件解壓。 

-l:對每一個壓縮文件,顯示下列信息: 

壓縮文件的大小 

未壓縮文件的大小 

壓縮比 

未壓縮文件的名字 

-r:查找指定目錄並壓縮其中的全部文件或者把它們解壓。 

-t:檢查壓縮文件是否完整。 

-v:對每個壓縮和解壓的文件,顯示文件名和壓縮比。

-num 用指定的數字num調整壓縮的速度,-1表示最快壓縮方法,-9表示最慢壓縮方法。系統默認值爲-6。 

例如: 

$ gzip aa.txt 

aa.txt壓縮成aa.txt.gz; 

$ gzip -d aa.txt 

aa.txt.gz 還原成aa.txt。 

11.2.5  fsck檢查文件系統完整性 

文件系統很複雜,所以易於發生錯誤。能夠用fsck命令檢查文件系統是否正確和有效。它能夠根據指令修復找到的小錯誤,並將未修復錯誤報告用戶。幸運的是,文件系統的代碼很是有效,因此極少出現問題,而且問題一般緣由是電源失敗、硬件失敗或操做錯誤,例如沒有正常關閉系統。  

大多數系統設置爲啓動時自動運行fsck ,所以任何錯誤將在系統使用前被檢測到(並根據但願修正)。使用有錯誤的文件系統可能使問題變得更壞:若是數據結構有問題,使用這個文件系統可能使之更糟,致使更多的數據丟失。固然,在大的文件系統上運行fsck 會花必定的時間,若是系統正常關閉,幾乎從不發生錯誤,所以有一些方法能夠不進行檢查。若是文件/etc/fastboot存在,就不檢查。另外,若是ext2文件系統在超級塊中有一個特定的標記告知該文件系統在上次mount後沒有正常unmountezfsck檢查系統;若是標記指出unmount正常完成(假設正常unmount指出沒問題),e2fsckfsck ext2文件系統版)就不檢查系統。/etc/fastboot 是否影響系統取決於您的啓動方式,但ext2標記則在您使用e2fsck 時發生做用——基於一個e2fsck選項(參閱e2fsck手冊頁)。 

自動檢查只對啓動時自動mount的文件系統發生做用。使用fsck手工檢查其餘文件系統,好比軟盤。若是fsck發現修復的問題,則須要深刻了解文件系統的通常工做原理和有問題的文件系統的細節或好的備份。最後一個辦法容易(雖然冗長)安排,若是本身不知道,有時能夠經過朋友、Linux新聞組、電子郵件列表或其餘支持源安排。  

fsck只能運行於未mount的文件系統,不要用於已mount的文件系統(除了啓動時的只讀根文件系統)。這是由於它存取原始磁盤,在操做系統不知道的狀況下修改文件系統。

There will be trouble, if the operating system is confused.。 

11.2.6  badblocks檢查磁盤錯誤 

應該週期性地用badblocks 命令檢查壞塊,它輸出找到的全部壞塊的編號的列表。列表將fsck 記錄在文件系統數據結構中,使操做系統存儲數據時不使用這些壞塊。舉例:  

$ badblocks /dev/fd0H1440 1440 > bad-blocks  

$ fsck -t ext2 -l bad-blocks /dev/fd0H1440  

Parallelizing fsck version 0.5a (5-Apr-94)  

e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10  

Pass 1: Checking inodes, blocks, and sizes  

Pass 2: Checking directory structure  

Pass 3: Checking directory connectivity  

Pass 4: Check reference counts.  

Pass 5: Checking group summary information.  

/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****  

 /dev/fd0H1440: 11/360 files, 63/1440 blocks  

$  

若是badblocks報告一個塊已經使用,e2fsck將試着將此塊移到其餘地方。若是該塊真的壞了,而不是在壞塊邊緣,文件內容可能丟失。  

11.2.7  文件碎片 

文件寫到磁盤時,不必定在連續的塊中。沒在連續塊中的文件叫碎片。由於磁盤的讀寫頭會更多地移動,因此讀碎片文件會花較長的時間。雖然有好的讀前緩衝系統將保證不會有什麼問題,但最好仍是避免碎片。  

Ext2文件系統試圖使碎片最少,即便不能將一個文件的全部塊存在連續扇區中,也儘可能靠近。Ext2一般有效地安排裏文件其餘塊最近的空閒塊,所以不多須要關心碎片問題。

Ext2文件系統有一個消除碎片程序。  

有許多MS-DOS消碎片程序在文件系統中移動塊以消除碎片。其餘一些文件系統,消碎片必須經過備份——重產生——回存文件系統來完成。對於全部文件系統,消碎片應該備份文件系統,由於不少緣由可能在消碎片過程當中致使錯誤。  

11.2.8  ext2文件系統的其餘工具 

除了產生文件系統的mke2fs 和檢查文件系統的e2fsck直接或經過與文件系統類型無關的前端存取外,Ext2文件系統還有幾個有用的工具。tune2fs將調整文件系統參數,一些有用的參數有:  

 最大mount數。當文件系統被mount過多少次之後,即便標誌是乾淨的,e2fsck強制檢查。對用於開發或測試的系統,應該下降這個限制數。  

 最大檢查間隔。到達這個間隔時間,即便標誌是乾淨的,e2fsck強制檢查。若是文件系統不是常常mount,能夠不使用這個功能。  

 保留給root的塊數。Ext2root保留一些塊,這樣若是文件系統滿了,還可能無須刪除任何東西作系統管理。保留量默認是5%,這在大多數磁盤上不會形成浪費。固然,軟盤沒有理由保留塊。  

11.3  LinuxWindows 9X資源共享 

11.3.1  Linux下共享Windows 9X的資源  

Linux下面讀寫Windows 9X/Windows 3.X/DOS的邏輯盤是至關容易的,無需安裝任何其餘軟件,Linux自身就帶有mount命令。讀寫前只要Mount上相應的分區就能夠了。假設在Linux下要使用上述系統中Windows 98的某個文件,則只要以root身份運行如下命令:  

#mount /dev/hda1 /mnt  

位於Linux根目錄下面的/mnt默認應該是空的,固然也能夠創建其餘的空目錄,如用DOS_D來方便掛接其餘設備。紅旗linux內核均已經支持FAT32分區和Windows下的長文件名。mount後進入/mnt目錄,就能夠讀寫DOSC盤中的任何內容了。不過讀者會發現,這樣作沒有長文件名。若是想在Linuxmount Windows分區後看到長文件名,還須要額外指定一下分區或文件系統類型,即運行以root運行mount -t vfat /dev/hda1 /mnt命令(若是已經mount了,請先運行umount將其卸載再mount。實際上,mount時應該指定分區類型的,不過如今的Linux也愈來愈智能化了。),這樣就能夠看到長文件名了。mount後,就能夠開始安裝在Windows下面下載的Linux軟件,也能夠用Linux下面的GTK see來看看Windows盤中的圖形圖像……,因爲是可讀可寫的,所以幾乎能夠「隨心所欲」。假設Linux分區中剩餘空間少,而Windows中剩餘空間還有一大堆,則能夠將須要下載的大文件下載到Windows的分區中,而後再安裝/使用。  

若是在Linux下面用vi編輯一個DOS/Windows下的文本文件,如CONFIG.SYS,能夠發如今文件的每一行的最後面都有一個^M。這也是在Linux下面按【Enter】和DOS/Windows下按【Enter】的不一樣之處。DOS下的【Enter/Return】不但換行,並且回車(Carriage Return,即光標回到最前面),而Linux下面的Enter只是換行。熟悉vi的讀者應該很容易就解決這個問題,只要作一下全程的替換就好了。除此之外,還有fromdos之類的命令能夠處理這個問題。  

若是您的Windows/DOS所在的硬盤採用的是FAT16格式,則仍然能夠用-t msdos方式進行mount,不過會喪失諸如長文件名等一些功能。要改進也很容易,只要本身編譯一個高版本的內核便可。對熟手來講,編譯內核至關簡單,在這裏就很少講了。順便講一下,Linux下面要檢驗除顯示方面之外的硬件的穩定程度,最好的辦法就是編譯內核。若是您的系統連續編譯內核20次毫無問題,能夠認爲是穩如磐石的。)  

假如常常要在Linux下面使用DOS分區的內容,最好讓Linux啓動後自動將相應的分區mount上,只要修改/etc/fstab便可達到這個效果,下面是Linux/Windows系統中Linux/etc/fstab文件的內容,啓動後,系統將自動mount Windows 9XD盤和E盤。  

# cat /etc/fstab 

/dev/hda3   /            ext2   defaults   1 1 

/dev/hda2   swap         swap   defaults   0 0 

/dev/fd0    /mnt/floppy  ext2   noauto     0 0 

none        /proc        proc   defaults   0 0 

 /dev/hda5   /dos_d       vfat   defauts    1 1 

/dev/hda6   /dos_e       vfat   defauts    1 1 

Linux下面,不但能夠讀寫DOS/Windows 3.X/Windows 9X分區,還能夠讀Windows NTNTFS分區。不過目前對NTFS分區還只能讀,不能寫。 

11.3.2  Windows系統中使用Linux分區的資源  

目前在Windows 9X系統中使用Linuxext2分區的內容還限於只讀,且須要安裝額外的軟件。能夠安裝的是fsdext2,它是基於GPL版權的,能夠從http://www.globalxs.nl/home /p/pvs下載最新版本,做者的Email地址是pvs@globalxs.nl。國內許多有Linux資源的ftp服務器上都有這個軟件,通常在LetWindowsReadLinuxWorkWithOtherOS之類的目錄裏面。這個軟件至關小,安裝使用也極其方便。  

1.安裝  

從網上下載的應該是一個zip文件,用Unzip/PkunzipWinZip將其解壓到一個目錄內(如c:\mntlinux目錄。用命令行的解壓命令時,不要忘記加上「-d」參數以便恢復目錄結構),而後進入此目錄,運行裏面的intall.bat便可完成安裝。打開install.bat能夠發現,install過程只是簡單拷貝vext2d.vxd 到 Windows 9Xsystem目錄,拷貝tsdext2.vxd Windows 9Xsystem\iosusbsys 目錄。爲使用方便,最好在autoexec.bat中將c:\mntlinux加入搜索路徑中。而後只要將系統再從新啓動一次就能夠使用了。  

2.使用  

假設要在Windows 98中使用Linux分區下的內容,則只要在運行如下命令便可:mount /dev/hda6 h:  

此時打開My Computer(個人電腦),或者按一下【F5】對此進行刷新,能夠看到F盤後面多了一個盤符H,這就是 Linux分區的內容。用Explorer打開看看,全部的文件都歷歷在目,甚至包括平時只有root 才能讀寫的/etc/shadow文件。不過要記住,目前fsdext2Linux分區還只是只讀的,不能改寫Linux分區中文件的內容,也不能往Linux分區中加入其餘文件。運行mount命令時,也能夠不指定盤符,此時系統會自動找第一個空餘的盤符。  

若是想要卸載(umount),也很容易,若是Windowslinux分配的是G盤,只要在命

令行上運行mount /u g:mount g /u就能夠將G盤卸載掉。若是提示出錯,則看看是否打開了G盤中的文件,或者當前某個DOS窗口在還G盤的某個目錄內,總而言之,此時須要卸載的盤不能處於「忙」的狀態。檢查一下,修正錯誤後能夠當即再umount。  

11.4  文件系統疑難解決 

1.如何壓縮可執行文件?  

Linux下有一個相似dos裏的pklitelzexe 的命令——gzexe。並且壓縮率通常均可以超過50%,在空間緊張時頗有用。好比:/dosc/temp# ls -al 

total 148 

-rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk 

/dosc/temp# gzexe gawk 

gawk: 54.5% 

/dosc/temp# ls -al 

total 216 

-rwxr-xr-x 1 root root 68710 Dec 8 15:36 gawk 

-rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk~ 

/dosc/temp# 

2.如何查看Linux啓動時的信息? 

Linux啓動時屏幕顯示的信息來不及看清就一閃而過,若是對這些信息感興趣的話,能夠在啓動完後用命令dmesg查看。 

3.如何處理文件名內含有特殊字符的文件? 

若是想刪除一個名叫 file的文件,鍵入rm -file會顯示invalid option,原來因爲文件名的第一個字符爲-Linux把文件名看成選項了,能夠用雙引號把整個文件名括起來,這樣就不會把-file當成命令參數了。

 4.如何一次處理一整個目錄?  

Linux/UNIX 的不少經常使用命令如rmcp等都有一個參數-r,是遞歸的意思。命令里加了參數-r就能夠對目標目錄及其下全部子目錄進行操做,如:rm -rf /testfforce意爲強行),該命令徹底刪除根目錄下的子目錄test,做用相似於dos下的deltree,固然使用這個命令時要特別當心。再如:cp -r /test /test1有相似dosxcopy /s的做用。 

5.有哪些有用的別名?  

幾個能方便操做和減小誤操做的別名,建議把它們放到啓動文件裏,如/etc/bashrc。 

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

前三個別名的做用是在刪除、覆蓋文件以前先提示確認,紅旗已經自動加上了,強烈建議Slackware的用戶也加上,由於Linux/UNIX下文件一旦刪除就再也沒法恢復了。

alias l='ls -l' 

alias cd..='cd ..' 

alias utar='tar xvfz' #解 *.tar.gz 文件 

alias inforpm='rpm -qpi' #顯示rpm包的信息 

alias instrpm='rpm -Uhv' #安裝rpm

 alias listrpm='rpm -qpl' #rpm包內的文件 

alias uistrpm='rpm -e' #反安裝rpm包 

6.如何使用命令補齊? 

所謂命令補齊(Command-Line Completion)是指當鍵入的字符足以肯定目錄下一個唯一的文件時只須按【Tab】鍵就能夠自動補齊該文件名的剩下部分。例如要把目錄/freesoft下的文件gcc-2.8.1.tar.gz 解包,當鍵入到tar xvfz /freesoft/g時若是該文件是該目錄下唯一以起頭的文件的話就能夠按下【Tab】鍵,這時命令會被自動補齊爲:tar xvfz /freesoft/ gcc-2.8.1.tar.gz,很是方便。 

7.如何拷貝與粘貼?

 字符界面:無論是Slackware 仍是紅旗,安裝後每次啓動時都會自動運行一個叫gpm的程序,該程序運行後就能夠用鼠標來拷貝與粘貼了。具體作法是按住鼠標左鍵拖動使要拷貝的地方反白,這時反白的區域已經被拷貝,再按鼠標右鍵拷貝的內容就會被粘貼在光標所在位置了。X Window下:拷貝的操做與字符界面下同樣,三鍵鼠標的話,按中鍵粘貼,兩鍵鼠標的話同時按左右鍵粘貼(須在配置XF86時在鼠標的設置裏選擇Emulate 3 Button)。

 8.如何快速進入某些目錄?  

鍵入cd ~ 可進入用戶的home目錄。鍵入cd - 可進入上一個進入的目錄。 

9.如何顯示文件的類型?  

用命令file能夠知道某個文件到底是ELF格式的可執行文件仍是Shell Script文件或是其餘格式,例如:#file startx。 

10.如何命令文件的路徑? 

當您鍵入一些命令如findshutdownmountstartx時是否想過要知道這些文件究竟放在哪一個目錄裏,用命令whereis能夠實現。如 #whereis startx。 

11.如何查找文件?  

find命令要加一些參數才能查到文件,如:#find /usr -name XF86Setup -print /usr裏查找文件XF86Setup。若是想知道一個文件到底在哪一個路徑,能夠用whereis filename。 

12.如何刪除無用的core文件?  

程序運行出後有時候會產生一個名爲core的文件,這個文件通常很大並且沒什麼用,能夠刪除掉以釋放空間。

 13.如何一次解開.tar.gz文件?  

解開.tar.gz文件通常要先用gunzip解壓再用tar解包,在Linux下能夠一次完成,如:#tar zxpvf sample.tar.gz

 14.如何顯示Windows 95分區裏的長文件名?  

若是發現Windows 95分區裏的長文件命不能顯示,能夠從新用vfat方式來mount。對於啓動時就mount的分區能夠修改文件/etc/fstab,將裏面的msdos字樣改成vfat。若是沒法用vfat mount,則要從新編譯一下核心,加入對vfat的支持。 

15.如何計算文件數和目錄數  

下面的語句能夠幫用戶計算有多少個文件和多少個目錄: 

# ls -l * |grep "^-"|wc -l ---- to count files  

# ls -l * |grep "^d"|wc -l ----- to count dir  

還能夠將以上的語句變成Script

 16.如何只查看文件的某幾行?  

若是隻想看文件的前5行,能夠使用head命令,如:  

head -5 /etc/passwd  

若是想查看文件的後10行,能夠使用tail命令,如:  

tail -10 /etc/passwd  

查看文件中間一段能夠使用sed命令,如:

 sed -n '5,10p' /etc/passwd  

這樣就能夠只查看文件的第5行到第10行。  

 17.某個分區mount出來是隻讀,如何解決?  

mount -v能夠看到那個分區是可讀寫的,但是就是無法寫進去,總是說這是一個read-only filesystem

 可按以下方法解決: 

A: mount -n -o remount,rw <安裝點>  

習題 

1ls中的參數-a表示(   )。 

A.強制顯示非圖形字符,並以八進制表示 

B.排序時不按字母順序排列,而是按文件的最後時間排列; 

C.若是後面接的是一個目錄,那麼使用該參數使得只輸出該目錄的名稱; 

D. 列出全部文件,包括那些以:「.」開頭的文件; 

2.檢查文件系統完整性的命令是(   )。 

Afsck 

Bmv 

Cmount 

Dcp 

 

 

12章  核心升級和應用軟件安裝

章內容提要 

 

如今,有愈來愈多的人開始接觸Linux、安裝Linux、使用Linux,網絡上,愈來愈多的企業使用Linux來架構本身的系統,同時也有愈來愈多的人討論着與Linux相關的話題。

顯然,Linux已經漸漸步入咱們的生活了。 

如今人們接觸因特網的機會愈來愈多,使用者能夠方便地使uxFTP來得到新的軟件。所以,經過各類渠道得到軟件並本身動手將取得的軟件安裝到本身的Linux系統中,便顯得越用來越重要。

 

本章重點內容 

 

☆ 軟件升級和安裝的通常步驟 礎☆ 如何升級核心 

☆ 常見應用軟件如Oraclee-office的安裝 

☆ 重點掌握應用軟件的安裝和核心升級,掌握命令targzipmake等命令的使用

12.1  升級和安裝概述 

12.1.1  取得Linux軟件 

首先,從因特網中FTP服務器上下載的文件,其格式大可能是下列幾種中的一種: 

1*.tar -- 直接用tar將全部文件打包。  

2*.gz*.z -- 使用Gzipcompress壓縮的文件。  

3*.tar.-- 先使用 tar 將文件打包後,再用 Gzip compress 將該文件壓縮後的文件。  

爲了節省儲存空間以及提升傳輸效率,絕大部分軟件都是通過壓縮處理,才放在服務器上供人們下載的。所以,在得到這些軟件後要作的第一件事,就是對該軟件進行解壓。

如今以一些常見的儲存格式爲例,來講明解包的方法。 

12.1.2  解包工具 

1tar:其功能是將多個文件打包成一個合併的文件。軟件做者可將全部文件打包成一個文件。使用者也要用tar來將這些文件解包。 

2GzipGNU Zip是一個在UNIX系統中經常使用的壓縮、解壓縮命令。Gzip壓縮過的文件大都會在文件名後面加上.gz.z。 

3compressUNIX系統中傳統的壓縮命令,它能夠壓縮文件以減少文件的大小,compress壓縮過的文件名後會加上.Zcompress文件保留原文件的權限和一些時間屬性。 

4zcatzcat命令的功能是解壓縮由compressGzip命令產生的壓縮文件,並把結果送標準輸出設備,且保留原壓縮文件。 

5zless:與zcat相似,能夠直接查看一個由Gzip壓縮的文件內容。

 這些是經常使用的文件打包、壓縮工具,下面來看一些實際的例子。 

myfile.tar.gz爲例,這種類型的文件是由tar打包後再由Gzip壓縮的產物。對於這個文件的解包方法是,先使用Gzip將該文件解壓縮爲原始的tar文件,而後執行tar將這些被打包在一塊兒的文件一一還原。  

1.用Gzip解壓縮  

Gzip -d myfile.tar.gz  

Gzip d 文件名」是解壓縮的使用方法,在執行過解壓縮的處理後,原來的壓縮文件將不存在,而僅僅保留解壓縮後的文件,不會額外佔用磁盤空間。因此在執行完此命令後,將看不到原先的myfile.tar.gz而只有 myfile.tar。 

2.執行tar將文件解開  

用「tar xvf 文件名」的方式將一個tar文件解開。tar對文件名沒有特別規定,所以,在使用tar時,要給予完整的文件名,不然tar會找不到要處理的文件。  

tar xvf myfile.tar 

3.查看壓縮文件的內容  

因爲tar可將多個指定目錄的文件打包產生成一個文件,在這個文件中不只含有原文件的內容,也包括了文件目錄以及文件屬性,所以用戶在解開一個tar格式的文件以前,最好也瞭解一下這個tar文件內的目錄結構,以避免解開後,文件產生到其餘目錄中。  

下面的命令可讓用戶知道myfile.tar中究竟包含了哪些文件。  

tar tvf myfile.tar  

一樣,Gzip也提供此類的功能,用戶能夠使用Gzip -l來查看壓縮文件中的內容。  

Gzip -l myfile.tar.gz  

注意:在使用「tar xvf文件名」解開文件時, tar 會根據所記錄的每一個原始文件所在目錄來解開這些文件, tar 在執行時,會先在當前目錄裏找這個目錄,若是找不到就創建該目錄,而後逐一創建文件。  

舉個例子來講,現有一個tar文件要解開,能夠先使用「tar tvf 文件名」的方式查看該內容,發現列出來的文件名開頭都是usr/local/。在這個狀況下,若是在$HOME目錄下進行解包,那麼tar將在該目錄下分別創建usr/local/ 等目錄。因而可知,此時用root身份在根目錄解包比較恰當。因此在處理一個不知內容的tar文件前,先看一下文件內的目錄結構是必要的。  

4.綜合應用  

通過上面的說明,讀者應該已經會正確地解開一個軟件包了,不過上面的方法是最規矩的方式,或稱之爲分解動做,下面要講的是其綜合應用。  

例如,要查看/SOURCE中的myfile.tgz的內容:  

zcat /SOURCE/myfile.tgz | tar tvf -  

其中, 

1zcat將一個Gzip壓縮文件解開並輸出到標準輸出設備;  

2)經過管道功能,將zcat的結果轉向tar來處理;  

3tar tvf來查看文件內容;  

4)使用「-」是告訴 tar 要處理的文件資料是由標準輸入設備而來的。 

要解開文件時使用:  

zcat /SOURCE/myfile.tgz | tar xvf -  

執行結果和原先分步執行結果不一樣的是:壓縮文件仍然存在。這些均可以達到解開文件的目的,能夠隨我的喜愛來選擇不一樣的方法。  

12.1.3  安裝和升級的限制 

下面開始安裝軟件。新軟件的原始文件解開後,接下來就是查閱做者附在裏面的一些文件,如README.xxxRELEASESETUPTODOdocINSTALLChangeLog等文件。由於,在這些文件裏每每會有些主要功能的說明,因爲編譯時系統環境的限制,如OS版本、GNU C版本、內存以及軟件環境參數設置的方式和軟件安裝的步驟各不相同。因此,必需要閱讀這些資料以避免形成遺憾,同時應注意如下幾個方面。 

1Linux系統版本的限制 

Linux版本更新速度至關快,因此若是該軟件使用到較新版本的特有功能時,則該軟件沒法在舊版本的Linux系統中執行。 

2GNU CC Runtime  Library版本的限制  

在直接安裝軟件的可執行文件時,若是Runtime Library的版本與做者編譯該軟件時的版本差別過大,就會產生錯誤致使沒法執行。若是要從新編譯該軟件而且該軟件用到一些新版才提供的函數時就會發生編譯錯誤。所以,若是有此限制時,只有放棄該軟件或升級系統兩種選擇。  

3.內存、硬盤的限制  

有一些軟件在編譯或執行時有特定的要求,如系統的內存或硬盤空間。若是沒有注意到這一點,就有可能花了不少功夫結果獲得的是一個錯誤訊息。   

4.其餘相關軟件  

有一些軟件會使用到其餘軟件,所以,若是系統沒有此相關軟件,那也無法安裝該軟件。 

5.軟件安裝步驟說明  

對於較爲複雜的軟件,做者爲了利於使用者正確安裝,通常說來都會附上一份簡要的安裝說明。因此若是有這類文件最好看一下。

6.其餘方面  

有些軟件有多個更新版本,可能會附有文件來講明每一個版本更新的主要內容以及錯誤修正的狀況,像這類文件也能夠參考。  

若是該軟件是以可執行文件的方式安裝,一切安裝工做也就到此爲止。若是是以源代碼方式提供的話,那麼就要編譯軟件,這是一件至關繁重的工做。究竟該怎麼編譯軟件呢?說簡單一點就是直接在軟件的原代碼所在目錄敲入make就能夠完成編譯工做。一般做者在原代碼目錄中創建該軟件編譯所要的Makefile讓使用者直接用make來完成編譯工做。  

12.2  核 心 升 級 

核心是操做系統中最重要的部分。就DOS而言,它是指IO.sysMSDOS.sys;就Linux而言,它是指位於根目錄(/)裏的vmlinuz文件。  

它能夠控制整臺PC的運做,包括周邊設備、軟驅、硬盤、CDROM、聲卡等。  

升級核心通常有幾個緣由: 

1)找到支援新硬件的驅動程序; 

2)更穩定的環境; 

3)更好的效能; 

4)瞭解Linux核心是如何創建的。 

12.2.1  核心升級步驟 

1.瞭解目前的版本 

要升級核心,首先要了解目前核心是幾版,最新的又是多少版,以避免本身的核心已經是最新版了還在作升級操做。 

2.下載核心 

要升級核心,固然必須下載新的核心來用。用戶可經過如下站點來下載。 

ftp://ftp.hk.kernel.org/pub/linux/kernel/  

http://www.kernel.org/  

也可到匿名ftp站得到更高級的內核,例如從ftp.funet.fi的 /pub/Linux/PEOPLE/Linus或是其餘鏡像(MIRROR)站中得到。文檔名稱通常標記成linux-x.y.z.tar.gz,其中的x.y.z 是版本編號。較新的版本以及修補版本通常是放在相似「v1.1」以及「v1.2」這樣的子目錄下。數字最大的是最新的版本,並且一般是「測試版」。若是您認爲betaalpha版不安全的話,

則應該注重於主要的發行版本。 

不過最好找一些mirrorftp節點,而不要直接到ftp.funet.fi上下載內核。如下是一些mirrors以及其餘節點的簡要列表: 

USA:   sunsite.unc.edu:/pub/Linux/kernel 

USA:   tsx-12.mit.edu:/pub/linux/sources/system 

UK:      sunsite.doc.ic.ac.uk:/pub/UNIX/Linux/sunsite.unc-mirror/kernel 

Austria:  ftp.univie.ac.at:/systems/linux/sunsite/kernel 

Germany:   ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus 

Germany:  sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus 

France:  ftp.ibp.fr:/pub/linux/sources/system/patches 

Australia:  sunsite.anu.edu.au:/pub/linux/kernel 

3.瞭解硬件環境 

目前的核心已經能夠辨識大部分的硬件,但並非所有,使用者在升級核心前最好了解本身的硬件環境,應該知道哪項硬件使用的系統資源(IRQDMA)是什麼,尤爲是瞭解非PnP(即插即用)顯示卡(display card)所使用IRQDMA是什麼。建議內存至少有8 MB,這樣才能較爲順利地編譯核心。  

4.解開原始核心源代碼的包裝  

以「root」的身份登陸,而後進入到/usr/src下。若是安裝Linux時已經安裝了核心原始程式碼,則在這個目錄下,應該已經存在一個「Linux」的子目錄。這是舊版的Linux原始程式碼。將該子目錄更名或者清除掉,確保在解開所有的原始程式碼以前,/usr/src目錄下沒有「Linux」這個子目錄。  

/usr/src目錄下,用`tar zxpvf linux-x.y.z.tar.gz' 解開原始程式碼的包裝(若是您拿到的是.tar 的文件類型,則不用.gz,命令爲:`tar xpvf linux-x.y.z.tar')。完成後,在/usr/src將會出現一個新的「Linux」子目錄。進入到Linux目錄下,查看README文件,看是否有一段標題爲「INSTALLING the kernel」或相似的文字。若是正確,依照說明裏的指示,創建符號連接,刪除過期的.o文件等。 

5.編譯核心  

爲了方便使用者編譯核心,核心的編譯與設定依據使用者下達的指令而有許多不一樣的進行方式。使用者能夠使用的指令以下 :  

 make config:在文字模式下設定編譯核心的選項。  

 make oldconfig:以舊版 /usr/src/linux-2.2.5/.config 文件記錄的選項做爲編譯核心的選項。  

 make menuconfig:在文字模式的選單下設定編譯核心的選頂。  

 make xconfig:在 X Window system 下設定編譯核心的選項。  

 make clean:將一些沒必要要的文件刪除。  

 make dep:將原始程序和硬件作鏈接的工做。  

 make zImage:編譯核心,但不作其餘的事。  

 make bzImage:若是 make zImage 創建的核心太大,使用者能夠使用 make bzImage 編譯核心。  

 make zdisk:編譯核心,而且創建啓動盤。  

 make zlilo:編譯核心,而且創建有 LILO 的啓動盤。  

使用者不論使用 make configmake menuconfig 或 make xconfig 指令設定編譯核心的選項,只有操做界面的不一樣,設定的項目並無改變。 

下面是重建內核選項時的一些參考。 

1processor family (386486/cx486586/k5/5x86/6x86pentinum/k6/tscppro/6x86)  

選擇CPU的種類,BIOS能夠自檢獲得,注意系統的啓動信息。須要注意的是不能選擇比本身的CPU類型還高級的CPU,不然可能不能正常工做。  

2math emulation  

模擬數學協處理器,若是您的機器沒有數學協處理器,就能夠選中它以提升性能,但「486」之後數學協處理器就集成到CPU內部了,應該是用不上的,因此通常的選擇是N。固然選上也不會有什麼問題,除了內核稍稍變大外。  

3mttrmemory type range registersupport  

這個選項是用來啓動pentinum propentinum II 的特殊功能,若是您用的不是這類CPU就選N,不然也僅僅是使內核變大而已。  

4symmetric multi-processing support  

同步處理器支持,若是您有多個CPU就選上。  

5enable loadable module support  

這會啓動動態載入額外模塊的功能,因此必定選上。  

6set version information on all symbols for modules  

這個選項能夠使爲某個版本的內核而編譯的模塊在另外一個版本的內核下使用,但通常用不上。  

7kernel module loader  

若是啓用這個選項,用戶能夠經過kerneld程序的幫助,在須要的時候自動載入或卸載那些可載入式的模塊。建議選擇此項。  

8networking support  

若是您用到任何網絡就應該選上。 

9pci bios support  

這個選項通常是應該選上的,除非使用沒有任何PCI設備的機器。PCI BIOS是用來偵測並啓用PCI設備的。  

10pci bridge optimizationv1.3) 

當這個選項被啓動時,操做系統會對從CPU和系統內存在PCI總線來往的數據作最佳化,這個功能已經完成實驗階段,使用起來應該很安全,並且還可增進系統的效率。  

11system v ipc  

起用這個選項能夠使內核支持System V 的進程間通訊的功能(IPC),有些從System V轉移過來的程序會須要這個功能,建議啓用該功能。  

12sysctl support  

除非內存少的可憐,不然您應該啓動這個功能,啓用該選項後內核會大8KB,但能讓您直接改變內核的參數而沒必要從新開機。  

13kernel support for elf binaries  

該選項讓用戶的系統得以執行用ELF格式存儲的可執行文件,而ELF是現代Linux的可執行文件、目標文件和系統函數庫的標準格式。當操做系統要和編譯器以及鏈接器合做時會須要這些標準,因此應該回答Y。  

14compile kernel as elf  

這選項讓您的內核自己以ELF的格式編譯,若是系統上的過程gcc默認產生ELF格式的可執行文件,那麼就應該啓動這個選項,但應查看一下本身的編譯器的版本再決定。  

15parallel port support  

若是用戶有任何並行口的設備而且想讓Linux使用,那麼就能夠啓用這個選項。Linux不只能夠使用並口打印機,還能夠支持PLIP(一種爲並行口而設計的網絡通信協定),ZIP磁盤驅動器、掃描儀等。在大多狀況下,須要額外的驅動程序才能使用外接的並口設備。  

16plug and play support  

支持PnP設備並不是Microsoft的專利,若是要讓Linux也支持PnP設備,只要啓用該選項就能夠,但有些狀況下會和其餘設備產生衝突(I/ODMAIRQ等)。這個選項對PCI設備沒有影響,由於它們本生就是PnP設備。  

17normal floppy disk support  

除非不想在Linux下使用軟盤,不然就應該回答Y。但對於一些不須要支持軟盤驅動器的系統而言,這個選項能夠節省一些內存。  

18enhanced ide/mfm/dll disk support  

除非不須要MFM/DLL/IDE硬盤的的支持,不然就應該回答Y,但若是隻有SCSI的硬盤,關掉這個選項會比較安全。  

19enhanced ide/mfm/dll cdrom support  

和上面的相似,只不過是對CDROM的支持而已。  

20enhanced ide/mfm/dll tape support  

通常沒有多少人在用磁帶機,因此回答N是比較好的答案。  

21enhanced ide/mfm/dll floppy support  

這個設備通常沒有人用,因此也能夠回答N。  

22xt harddisk support  

若是用戶有這種石器時代的XT硬盤,那麼就能夠回答Y。  

23parallel port ide device support  

Linux是支持這種很新的並口的IDE設備的,若是有的話就選Y。  

24networking options  

若是在前面選了支持網絡的話,在這裏會回答不少問題。除非有特別的需求,不然使用默認的選項應該就足夠了。  

25scsi support  

若是有任何一種SCSI控制卡,這個選項就應該回答Y。事先搞清楚本身的硬件類型,由於這些問題都是針對特定的SCSI控制芯片和控制卡的,若是不肯定本身使用的是哪種,查看一下硬件的說明文件或者LinuxHOWTO文檔。此處一樣也會讓用戶回答不少SCSI設備的支持(硬盤、CDROMTapefloppy等),依據實際狀況選擇。若是沒有SCSI設備的話,建議不要支持,由於這會節約不少內核空間。  

26network device support  

這裏面有不少關於網絡控制卡的問題,若是沒法肯定如何正確選擇,查看硬件文檔或LinuxHOWTO文檔。  

27amateur radio support  

這個選項能夠用來啓動無線網絡的基本支持。目前的無線網絡能夠經過公衆頻率傳輸數據,若是用戶有此類設備就能夠啓用,具體請參考AX25HAM HOWTO 文檔。  

28isdn subsystem  

若是有ISDN硬件就應該啓用該選項並安裝合適的硬件驅動程序,用戶應該還會須要啓用Support synchronous PPP選項(參考PPP over ISDN)。  

29old cd-rom drivers  

這是針對一些特殊光盤驅動器程序的問題,若是用戶有IDESCSICDROM控制卡,那麼就不用啓用該選項了。  

30character devices  

Linux支持不少特殊的字符設備,例如並口、串口控制卡、QIC02磁帶驅動器以及特定界面的鼠標,此外對於遊戲杆和影像攝取和麥克等也在這裏面,依據本身的狀況選擇。  

31filesystems  

這是一系列內核所支持的各文件系統的問題,對ext2 /proc文件系統是必定應該支持的,有光驅還應該支持ISO9660(或模塊支持),有WindowsDOS分區而且想在Linux下訪問他們也能夠進行支持。  

32console drivers  

至少應該支持VGA text console,不然沒法從控制檯使用Linux。  

33sound card support  

在這裏回答Y會出現不少關於聲卡的問題,用戶應該根據本身的狀況來配置。  

34kernel profiling supportv1.3) 

這個選項能夠開啓內核作效率統計的功能,而且會提供其餘在爲系統偵錯時有用的信息。這些功能會須要付出一些代價並形成系統執行得較爲緩慢,除非用戶正在研究內核的某個問題,不然應該回答N。  

35kernel hacking  

若是用戶正打算深刻研究本身系統上運行的Linux如何運做,這裏有不少選項,但若是沒有必要的話能夠所有關掉。  

12.3  應用軟件安裝 

12.3.1  Oracle安裝 

Oracle在推出Oracle 8.0.5 for Linux以後,又快馬加鞭地將其最新旗艦產品Oracle 8i8.1.5Internet)移植到Linux上。Oracle 8i比其之前的產品更適應目前的Internet發展,對Internet的支持領先於其對手。Orcale 8i 比其早先版本有很大改變,特別是安裝程序。Oracle 8i啓用了新的安裝程序OUIOracle Universal Installer),OUI是用Java寫的,所以它可在任何JVM上運行,完全改變了原有的基於字符方式的Orainst,這一點頗讓廣大Oracle用戶感到不適。  

該版本(指在網上可供免費下載的)在發佈時存在太多的bug,因此Oracle根據用戶的反饋意見隨即發佈了一個補丁程序,基本解決了問題,因此在安裝完畢後必須打補丁。 

根據Oracle關於Oracle 8i for Linux的發佈公告,該版本是一個完整的軟件發行版本。 

1.系統需求 

按照Oracle的發佈公告(usr:clyancl passed iamclyan)中所要求的,Oracle 8i for Intel-Linux硬件和操做系統的要求是: 

內存:最小128MB,運行Java VM則需256MB或更多。  

 交換空間:建議三倍於內存,如內存超過1GB,則可減小爲二倍於內存或更少。  

 內核版本:Linux kernel 2.2。  

 窗口管理器:任何窗口管理器,如fvwm。該版本再也不支持基於字符的安裝。  

 系統庫:glibc 2.1redhat 6.0)。

  安裝空間:最小約693MB,典型約765MB。  

 交換空間:建議三倍於內存,如內存超過1GB,則可減小爲二倍於內存或更少。  

 JDK1.1.6V5

  其餘需求:egcs-1.1.2tcl 7.5等。  

關於所需內存,不必定要128MB以上,實際上64MB內存也能夠,只是運行速度較慢而已。爲了能充分利用Oracle 8i提供的衆多基於圖形方式的實用程序和知足大數據庫的查詢處理,建議最好有128MB或更多的內存。 

2.準備工做 

1)下載Oracle 8i for Linux。用戶可到OracleFTP站點上下載Oracle 8i企業版(815ship.tgz 245M)。 

2)下載Oracle 8i的補丁程序。用戶可到OracleFTP站點下載Oracle 8i企業版的補丁程序。(linux_81501patch_ee.tgz 6.1M)。 

3)下載JDK 1.1.6v5。用戶可到Blackdown.org查詢下載的站點,也可下載JDK 1.1.6v5JRE 1.1.6v5,實際上安裝只要jre便可。 

3.安裝前

 首先檢查是否有足夠的硬盤剩餘空間,建議用一個單獨的分區安裝Oracle 8i和數據庫。若是用戶使用Gnome/enlightenment窗口環境,必須檢查一下enlightenment的版本: 

rpm -q enlightenment 

若是是enlightenment-0.15.5-32,則必須升級到0.15.5-37版本,可按上面介紹的方法升級。RedFlag同時提供GnomeKDE,在「/usr/X11R6/lib/X11/xinit」目錄下有一個Xclients文件,修改它可選擇運行Gnome仍是KDE。本文使用KDE。 

本書假定:

 ORACLE_HOME=/u1/oracle/product/8.1.5 

ORACLE_SID=ORCL  安裝JRE 1.1.6v5 

jre_1.1.6-v5-glibc-x86.tar.gz拷貝到/usr/local目錄下,解壓縮: 

tar zxvf jre_1.1.6-v5-glibc-x86.tar.gz 

ln -s jre116_v5 jre 

 建立oracle用戶和組

 groupadd dba 

groupadd oper(該組是可選的,其ID多是501) 

useradd oracle -g dba 

passwd oracle(修改口令) 

建立oracle的安裝目錄,本文將安裝目錄設爲「/u1/oracle/product/8.1.5」。只需建立「/u1」便可,設置「/u1」的全部者: 

chown oracle.dba /u1 

再建立一個目錄用於暫放Oracle 8i軟件包815ship.tgz

 mkdir /ora_package 

chown oracle.dba /ora_package 

建立好oracle用戶和相關組後,退出rootlogout),從新用oracle用戶登陸... 

cd /home/oracle (或 cd ~)進入oracle用戶的主目錄,建立該用戶的自動執行文本

".bash_profile"。 

vi .bash_profile 

在該文件中加入下列內容: 

# Setup ORACLE environment

 ORACLE_HOME=/u1/oracle/product/8.1.5 

export ORACLE_HOME 

ORACLE_SID=ORCL 

export ORACLE_SID 

ORACLE_TERM=xterm 

export ORACLE_TERM 

ORACLE_OWNER=oracle 

export ORACLE_OWNER 

TNS_ADMIN=/home/oracle/config/8.1.5 

export TNS_ADMIN 

CLASSPATH=$ORACLE_HOME/jdbc/lib/classes112.zip 

export CLASSPATH 

# Set up the search paths: 

PATH=/usr/local/jre/bin:/usr/local/jdk/bin:/bin:/sbin 

PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin 

PATH=$PATH:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:.

export PATH 

保存該文件,而後logout

 4.安裝 

oracle用戶登陸,將下載的oracle 8i軟件包815ship.tgz拷貝到已建立好的「/ora_package」目錄下,解壓縮:

 cp 815ship.tgz /ora_package 

cd /ora_package 

tar zxvf 815ship.tgz 

用戶能夠用ls看到oracle 8i的安裝文件runInstaller。 

1)啓動X Window,運行runInstaller 

startx 

啓動X Window後,啓用一個終端(kvt),在該終端中運行runInstaller: 

sh runInstaller

 這時能夠看到用jre運行的全新的圖形化的OUI的歡迎畫面,按照提示繼續安裝進程:  

 File locations,確認正確後,點擊【Next】按鈕,OUI裝載產品信息。  

 UNIX Group Name,默認爲dba,若是不填,則只有root能夠有oralce的系統管理員權限。  

 NextOUI出錯,提示要以root權限運行「/tmp/orainstall/orainstRoot.sh」,打開另外一個終端,鍵入下列命令:su(輸入root口令),sh/tmp/orainstall/orainstRoot.sh,提示建立"/etc/oraInst.loc並將OraInventory文件的組名改成dba,返回OUI按【Retry】。  

 Available Products Oracle 8i Enterprise Edtion 8.1.5.0.0,按【Next】。  

 Installation Types(這裏有一個小bug-典型安裝所需的空間比最小安裝「大」)選typical,按【Next】,出現安裝Oracle Intelligent Agent,按【Next】,在右上角有一個進度標尺提示。  

 Database IdentificationGlobal Database Name:First.yanzi(任意)。SID保留ORCL,按【Next】。  

 Database File Location,任意目錄,無特別要求,不妨設爲「/u1/oracle/dbs」,按【Next】。出現Summary,對用戶想要安裝的產品做一個總結。  

按【Install】,出現Install畫面,用戶能夠看到窗口底部提示的安裝等log文件目錄,可供之後查詢。  

接着會彈出一個提示:執行「/u1/oracle/product/8.1.5/root.sh,在另外一個終端窗口中(剛纔su的那個便可)以root權限執行該文件,將默認的/usr/bin改成/usr/local/bin,執行完畢後,返回OUI,按【OK】。  

安裝Configuration Tool,安裝dbassist時出錯,按【OK】忽略,按【Next】。  

 End of Installation,按Exit退出OUI,完成安裝。  

修改/etc/ld.so.conf,加入以下內容: 

/u1/oracle/product/8.1.5/lib 

/u1/oracle/product/8.1.5/jdbc/lib 

保存該文件,執行ldconfig  -v。  

2)打補丁 

將下載的Oracle 8i企業版補丁程序linux_81501patch_ee.tgz拷貝到/ora_package/ora_ patch目錄下,進入此目錄,解壓縮:  

mkdir /ora_package/ora_patch    

cp linux_81501patch_ee.tgz /ora_package/ora_patch  

cd /ora_package/ora_patch  

tar zxvf linux_81501patch_ee.tgz  

sh linux_81501patch_ee.sh  

補丁程序只能運行一次。 

3)建立數據庫

 在Oracle 8i中提供一個圖形界面的數據庫助理dbassist,它也是基於Java的,利用它能夠建立、修改和刪除數據庫。 

在一個終端窗口中運行dbassist:  

dbassist &,出錯時按【OK】忽略,  

選擇Create a database,按【Next】,  

選擇Typical,按【Next】,  

選擇Create new database files,按【Next】,  

選擇Online Transaction PrecessingOLTP),按【Next】,  

併發用戶15,按【Next】,  

數據庫配置選項所有選中,按【Next】,  

輸入Global Database Name: oracle1SID保留ORCL,按【Next】,  

如今能夠直接建立數據庫,也可保存爲一個Shell腳本文件在字符方式下執行,該腳本保存在$ORACLE_HOME/install目錄下,名字爲sqlORCL.shsh $ORACLE_HOME/install/sqlORCL.

 sh)。  

建立好數據後,關閉數據庫服務器。 

svrmgrl 

connect internal

 shutdown 

quit 

4)測試數據庫

 數據庫的測試可參照Oracle 8.0.5安裝指南提供的方法進行。 

注意:system的默認口令是manager,而sys的默認口令是chang_on_install。 

關於Oracle 8i的網絡配置,可以使用新的圖形界面的netasst,經常使用的網絡協議用TCP/IPTCP端口1521,這些可在netasst中經過配置偵聽器(listener)來實現,而後用lsnrctl start命令啓動偵聽程序。 

12.3.2  安裝Sybase客戶端  

首先從Microsoft SQL ServerSybase SQL Server的關係提及。兩公司曾共同開發OS/2上的數據庫SQL Server for OS/2,此後兩公司又獨立開發升級系統,Sybase的客戶端能夠訪問Microsoft SQL Server。  

和其餘數據庫公司相比,能夠說Sybase公司對Linux是最兼容的,它雖不提供Linux下的SQLServer,但提供了免費的CTLIB的客戶端,這也多是許多IT管理人員在爲公司數據庫選型時再也不考慮OracleInformix的理由之一。 

Sybase公司發佈的OpenClientforLinuxa.out格式的,在互聯網上有人將其轉化爲ELF和動態連接的ELF格式,可從下列地址上下載:http://www.mbay.net/mpeppler。最好同時下載兩個版本,正常使用時採用動態連接的版本,但有的程序在編譯時可能須要一個庫(libblk.a),只在ELF裏面包含。  

下載之後,鍵入以下命令展開(假設當前目錄是/usr/tmp),下載軟件包爲

Linux-df-dynamic.tar.gz。 

tar zxvf linux-df-dynamic.tar.gz 

而後將其移至/usr/local目錄:  

mvsybase/usr/local  

編譯和使用Sybase客戶端須要進行以下的設置:  

 Interface文件舉例以下:  

MSSQL  

querytcpethermysql1433  

其中: MSSQL是客戶端使用的服務器名,之後引用MSSQL便可; mysql是服務器

的地址或名字,若是是名字,則系統可以查到其IP地址; 1433SQLServer的端口號,MicrosoftSQLServer的默認值是1433Sybase5000。  

 SYBASE環境變量,內容是Sybase客戶端所在的目錄:  

Export SYBASE=/usr/local/sybase  

若是編譯Sybase客戶端中的例子,則還要設置環境變量SYBPLATFORM:  

export SYBPLATFORM=Linux  

而且修改其頭文件中關於服務器名稱及用戶名和口令的描述。  

使用SQSH界面訪問SQLServer  

Sybase客戶端提供了xisql工具,但更多的人使用的是SQSHSQSHSQShell的縮寫,是改進了的isql,可從下列地址下載:http://www.voicenet.com/gray/。當前的最新版本是1.6.0。假設下載後的文件放在/usr/tmp目錄下,下載軟件包爲sqsh-1.6.0.tar.gz

 Torr zxvf sqsh 1.6.0.tar.gz。 

cdsqsh1.6.0  

./configure  

make;makeinstall  

而後,將生成的可執行文件sqsh安裝到/usr/local/bin/目錄下。  

Sqsh的使用以下:  

sqsh--Uusername--Ppassword--Sservername  

其中usernamepassword是用戶名和口令,servername是在interface文件中定義的服務器名(如例子中的MSSQL)。  

Sqsh是交互式的命令行界面,命令用輸入go來執行,命令若是較長,可分紅幾行書寫,按【Enter】鍵換行便可。  

如下是一個例子:  

1>usepubs  

2>go  

1>selectfromauthors  

2>go採用CTLIB編寫應用程序  

因爲SybaseLinux客戶端不提供DBLibrary,因此應採用CTLibrary來編寫應用程序,採用CTLibrary編寫應用程序可參考上例,詳細的編程說明能夠參考Sybase的說明。  

 利用Sybperl編寫應用程序  

SybperlSybasePerl擴展,可利用Perl語言來訪問SQLServer,或者編寫CGI程序。

Sybperl可從下列地址取得http://www.mbay.net/mpeppler。當前的最新版本是2.9.5。取得Sybperl的源代碼展開之後,應該修改一下CONFIG文件。 

下一個要修改的文件是PWD,這是用來進行測試的,將其中的服務器名、用戶名、用戶口令設置成本身的配置便可。而後進行編譯:  

perlMakefile.PL  

make;maketest;makeinstall  

194  12章  核心升級和應用軟件安裝 

安裝成功之後,便可使用Sybperl進行編程。下面是一個簡單的例子。  

!/usr/bin/perl  

useSybase::CTlib;  

dbh=newSybase::CTlib'sa','','MSSQL';  

dbh>ct_execute("selectau_id,au_lname, au_fnamefrompubs.dbo.authors");  

while(dbh>ct_results(restype)==CS_SUCCEED){  

nextunlessdbh>ct_fetchable(restype);  

while((au_id,au_lname,au_fname)=dbh>ct_fetch){  

print"au_id-$au_lnameau_fname\n";  

 }  

}  

能夠看出,短短几行語句,就能夠完成對數據庫的操做。  

以上從幾個方面對在Linux下訪問MSSQLServer數據庫進行了說明,介紹了基本的API編程、SQSH命令行訪問、Perl訪問。其實,在Linux下還可採用其餘方式進行訪問,如採用第四級的JDBC進行訪問,這時除了JavaJDBC外,並不須要其餘軟件(具體信息可訪問http://www.connectsw.com)。  

12.3.3  ApacheMySqlPHP安裝 

1.安裝 Apache 

如今該安裝Apache了。假設用戶下載的源文件在/tmp目錄,應該確保以root帳號登錄,如下是安裝步驟: 

1)解包 

$ tar -zvxf apache_1.12.6.tar.gz 

$ cd apache_1.12.6 

$ ./configure --sysconfdir=/etc/httpd \ 

              --datadir=/home/httpd \ 

              --logfiledir=/var/log/httpd \ 

              --enable-module=most \ 

              --enable-shared=max \ 

              --disable-rule=WANTHSREGEX 

這告訴Apache把配置文件保存在/etc/httpd目錄。其餘文件(例如HTML手冊文檔,CGI-BIN目錄)都保存在/home/httpd目錄下。這也告訴Apache用戶將使用最經常使用的模塊,並把這些模塊做爲DSO模塊編譯,DSO就是Dynamic Shared Object的縮寫。經過DSO支持的模式編譯Apache,用戶可以隨時從Apache裏面增長和移除模塊,而不須要從新編譯它,這但是很是方便的。若是對此有興趣的話,您能夠仔細參閱Apache DSO文檔(在http://www.apache.org/docs/dso.htm中能夠找到)。接着運行make進行編譯。 

2)編譯 

$ make 

這將耗費一段時間,通常如今使用的機器(大都是PII級別)均可以在很短期內完成編譯。完成後,必須把身份更改爲root,以得到權限把編譯後的文件複製到最終的目錄下:

 $ su 

# make install 

一切正常的話,用戶能夠看到一連串的信息反映出您Apache是如何被安裝的。從/usr/local/apache/bin/apachectl/etc/rc.d/init.d/httpd 創建一個符號鏈接:

 # ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd 

而後在此文件中添加如下幾行(大概在文件頂部,約第二行的地方): 

# chkconfig: 2345 10 90 

# description: Activates/Deactivates Apache Web Server 

最後,運行chkconfigApache添加到系統的啓動服務組裏面:

 # /sbin/chkconfig --del httpd 

# /sbin/chkconfig --add httpd 

3)配置Apache 

Apache 1.12.4開始,3個配置文件:srm.conf, httpd.confaccess.conf的指令都已經集中在httpd.conf一個文件中。所以用文本編輯器打開httpd.conf而且更改如下指令爲: 

Port 80 

DirectoryIndex index.html index.shtml index.cgi index.phtml index.php3 

AddType application/x-httpd-php3 .php3 .phtml 

AddType application/x-httpd-php6-source .phps 

搜索整個文件,更改那些您認爲須要更改的指令。詳細的指令介紹,請訪問Apache官方站點並查閱相關文檔。

 (4)測試Apache 

請運行: 

# /etc/rc.d/init.d/httpd start 

不然能夠運行: 

# /usr/local/bin/apachectl start 

若是順利,就能夠從其餘機器上的瀏覽器上鍊接到您的機器並將看到Apache的歡迎頁面。並檢查如下進程是否運行着: 

# ps ax | grep httpd 

運行該命令後能夠看到 

14362 ? S 0:00 /usr/local/apache/bin/httpd 

14364 ? S 0:00 /usr/local/apache/bin/httpd 

14365 ? S 0:00 /usr/local/apache/bin/httpd 

14366 ? S 0:00 /usr/local/apache/bin/httpd 

14367 ? S 0:00 /usr/local/apache/bin/httpd 

14368 ? S 0:00 /usr/local/apache/bin/httpd 

2.安裝MySQL 

如今能夠開始正式的安裝了。假設用戶把全部必須的代源碼或者包都放在了/tmp下,若是您下載的是RPM包的話,那比較簡單;若是下載的是二進制包(沒有rpm程序或者想自定義的話),那麼會稍微麻煩一點。 

 RPM包安裝 

您必須成爲root用戶才能使用rpm安裝程序,如下是安裝過程: 

$ cd /tmp 

$ su 

# rpm -Uvh MySQL*(安裝和MySQL相關的全部包) 

這將安裝您下載的全部3MySQL包。建議使用RPM安裝方式,由於全部的工做都由rpm程序幫您搞好了。 

 源碼安裝 

相對於用RPM安裝來說,用二進制源碼安裝是稍微麻煩了點。可是用戶能夠在安裝腳本中自定義安裝的相關參數,而不用像rpm方式只能使用默認安裝方式。 

 安裝二進制源代碼 

若是您下載的是二進制源代碼,它的名字相似於:

mysql-12.22.21-pc-linux-gnu-i686.tar.gz。您必須成爲root用戶,而後解壓到/usr/local目錄,方法以下: 

$ cd /usr/local 

$ su 

# tar -zxvf /tmp/mysql-12.22.21-pc-linux-gnu-i686.tar.gz 

在全部文件解壓完後,一個名字叫mysql-12.22.21-pc-linux-gnu-i686的目錄將被建立出來。用戶能夠爲這個目錄作個符號連接,並給它一個更友好的名字mysql(省得叫mysql-12.22.21-pc-linux-gnu-i686這麼長): 

# ln -s mysql-12.22.21-pc-linux-gnu-i686 mysql 

若是之後有新版本的MySQL的話,您能夠只將源代碼解壓到新的路徑,而後再作個符號連接就能夠了。這樣很是方便,數據也更加安全。 

 創建一個MySQL 用戶

 如今用戶就能夠來創建一個能運行MySQL守護程序的用戶帳號,而且全部MySQL文件都歸此帳戶擁有。使用Linuxconf或者useradd命令去添加一個叫mysql的帳號,在添加以前,確保沒有人註冊了這個帳戶,還要暫時禁止login功能(不過通常都是在沒有其餘人登錄的狀況下調試機器,所以這個步驟可免)。 

 爲MySQL作準備 

首先將MySQL目錄和文件的屬主改爲 mysql 用戶和root組:

 # cd /usr/local 

# chown -R mysql:root mysql-12.22.21-pc-linux-gnu-i686 mysql 

而後運行一個小腳本程序,以創建初始化的MySQL數據庫。請以一個mysql 用戶的身份完成這個任務,這也是可以直接使用這個帳戶的唯一機會。 

# su mysql 

$ cd mysql 

$ scripts/mysql_install_db 

$ exit 

若是沒有任何出錯信息顯示的話,那就能夠了。 

 自動運行MySQL 

MySQL二進制包裏面,有一個名爲myslq.server的啓動腳本程序。把它複製到/etc/rc.d/init.d目錄裏面: 

# cd /etc/rc.d/init.d 

# cp /usr/local/mysql/support-files/mysql.server mysql 

接着把它的屬性改成xexecutable,可執行)。 

# chmod +x mysql 

最後,運行chkconfigMySQL添加到系統的啓動服務組裏面去。 

# /sbin/chkconfig --del mysql 

# /sbin/chkconfig --add mysql 

 測試MySQL 

MySQL裏面有一個簡單的數據庫例子test ,並且它的內部數據庫一直保持對權限和帳戶的監視,於是先運行mysql看看是否能夠工做。 

首先啓動MySQL: 

# /etc/rc.d/init.d/mysql start 

若是一切正常,能夠看到如下的信息出現: 

198  12章  核心升級和應用軟件安裝 

Starting mysqld daemon with databases from /var/lib/mysql 

若是安裝的是RPM包,那麼程序大都安裝在/usr/local/mysql/bin。在此目錄下運行客戶端程序: 

# mysql

 而後就能夠看到屏幕顯示出如下信息: 

Welcome to the MySQL monitor. Commands end with ; or \g. 

Your MySQL connection id is 2 to server version: 12.22.21 

Type 'help' for help. 

mysql> 

接着,用show databases命令能夠將安裝的數據庫列出來: 

mysql> show databases; 

能夠看到:

 +----------+ 

| Database |

 

+----------

+ | mysql | | test | 

+----------+ 

2 rows in set0.00 sec

 若是一切正常的話,那說明MySQL能夠徹底工做了!恭喜你!若是要退出程序,輸入:

exit 

mysql> exit;

 Bye 

 更改管理員密碼 

在一切正常後,要作的第一件事情是更改管理員的密碼。用戶能夠運行mysqladmin(請注意,此命令所在的目錄不必定列在系統的PATH中,因此最好是切換到此命令的目錄中直接執行): 

# mysqladmin -u root password newpassword 

此命令把root用戶的口令變成newpassword。這裏用newPassword表明root用戶的新密碼。

 3.安裝PHP 

Apache安裝和調試完成後,如今把精力集中到PHP上。假設下載的源文件在/tmp目錄下(暫時還不須要用root帳戶):

 安裝 

$ cd /tmp 

$ tar -zxvf php-12.0.7.tar.gz 

$ cd php-12.0.7 

$ ./configure --with-apxs=/usr/local/apache/bin/apxs \ 

              --with-config-file-path=/etc/httpd \

               --with-mysql \ 

              --with-gd \ 

              --with-zlib \ 

              --with-system-regex 

這個配置將把PHP編譯成ApacheDSO模塊。配置文件將保存在/etc/httpd(和Apache配置文件一塊兒)。若是按照本指南去作的話,一切應該很順利。 

若是把apxs安裝到了其餘路徑中,能夠更改--with-apxs=/usr/local/apache/bin/apxs 以指向apxs腳本程序所在的路徑。若是是使用RPM包安裝Apache的話,apxs應該在/usr/sbin/ apxs中。 

若是是以二進制包安裝MySQL的話,應該把--with-mysql 改爲--with-mysql=/usr/ local/mysql  

若是系統中不存在GD庫,那麼請取消--with-gd這一行。 

運行完配置腳本後,就能夠用make編譯PHP了: 

$ make 

若是沒有任何錯誤發生的話,就必須更換成root用戶以安裝PHP

 $ su 

# make install 

那好了,PHP已經魔術般地被安裝進了Apache。等Apache從新啓動後就能夠生效。 

 配置PHP 

PHP配置文件複製到/etc/httpd目錄中:

 # cp php12.ini-dist /etc/httpd/php12.ini 

此默認配置文件已經能夠很好地工做,不過若是想看到詳細的調試信息,能夠把error_reporting指令的默認值從7改到15: 

error_reporting = 15 

而後就能夠經過如下任一個方式從新啓動Apache了: 

# /etc/rc.d/init.d/httpd start 

# /usr/local/apache/bin/apachectl start

若是沒有出錯信息出現的話,那意味着PHP生效了。能夠用一個最簡單的包含PHP程序的頁面測試一下以確認PHP確實能夠工做。

  測試PHP 

新建一個叫test.php3的文件,內容以下: 

<html> 

<head> 

<title>My First PHP Page</title> 

</head> 

<body bgcolor=#ffffff> 

<? echo "Hello World"; ?> 

</body> 

</html> 

保存這個頁面,並放置在Apachehtdocs或者/home/httpd/html目錄下(若是用RPM包安裝的話),而後從瀏覽器中瀏覽它,例如: 

# lynx http://localhost/test.php3 

將看到一個顯示Hello World的頁面。這說明一切正常! 

12.3.4  紅旗網絡商務通eoffice的安裝 

eoffice爲中科紅旗軟件技術有限公司推出的Linux應用方案「紅旗網絡商務通」的一部分,「紅旗網絡商務通」包括:eofficeeshopWebmailez2min。若要使用其餘功能,請購買並安裝「紅旗網絡商務通」。/eoofice/gb爲簡體中文版,/eoffice/big5爲繁體中文版。

 1.安裝eOffice 

將紅旗服務器版2.0的安裝盤放進CDROM,運行下面的命令: 

monut/dev/cdrom   mnt/cdrom 

cd/mnt/cdrom/eoffice/gb(簡體中文) 

cd/mnt/cdrom/eoffice/gb(簡體中文) 

cd/mnt/cdrom/eoffice/big5(繁體中文)

 ./install 

依照提示便可完成安裝過程。 

2.卸載eoffice 

要刪除本軟件請執行下列的命令: 

rpm e eoffice-1.0 

 201 紅旗Linux用戶基礎教程 

su postgres 

destroydb eo_gb 

exit 

mysqladmin drop eform 

若要從新安裝eoffice,請卸載之前安裝的eoffice。 

3.使用eoffice 

安裝完畢,請用瀏覽器訪問http://xxx.xxx.xxx.xxx/eoffice.html(其中xxx.xxx.xxx.xxx爲您的主機名或IP地址)。第一次使用時,以guest用戶名和guest密碼登陸,擁有所有權限,帳號能夠被刪除,裝完後,刪除該帳號,及時更改密碼。Admin用戶名和123密碼是系統管理員帳號,擁有系統管理的權限,該帳號不可刪除,裝完畢後,及時更改密碼。 如有問題,請到公司的技術論壇查看:http://redflag.ntechlinux.comhttp://sz.ntechlinux.com或與中科紅旗軟件技術有限公司技術支持部聯繫。

 習題 

1.從因特網上FTP服務器取到的Linux軟件,其格式大可能是:(    )

 A*.tar

 

B*.gz

 C*.z D*.tar.gz 

E*.tar. 

2.對*.tar.應該:(   ) 

A.直接用 tar 將全部文件打包

 B.先使用 tar 將文件打包後,再用 Gzip compress 將該文件壓縮後的文件

 C.使用 Gzip 壓縮的文件

 D.使用 compress 壓縮的文件 

3zcat命令的功能是:(   ) 

A.解壓縮由 compress 命令產生的壓縮文件 

B.解壓縮由  Gzip 命令產生的壓縮文件 

C.把結果送標準輸出設備 

D.刪除原壓縮文件 

4.命令Gzip -d myfile.tar.gz (   ) 

解壓縮的使用方法 

在執行過解壓縮的處理後,保留壓縮文件 

不會額外佔用磁盤空間

 因此在執行完此命令後有myfile文件 

5.要知道 myfile.tar 中究竟包含了哪些文件,能夠用命令:(   ) 

Atar xvf myfile.tar 

BGzip -l myfile.tar  

Ctar tvf myfile.tar  

DGzip -d myfile.tar.gz    

6.下面哪個命令能夠要查看 /SOURCE 中的 myfile.tgz 的內容:(   ) 

Azcat /SOURCE/myfile.tgz | tar tvf   

Bzcat /SOURCE/myfile.tgz | tar tvf -

 Czcat /SOURCE/myfile.tgz  

Dzcat /SOURCE/myfile.tgz | tar xvf 

7.安裝和升級的限制包括:(   ) 

ALinux系統版本的限制  

BGNU CC Runtime Library版本的限制 

C.內存、硬盤的限制  

D.其餘相關軟件 

8.解開原始核心源代碼的包裝的時候應該:(   ) 

A.以「root」的身份登陸 

B/usr/src 目錄下,用 `tar zxpvf linux-x.y.z.tar.gz' 解開原始程式碼的包裝

 C.創建符號鏈結 

D.刪除過期的 .o 文件

 9make config命令表示:(   ) 

A.在文字模式的選單下設定編譯核心的選頂 

B.在文字模式下設定編譯核心的選項

 C.編譯核心,但不作其餘的事 

D.編譯核心,而且創建啓動盤

13章  配置網絡和網絡服務

本章內容提要 

本章要求能經過桌面環境對網絡及網絡服務進行配置 紅旗Linux對網絡功能的支持很是強大。在這一章裏咱們簡單介紹網絡及其常見網絡服務的配置。在這裏主要經過圖形界面方式完成配置任務的,更高級的話題能夠參考《紅旗Linux網絡管理教程》一書中相應的內容。

 

本章重點內容 

 

☆ 網絡配置

☆ 配置PPP鏈接

☆ 配置WWW服務器

☆ 網域名稱服務器(DNS) 

☆ 配置匿名FTP 

☆ 配置Sendmail ☆ 配置網絡遠程管理

☆ 網絡文件系統(NFS) 

☆ 虛擬主機 程☆ 經過局域網中另外一臺機器的調制解調器使用Internet 

☆ 配置Samba服務器 

☆ r-系列命令遠程訪問計算機 

  

13.1  配 置 網 絡 

1TCP/IP協議組簡介 

TCP/IP是用於計算機通訊的一組協議,一般稱它爲TCP/IP協議組。它是70年代中期美國國防部爲其ARPANET廣域網開發的網絡體系結構和協議標準,以它爲基礎組建的Internet是目前國際上規模最大的計算機網絡,正由於Internet的普遍使用,使得TCP/IP成了事實上的標準。 

2.經常使用協議 

之因此說TCP/IP是一個協議組,是由於TCP/IP協議包括TCPIPUDPICMPRIPTELNETFTPSMTPARPTFTP等許多協議,這些協議一塊兒稱爲TCP/IP協議。下面就對協議組中一些經常使用協議英文名稱和用途做一下介紹: 

TCPTransport Control Protocol)傳輸控制協議 

IPInternetworking Protocol)網間網協議

 UDPUser Datagram Protocol)用戶數據報協議 

ICMPInternet Control Message Protocol)互聯網控制信息協議 

SMTPSimple Mail Transfer Protocol)簡單郵件傳輸協議

 SNMPSimple Network manage Protocol)簡單網絡管理協議

 FTPFile Transfer Protocol)文件傳輸協議 

ARPAddress Resolation Protocol)地址解析協議 

3.分層模型 

從協議分層模型方面來說,TCP/IP4個層次組成:網絡接口層、網間網層、傳輸層、應用層。其中:

  網絡接口層

 這是TCP/IP軟件的最低層,負責接收IP數據報並經過網絡發送,或者從網絡上接收物理幀,抽出IP數據報,交給IP層。 

 網間網層  

負責相鄰計算機之間的通訊。其功能包括三方面。 

1)處理來自傳輸層的分組發送請求,收到請求後,將分組裝入IP數據報,填充報頭,選擇去往信宿機的路徑,而後將數據報發往適當的網絡接口。 

2)處理輸入數據報:首先檢查其合法性,而後進行尋徑——假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報還沒有到達信宿機,則轉發該數據報。  

 傳輸層提供應用程序間的通訊。其功能包括: 

1)格式化信息流; 

2)提供可靠傳輸。傳輸層協議規定接收端必須發回確認,而且假如分組丟失,必須從新發送。 

 應用層 

向用戶提供一組經常使用的應用程序,好比電子郵件、文件傳輸訪問、遠程登陸等。遠程登陸TELNET使用TELNET協議提供在網絡其餘主機上註冊的接口。TELNET會話提供了基於字符的虛擬終端。文件傳輸訪問FTP使用FTP協議來提供網絡內機器間的文件拷貝功能。

 4.配置網絡 

若是用戶是從紅旗Linux 1.1版本升級到紅旗Linux 2.0版本,那麼系統將保留原來的網絡配置信息。若是直接安裝了紅旗Linux 2.0版本,並且安裝程序沒有能識別網卡的狀況下,須要在安裝之後手工配置網絡。 

網絡配置能夠在字符模式或者X Window環境中進行。通常的配置方法是使用/bin/netconf命令。圖13-1所示爲/bin/netconf的圖形界面。選擇「客戶端任務」選項頁。其中列出了多個選項按鈕。

 「主機基本信息」選項用於配置主機名稱以及網絡適配器信息。 

「主機名」爲主機的徹底合格域名。 

若是主機中安裝了網絡適配器,選擇「適配器」頁面(1234分別指代主機中安裝的多個網絡適配器)。界面如圖13-1所示。 

 

13-1  網絡適配器配置 

其中「容許」選項的含義是啓用網卡,使網卡處於有效狀態,用戶必須選定此選項,不然在運行Linuxconf的過程當中會出現問題。「配置模式」爲主機分配IP地址的模式,系統支持的IP地址分配方式包括手工分配、DHCP分配和BOOTP分配。

 「主機名+網域」爲主機名稱與所在域名組合而成的徹底合格域名。「別名」字段爲可選項,用戶能夠在此輸入一個容易記憶的主機別名。「IP地址」和「網絡掩碼」分別對應主機IP地址和所在網絡掩碼,若是用戶選擇的是手工配置方式,纔有必要輸入這些信息。「Net設備」、「核心模塊」、「I/O port」和「Irq」字段分別定義了網絡適配器的設備名稱、網卡類型對應的核心模塊、I/O端口地址和中斷號。例如,對於配置的第一塊NE2000 Compatiable Ethernet網卡,能夠把「Net設備」配置爲「eth0」,「核心模塊」配置爲「ne」。 

「域名服務器詳述」選項用於配置主機所在域的域名及域名服務器地址。配置解析界面如圖13-2所示。 

 

13-2  配置解析 

「路由及網關」選項用於配置所在網絡到其餘網絡的鏈接方法。通常狀況下,使用默認配置便可。 

「主機搜索路徑」選項用於配置在進行主機名稱到IP地址的解析時使用域名服務的順序,其中hosts指使用/etc/hosts文件進行主機名稱解析,dns爲使用DNS名字服務器進行解析,若是網絡中啓用了NIS服務,也能夠使用NIS映像進行解析。 

「網絡信息系統」選項用於配置主機所在的NIS域,以及域中的主NIS服務器。 

IPX界面配置」選項用於配置IPX客戶機。 

Remote mail servers」選項,用於配置如何使用fetchmail從遠程服務器中獲取郵件。 「PPP / SLIP / PLIP」選項,適用於沒有網卡的用戶經過撥號方式鏈接到網絡時,選擇何種網絡協議。

13.2  配置PPP鏈接 

要在紅旗Linux系統中撥號上網,首先應該使用KDE中的kppp實用程序配置PPP撥號工具。啓動kppp的方法是選擇【網絡應用程序】→【Kppp】。 

配置PPP的主要步驟以下。 

1)首先要配置調制解調器。因爲通常的內置調制解調器都是winmodem,建議用戶選擇外置調制解調器。配置調制解調器的方法是選擇「設備」選項頁,如圖13-3所示。默認的調制解調器設備爲/dev/modem,通常狀況下,用戶須要選擇爲其餘串行設備文件,例如/dev/tty0S/dev/tty1S等等。鏈接速度能夠設置爲115200。 

 

13-3  配置調制解調器 

2)下面要檢查調制解調器鏈接狀況。選擇【調制解調器】選項,單擊【查詢調制解調器】按鈕,系統將自動檢測調制解調器是否能夠正常響應。若是沒有響應,可能須要選擇其餘兼容調制解調器或者重複「配置調制解調器」的步驟。 

3)接下來,須要配置PPP帳號。方法是選擇「帳號」選項頁,如圖13-4所示,單擊【新的】按鈕,出現「新建帳號」對話框。在這個對話框中,須要配置如下參數。 選擇「撥號」選項中,在「鏈接名字」中輸入該鏈接的名稱(任意),「電話號碼」字段輸入要撥的號碼。單擊【參數】按鈕,添加「noauth」和「-detach」兩個參數。如圖13-5所示。 選擇DNS選項,在「域名」字段中輸入主機PPP撥號之後所在域的域名。在「DNS地址列表」中添加域名服務器的IP地址。如圖13-6所示。 

13-4  建立PPP帳號 

 

13-5  撥號參數配置 

 

13-6  DNS參數配置 

如今,就能夠使用PPP撥號鏈接服務了。 

若是在創建PPP時有問題,能夠試一下minicomminicom像是Linux上的PROCOMM。方法是啓動minicom,撥號到ISP註冊,並在用戶的ISP啓動PPP以後,用【Alt+q】退出minicom,而後啓動pppd進程。 

$ pppd -d -detach /dev/modem 115200 & 

這時,就能夠ping一下ISP或者另外一個已知的IP地址,驗證是否一切正常。 用戶能夠使用netconf工具設置ppp接口,並使用下面的命令打開或關閉接口。 

$ ifup ppp0 

$ ifdown ppp0 

13.3  配置WWW服務器 

紅旗Linux系統提供了WWW服務器的安裝軟件ApacheApachehttpd默認的根目錄是/home/httpd,用戶能夠經過http://localhost瀏覽本機的主頁。httpd相關的幾個主要目錄以下:

 /home/httpd/html  保存系統主頁的目錄 

/home/httpd/icons  保存圖標的目錄 

/home/httpd/cgi-bin  通用網關接口程序目錄

 配置WWW服務器的方法是在netconf中選擇「Apache Web服務器」。 

1)單擊【預設配置】按鈕,出現圖13-7所示界面。 

 

13-7  WWW服務器預設配置 

 「管理員Email地址」用於在WWW服務器出錯時,用該地址向系統管理員發送出錯消息。 「域IP地址」用於虛擬域共享的IP地址。 「服務器名稱」是Web服務器的名稱,若是使用/etc/hosts或者DNS進行域名解析,就不須要設置該參數。 

「文件根目錄」是WWW服務器主文檔目錄的位置,在默認狀況下,把該目錄位置設置爲/home/httpd/html便可。 

假設用戶的WWW服務器的主機名稱爲www.redflag-Linux.com,當URL設置爲http:// www.redflag-Linux.com/index.html,將返回WWW服務器中的文件/home/httpd/html/index.html

 「出錯日誌」是記錄出錯消息的日誌文件,通常狀況下,該文件爲/var/log/httpd/error_log。 

「傳送日誌」文件中記錄了全部對WWW服務器的訪問信息。通常狀況下,該文件爲/var/log/httpd/access_log

 「代理日誌」文件中記錄了全部訪問該Web服務器的瀏覽器名稱。

 「Referer日誌」:若是用戶是經過某個主頁中的連接跳轉到本機WWW服務器上,則該主頁被記錄到referer日誌中。 

「腳本別名」中列出了CGI程序的位置。 

CGI SetUID用戶」和「CGI SetUID組」。 

指定了WWW服務器CGI程序運行時,進程的UIDGID,就是說,WWW服務器僅有權讀寫該UIDGID有權讀寫的文件。 

「監聽端口」指的是WWW服務器監聽客戶請求的端口,端口默認值爲80。這樣在訪問WWW服務器www.redflag-Linux.com時,URL應該設置爲http://www.redflag-Linux.com或者http://www.redflag-Linux.com:80。另外一個經常使用的端口值爲8080,這時URL應該設置爲http://www.redflag-Linux.com:8080。 

Pid文件」中保存了WWW服務器主進程的PID。該參數值通常不用修改。 

「超時限定」字段設置了客戶機鏈接到WWW服務器之後,到發出WWW請求的時間間隔。若是超過該時間間隔,客戶機仍然沒有發出請求,鏈接就會斷開。該參數以秒爲單位。 「主機名查找」設置了WWW服務器是否查找客戶機的主機名稱。若是禁用該選項,WWW服務器僅記錄客戶機的IP地址。

 (2)單擊【虛擬】域按鈕能夠設置WWW服務器的虛擬域名。在一臺WWW服務器上能夠定義多個虛擬域。只有在設置了「虛擬主機」的前提下,才能夠配置虛擬域。 

3)單擊【子目錄規格】按鈕或者【文件規格】按鈕,能夠設置WWW服務器中子目錄和文件的規則。 

4)單擊【模塊】按鈕,配置WWW服務器啓動過程當中須要加載的模塊。 

5)單擊【性能】按鈕,能夠調整Apache服務器的性能。界面如圖13-8所示。 

 

13-8  調整WWW服務器性能 

「啓動服務器」設置了服務器啓動過程當中,建立的子進程數目。 

「每一個服務器可帶的客戶數」設置了能夠同時訪問WWW服務器的客戶的數目。 

「每一個子服務進程可處理的最大請求數」設置了子進程在提供多少次訪問之後將退出。

 「最小閒置服務進程數」設置了處於閒置狀態的子進程的最小數目。若是閒置的子進程低於該參數值,服務器將啓動新的子進程。

 「最大閒置服務進程數」設置了處於閒置狀態的子進程的最大數目。

 「保持有效」選項設置了是否容許服務器創建永久鏈接。 

「保持有效時間」設置了永久鏈接中等待下一個活動請求的秒數。 

「活動請求的最大值」設置了永久鏈接中容許的最大請求的數目。 

「超時限定」設置了客戶機鏈接到WWW服務器之後,到發出WWW請求的時間間隔。若是超過該時間間隔,客戶機仍然沒有發出請求,鏈接就會斷開。該參數以秒爲單位。

 (6)「mod_ssl」配置WWW服務器的安全套接層選項。 

13.4  域名服務器(DNS 

TCP/IP網絡上,各個設備必須被分配一個唯一的地址。地址的語法由IP協議指定,稱爲IP地址。IP地址是40255範圍內的數字,由點號分開,例如127.0.0.1Internet或企業Intranet中的計算機使用這些數字地址與其餘計算機通訊。 

人們在使用網絡資源的時候,傾向使用有表明意義的名稱。這正是域名系統(DNS)出現的緣由。DNS是一個分佈式數據庫系統,提供了主機名稱與IP資源之間的映射。 

DNS按逆向樹的方式工做,很相似於文件系統中的目錄結構。爲了便於管理,DNS被劃分爲域。從頂層DNS結構如下的第一層獨立的實體是七個頂層域,它們按照不一樣類別劃分。商業組織使用.com域;教育組織使用.edu域;政府部門使用.gov域等等。這些域能夠被進一步劃分爲表明域中獨立企業和分支的子域。 

DNS的名字服務部分是基於客戶/服務器機制的,客戶查詢名字服務器(即DNS服務器)查找主機地址信息。各個DNS區域中都設置了一臺主名字服務器,它維護了區域中全部主機信息的權威性數據庫。除了本地主機信息,名字服務器還維護瞭如何與其餘名字服務器通訊的信息。若是名字服務器中沒有保存特定域的信息,它在接收到關於該域的請求時,將繼續沿着域層次把請求向上或向下傳遞,直到查找到一個權威答案。

 最經常使用的DNS名字服務器包括主名稱服務器和二級名稱服務器。 

1.主名稱服務器 

主名稱服務器時從本地硬盤文件中檢索DNS登記項的服務器。對於特定區域,主名稱服務器是具備權威性的,由於它不須要從其餘區域的名字服務器中再次查詢DNS信息。每一個區域中都只有一個主名字服務器。

 一臺服務器能夠用作某個區域的主服務器,同時做爲另外一個或多個區域的二級服務器。

 2.二級名字服務器 

二級名字服務器中保存了主名字服務器DNS數據庫的只讀副本。當二級名字服務器啓動時,它與主名稱服務器聯繫並請求一個完整的主DNS數據庫的副本。在最初的複製以後,二級名稱服務器定時與主名稱服務器聯繫,並下載最新的DNS信息。這個下載過程被稱爲「區域傳輸」,它保證了主名稱服務器上修改的DNS信息跨越系統被複制。區域傳輸一般每24小時進行一次。二級名字服務器能夠從多臺主名字服務器中接收DNS更新信息。

換句話說,一臺主機能夠做爲多個區域的二級DNS服務器。當本區域不能解析某個DNS請求時,服務器能夠將請求轉發給網絡中的其餘DNS服務器進行解析。主DNS服務器和二級DNS服務器均可以實現這種轉發的功能。 

要配置DNS服務器、二級DNS服務器,須要在netconf中選擇「Domain Name ServerDNS)」菜單項。 

下面,介紹其中的選項: 

domain」定義了DNS管理的域名。 

reverse mapping」創建了一個僞域,把IP地址轉換僞主機名稱。 

secondaries」用於建立二級服務器。

 「forwarders」和「forward zones」用於設置DNS服務器的轉發功能。 

13.5  配置匿名FTP 

配置匿名FTP的步驟以下:

 (1)在Account Manager中建立一個用戶名爲ftp的用戶,假設把該用戶的主目錄設置爲/ftpserver/ftp,不要爲用戶ftp設置口令。 

2)建立ftp主目錄,該目錄通常爲/home/ftp或者是/ftp。 

3)執行以下腳本程序,其中假設ftp主目錄爲/home/ftp。 

cd /home/ftp  

chmod 755 .; chown ftp .; chgrp group .  

mkdir bin dev etc lib pub usr usr/lib  

chown root bin etc dev lib usr usr/lib 

chmod 555 bin etc dev lib usr usr/lib 

chown ftp pub  

chmod 755 pub  

cd bin  

cp /bin/ls .  

chmod 111 ls  

cd ../etc  

cp /etc/passwd .  

cp /etc/group .  

chmod 444 passwd group  

cd ../lib  

cp /lib/libprot.so.1 .  

chmod 555 lib*  

chown bin lib*  

chgrp bin lib* 

cd ../pub 

mkdir incoming 

chmod 333 incoming 

cd ../usr/lib  

cp /usr/lib/libc.so.1 .  

cp /usr/lib/libsocket.so.1 .  

chmod 555 lib*   

chown bin lib*  

chgrp bin lib* 

cd ../..  

find /dev/socksys -print | cpio -dumpv /home/ftp  

find /dev/zero -print | cpio -dumpv /home/ftp 

若是本地用戶想把文件放在匿名訪問區,應該把文件放置在目錄~ftp/pub子目錄中。 在配置匿名ftp功能時,還須要考慮如下兩個問題。 

1)因爲在~ftp/etc/passwd文件中的口令字段不能保存加密口令,因此在複製文件/etc/passwd之後,可能須要手工刪除其中的口令字段。 

2)一些特權用戶不能使用ftp功能,以避免出現安全問題。ftp服務器在創建每一個鏈接時都要檢查/etc/ftpusers文件,該文件中記錄了無權使用ftp功能的用戶名稱。若是被請求的用戶名在這個文件中,則ftp服務請求將被拒絕。 

文件/etc/ftpusers中至少應該包含如下兩個用戶名: 

root 

uucp 

沒有標準Shell的帳號也應該列在這個文件中。沒有口令的帳號沒必要列在文件中,由於ftp服務器不爲這些用戶提供服務。 

13.6  配置Sendmail

 配置Sendmail的方法是在netconf中選擇Mail delivery systemSendmail)。對於通常的email系統,用戶只須要配置「basic information」參數。

 配置Sendmail界面如圖13-9所示。 

下面介紹「basic information」界面中的選項: 

 Present your system as:當網絡中的不一樣主機發送郵件時,這些郵件看起來都是從一個相同的主機地址發出的。這個參數通常爲網絡域名。 

 Accept email for domain-name:若是配置的是企業的主服務器,須要選擇該選項。 

 mail server:郵件服務器名稱。

  mail gateway:用於轉發郵件的郵件服務器。 

 mail gateway protocol:爲郵件網關協議名稱。 

在該界面中還能夠配置Sendmail特性、主機別名等信息。 

用戶也能夠直接配置文件/usr/lib/Sendmail.cf。 

13-9  配置Sendmail 

13.7  配置網絡遠程管理 

紅旗Linux提供的Linuxconf配置工具,容許系統管理員經過網絡對遠程主機進行管理。可是爲了安全起見,用戶必須肯定容許經過哪一個網絡或主機來調用Linuxconf配置該主機。配置Linuxconf網絡訪問權限的方法是在X Window環境中啓動/bin/netconf,單擊「雜項」選項,選擇「Linuxconf網絡訪問權限」,出現如圖13-10所示界面。 

 

13-10  Linuxconf網絡訪問權限配置界面 

netconf配置工具實際是Linuxconf配置工具的一個子集,因此配置Linuxconf網絡訪問權限與配置netconf網絡訪問權限是等效的。 

Linuxconf支持從WWW瀏覽器的遠程管理,用戶能夠從WindowsLinux或者任何一臺運行WWW瀏覽器的主機中使用Linuxconf配置網絡中另外一臺主機的信息。要實現從WWW瀏覽器的遠程管理,你必須選定「容許從瀏覽器中運行Linuxconf」選項。

 爲了監視對Linuxconf的使用,用戶能夠啓用日誌跟蹤功能。方法是選定「在/var/log/htmlaccess.log」選項,這樣任何主機在經過WWW瀏覽器使用Linuxconf配置工具時,都會在日誌文件中記錄一行訪問信息。 

「網絡或主機」與「網絡掩碼」字段是組合使用的。能夠在這兩個字段中指定能夠訪問本機Linuxconf的主機。假設容許IP地址爲192.9.200.1的網段,主機掩碼爲255.255.255.128的全部主機訪問本機,就能夠在「網絡或主機」字段輸入「192.9.200.1」,在「主機掩碼」字段輸入「255.255.255.128」。

 如今就能夠從其餘主機上經過WWW瀏覽器訪問本機Linuxconf配置工具了。方法是在URL中輸入本機IP地址和Linuxconf應用程序端口號(98)。假設本機地址爲192.9.200.41,在其餘主機的URL中輸入http://192.9.200.41:98/。出現Linuxconf說明信息,單擊屏幕底部的【Start】按鈕能夠註冊到主機中,系統將提示用戶輸入註冊到192.9.200.41的用戶和口令名稱。屏幕如圖13-11所示。 

 

13-11  遠程註冊Linuxconf 

在此,註冊用戶必須爲root。註冊成功之後,就能夠管理IP地址爲192.9.200.41的主機信息了。從遠程主機中配置Linuxconf的界面如圖13-12所示。 

在紅旗Linux 2.0版本中,增強了網絡服務器功能。下面,就介紹一下系統內置網絡配置工具的使用方法。 

 

13-12  遠程配置Linuxconf 

13.8  網絡文件系統(NFS 

NFS是事實上的LinuxLinux的文件共享協議。爲了將服務器中的文件系統對客戶共享,首先要在服務器上將文件系統導出。導出文件系統的方法是在netconf中「服務器端任務」頁面中選擇「網絡文件系統(NFS)」。 

單擊【Add】按鈕,出現如圖13-13所示界面,用戶能夠在這個界面中添加要導出的文件系統。被導出文件系統中的內容能夠直接在客戶端訪問。 

 

13-13  輸出文件系統 

對於每個導出的文件系統路徑,均可以指定一組能夠訪問該路徑的主機以及主機對導出文件系統的訪問權限。 

「輸出路徑」爲要導出的文件系統的路徑,用戶能夠指定一組能夠訪問該文件系統的客戶,客戶名稱爲客戶主機名稱。 

「可寫入」選項設置了客戶是否有權對文件系統執行寫操做。 

Root特權」設置了客戶是否具備對導出文件系統的root訪問權限。 

「翻譯符號連接」是指客戶機將絕對符號連接路徑轉換爲相對於root的符號連接路徑。若是客戶機沒有把服務器導出的文件系統安裝在「」上,就應該選擇該選項。 

「訪問請求來自安全端口」設置是否僅容許服務器接受來自客戶機安全端口的NFS請求。

 在圖13-13所示界面中,將目錄/home/My_export導出給主機whose_hosthis_host

 13.9  虛 擬 主 機 

一個網絡設備能夠被分配多個IP地址,只有在配置虛擬主機之後,才能夠實現虛擬域等功能。 

netconf中選擇「虛擬主機的IP地址」。單擊一個網絡設備名稱,例如,「eth0」,出現IP別名的界面,如圖13-14所示,配置IP別名的界面。 

 

13-14  設備IP別名 

用戶能夠成對輸入IP別名以及網絡掩碼,別名能夠是某一個固定的IP地址,也能夠是一個IP地址範圍。 

在系統啓動時,默認設定了一個網絡設備能夠支持的別名數(256個)。若要修改這個值,能夠建立文件/proc/sys/net/core/net_alias_max,在文件中輸入所指望的最大IP別名數目。

 這樣,用戶能夠使用網卡自己的IP地址或者IP別名訪問主機。

 使用ifconfig命令能夠看到新配置的IP別名,假設IP別名地址爲192.9.200.99。如今,就能夠使用IP地址192.9.200.11192.9.200.99訪問這臺主機了。 

$ ifconfig 

eth0 Link encap:Ethernet  Hwaddr 00:00:E8:31:51:A0 

  inet addr:192.9.200.11 Bcast:192.9.200.127 \ Mask:192.9.200.128 

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 

RX packets:589 errors:0 dropped:0 overruns:0 \ frame:0 

TX packets:12 errors:0 dropped:0 overruns:0 \ carrier:0 

collisions:0 txqueuelen:100 

Interrupt:5 Base address:0x300 

 

eth0:0  Link encap:Ethernet  Hwaddr 00:00:E8:31:51:A0 

  inet addr:192.9.200.99 Bcast:192.9.200.127 \ Mask:192.9.200.128 

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 

Interrupt:5 Base address:0x300 

 

lo  Link encap:Local Loopback 

  inet addr:127.0.0.1  Mask:255.0.0.0 

UP LOOPBACK RUNNING  MTU:3924 Metric:1 

RX packets:48 errors:0 dropped:0 overruns:0 \ frame:0 

TX packets:48 errors:0 dropped:0 overruns:0 \ carrier:0 

collisions:0 txqueuelen:0 

13.10  經過局域網中另外一臺機器的調制解調器使用Internet 

若是用戶的機器沒有調制解調器,可是所在的局域網中有一臺運行Linux的主機配有調制解調器(或其餘Internet鏈接方式),那麼,就能夠經過這臺主機上網。這樣對於一個小型的應用環境是十分有益的。 

要經過這種方式訪問Internet,就必須對這臺配有調制解調器的Linux主機進行配置:首先要設置IP假裝。這樣,網絡中的全部主機對於ISP的請求看起來都來自於同一臺主機,而ISP將容許它們經過。簡單假裝的命令以下: 

$ /sbin/ipfwadm -F -p m  

該命令將把默認轉發策略設置爲假裝。這種方法並安全,一種比較安全的方法以下。 

$ ipfwadm  -F -p deny  

$ ipfwadm  -F -a m -S 192.168.1.1/32 -D 0.0.0.0/0  

$ ipfwadm  -F -a m -S 192.168.1.3/32 -D 0.0.0.0/0  

$ ipfwadm  -F -a m -S 192.168.2.0/24 -D 0.0.0.0/0 

以上設置將默認策略設置爲拒絕轉發,並指明假裝IP地址爲192.168.1.1192.168.1.3的兩臺主機。同時假裝192.168.2.0網的任一臺主機IP地址。數字/32表明點到點的網,而/24指定C類網。-D 0.0.0.0/0指明IP假裝上網的主機使用的默認路由。

 13.11  Linux做爲Windows服務器 

紅旗Linux中提供了一個名爲Sambasmb)的工具套件,能夠把Linux主機假裝成Windows NT服務器,從而容許用戶的Windows 3.1/95/98主機連入網絡。Samba不只代替Windows NT,並且比Windows NT強大的多。

 能夠把一臺Windows 95/98主機做爲客戶機,另外一臺Linux主機做爲Samba服務器。這樣,Windows 95/98主機可以訪問網絡打印機,共享Linux目錄,並能經過Linux上的調制解調器進行遠程註冊,瀏覽Internet等等。一樣用戶能夠從Linux主機訪問運行Windows 95/98的機器。 

1.配置Samba服務器 

使用Samba做爲Windows服務器,先要在Linux主機上進行配置,其步驟以下: 

1)以root運行setup,從菜單中選

相關文章
相關標籤/搜索