作者簡介
曹江華:畢業於工科大學機電一體化專業,從事CAD設計。後從事小型資料庫的套用。1999年開始從事構建網路、管理維護、資料庫管理工作。1999年後開始接觸LINUX,將工作中的經驗總結後:在51CTO、計算機世界、IBM開發者、中國計算機報、IT168、<<網管員世界>>、上先後發表計算機Linux網路構建維護和安全的文章300多篇,290萬字,已出版《Linux伺服器安全策略詳解》,《Linux伺服器安全策略詳解》(第二版),《Red Hat Enterprise Linux 5.0伺服器構建與故障排除》,《Linux系統最佳實踐工具:命令行技術》四本堪稱Linux系統管理員日常工具書的熱銷圖書,目前關注開放系統和網路安全。
宣傳語
本書是Linux命令行下主要命令最詳盡的介紹,彌補了國內該領域市場空白
針對最新版Linux核心,匯集最常用命令和新增命令,提供最新命令行參考
結合大量套用實例,力求將每個命令的使用方法及功能介紹清楚
從使用方便性上為讀者考慮,功能相近的命令放在一起,便於讀者查閱
對於初、中級用戶,本書是一本字典式工具書供查閱
本書中介紹的重點命令通用於其他Linux發行版,是所有Linux用戶必備參考書
前 言
目前的Linux作業系統的圖形化操作界面已經相當優秀。在Linux上可採用多種圖形管理程式,來改變不同的桌面圖案或功能選單,例如GNOME和KDE等,這一點是Windows作業系統單一界面所望塵莫及的。但Linux是一個基於命令行的作業系統,命令行的命令是Linux作業系統的靈魂和精華所在,只有學會並掌握命令行技術,才能真正精通Linux,並成為真正的Linux高手。命令行能夠讓你訪問數百個工具軟體。在命令行上面,你可以使用一個管道把工具軟體結合在一起執行一項單個工具軟體無法完成的工作。
為什麼關注命令行
對於某些用戶和執行某些任務來說,使用圖形界面更容易、更簡潔。這實際上依賴於你要做什麼和你是誰。圖形用戶界面和命令行之間的區別就像極品飛車遊戲的自動駕駛與自己使用技巧玩一樣。不過還是建議你自己慢慢地打任務。這樣更有意思,而且你會慢慢地發現自己的技術提高了很多,包括漂移,你多玩就會領悟很多技巧,如果直接下載補丁的話就沒有太多的樂趣了。
初級Linux用戶多將矛頭指向相對圖形界面缺乏的UNIX的時候,多少人發出疑問:為何要死守命令行?我們說一個簡單的邏輯:圖形界面人機互動好,圖形界面簡單,圖形界面在某些任務方面,確實是高效而且簡單的,但是,某些任務方面,圖形界面是無能的。
Linux作業系統是一款文本式驅動的作業系統,這是它的優點所在,即使是Windows處理複雜任務的時候,圖形界面也只是一個界面(舉個例子:Word圖形界面做得很單純,但有不少任務仍需宏完成)。圖形界面消耗的是物理記憶體的空間,你的螢幕上需要處理複雜的問題的時候,圖形界面要密密麻麻地列出一堆列表,而它的作用不過是基於某個命令的圖形外殼,這個時候,圖形界面的直觀作用和命令行沒有區別。而命令行遵循的是邏輯原則,當你需要處理某個任務的時候,命令和參數的位置決定了你執行的邏輯,這個時候圖形界面無法做到。也許有人說,對於圖形界面的執行邏輯可以決定命令行的位置依賴性,並且可以在合適的地方增加更多的、更直觀的元素。但是,問題是圖形界面一旦達到這個地步,它的定製性能迅速下降。圖形界面的優點就在於這裡:對於簡單、固定邏輯流程的東西,它處理起來簡單、直觀、高效,所以非常適合作為套用軟體的互動界面,但是這也是圖形界面的缺點:對於複雜變化邏輯的東西,它處理能力低下。
學習命令行,不是要拋棄圖形界面,但是使用圖形界面,無法拋棄命令行。如果想要自己的系統更完善,那么還是好好學習命令行吧。下面看一個實際的例子。
公司經常會同步過來很多檔案,希望能按上傳日期移動到相應的資料夾。
如果使用圖形界面操作會比較麻煩,也許有人會說可以用Windows的一些同步軟體幫忙,但是如果你的系統不兼容Windows呢?可以使用一個簡單的shell腳本解決問題:
#!/bin/bash
ORIGDIR="/var/UploadFiles"
TARGDIR="/var/ClassifiedFiles"
filelist=$( ls $ORIGDIR/* )
for file in $filelist
do
date=$( ls -l $file | tail -1 | awk '{print $6}' )
if [ ! -e $TARGDIR/$date ]
then
mkdir $TARGDIR/$date
fi
mv $file $TARGDIR/$date
done
說明 變數ORIGDIR是上傳目錄,所有上傳的檔案都必須放在這個目錄下,且該目錄不能有子目錄。變數TARGDIR是分類目錄所在的目錄,所有分類好的目錄和檔案都是該目錄的子目錄。每一個檔案都按其修改日期(如果此檔案在上傳後未被修改的話,也應該就是其上傳日期)放在以其修改日期命名的目錄下。例如:位於$ORIGDIR目錄下修改日期為2008-09-26的檔案就被放在$TARGDIR/2008-09-26目錄下。
總結:雖然軟體可以解決不少問題,但是本來系統能解決的東西不需要軟體。你的高效和穩定來自於你的命令行,而圖形界面無法解決這個矛盾。
本書結構
本書的每一章都建立在前面章節所介紹知識的基礎之上,這樣就形成了從始至終的一個自然的學習路徑。讀者從本書獲得了足夠的知識之後,也會獲得相應的信心,同時會發現章節的順序和結構就是一個很有用的參考工具。
第1部分 Linux基礎
第1章Linux簡介 介紹Linux的基礎知識,包括桌面概述、各種可用的GUI應用程式,如何管理用戶、目錄和檔案,以及如何檢查系統進程以管理系統資源。
第2部分 從系統管理角度學習Linux 命令
第2章Linux檔案系統及其相關處理命令 介紹Linux層次式檔案系統,包括檔案、檔案名稱、路徑名、使用目錄、訪問許可權、物理連結和符號連結。理解檔案系統將有助於組織數據,以便快速地查找信息。還可以與其他用戶共享某些檔案,同時保持其他檔案為私有檔案。
第3章Linux磁碟管理及其相關命令 介紹Linux硬碟與格式化及分區基本概念,學習Linux磁碟管理和分區及其相關命令。
第4章Linux 進程及其管理命令 介紹Linux 進程的基礎知識:了解進程的屬性,理解Linux下進程的結構。認識Linux進程的創建、進程的管理、Linux的第一個進程init,然後簡單介紹Linux的執行緒,理解Linux守護進程,認識100個最常見Linux守護進程簡介。最後學習Linux 進程管理命令。
第5章Linux網路體系及其相關命令 介紹Linux網路體系:TCP/IP網路模型、OSI七層模型。熟悉Linux網路配置檔案後Linux網路管理命令。
第6章Linux用戶管理及其相關命令 首先介紹Linux用戶管理的方法和了解Linux用戶配置檔案。然後學習Linux用戶管理命令。
第7章Linux的備份和壓縮及其相關命令 首先介紹Linux備份策略,了解Linux下壓縮檔案格式。然後學習Linux壓縮備份常用命令。最後根據Linux命令行數據備份實例學習Linux企業級數據備份和恢復。
第8章Linux系統管理命令 首先介紹Linux啟動過程,了解LILO和GRUB啟動管理器。然後學習90個最常用的Linux 系統管理命令。最後了解Linux 性能監控的方法,本章是本書重點章節。
第9章Linux伺服器管理命令 首先介紹Linux伺服器市場近況,然後學習Linux主流伺服器管理命令的使用技巧。最後解釋xinetd和Linux伺服器工作方式的關係。本章是本書重點章節。
第10章Linux列印系統及其相關命令 首先介紹Linux列印系統發展路線圖,然後學習配置CUPS列印系統。最後學習Linux列印管理命令的使用方法。
第3部分 Linux開發編程中需要使用的命令
第11章Linux庫套用及其相關命令 首先介紹Linux庫的的定義、種類、常用的Linux庫等基礎知識。然後學習Linux庫操作命令。最後學習構建、安裝共享庫以及庫升級的過程。
第12章Linux開發常用命令gcc和make 介紹Linux的編程環境,內容包括:解釋如何調用gcc編譯器,描述如何使用make來更新一組程式。解釋如何使用gdb調試C程式。另外學習gcc、make、gdb的命令選項。
第13章Linux編輯器vi和Emacs 介紹包括兩個經典的強大的Linux命令行文本編輯器。絕大多數Linux發行版均包含廣泛使用的vi編輯器和同樣流行的GNU Emacs編輯器的“增強”版。使用文本編輯器可創建和修改文本檔案,這些文本檔案包括程式原始碼、Shell腳本、備忘錄以及文本格式化程式的輸入數據。首先將介紹vi編輯器的使用手冊,然後闡述了如何使用vi的許多高級功能,包括在搜尋串中的特殊字元、通用緩衝區和命名緩衝區、參數、標記以及在vi中執行命令。Emacs編輯器部分將首先介紹Emacs使用手冊,然後再介紹Emacs編輯器的很多高級功能,還包括Meta鍵、Alt鍵和Escape鍵的使用。該章還包括鍵綁定、緩衝區以及字元串和正則表達式的漸增式搜尋和完全搜尋。另外,該章還詳細講解了指針、游標、標記和區域的關聯。
第14章使用Shell 一旦讀者掌握了Linux基礎,就可以使用已有的知識,採用Shell作為程式語言來構建更加複雜和專用的程式。本章就Shell 基礎進行學習。
第4部分 附錄
限於篇幅,本書的附錄B、C在網上下載。
附錄A解讀LSB標準 LSB 的目標是使應用程式在任何 Linux 分發版上運行。LSB 實現這一點的方式是通過受一致性擔保的支持的分發版和應用程式認證。但它將提供一個環境,在這個環境中,支持LSB標準的各種Linux系統可以相互競爭,用戶可以在所有Linux系統中使用這些支持LSB標準的套用軟體。本附錄介紹LSB相關標準和基礎知識。
附錄B正則表達式和grep 講解如何使用正則表達式以充分利用Linux的潛在威力。很多工具,包括grep、vi等,可以接受正則表達式來代替簡單的字元串。單個的正則表達式可以匹配很多簡單的字元串。
附錄C命令行下使用Linux 幫助信息 詳細描述了在使用Linux系統時遇到的問題的典型解決步驟。該附錄還包括了很多Web站點的連結,這些站點提供了文檔資料、有用的Linux信息、郵件列表和軟體。
本書特色
目前市場上關於Linux命令行類的圖書並不多,並且大部分只是對命令行的常用命令作簡要介紹,既不全面也不深入,無法滿足讀者的需求。針對這種現狀,本書對Linux命令行下的主要命令進行了非常詳盡的系統介紹,彌補了該類圖書的一個市場空白。本書的最大特點是詳細,對每個命令均有詳細的解說,並結合大量套用實例,力求把每一個命令的使用方法及其功能都介紹清楚,讓讀者能夠更加深入地學習。隨著Linux不同版本的不斷推出和Linux套用的不斷增加,新的Linux命令層出不窮,原有的命令也在不斷更新,但市場上缺乏與命令行發展同步的參考用書。本書針對最新版本的Linux核心,重新整理和歸納了許多重要的常用命令和新增命令,力圖為讀者提供最新的命令行參考。從使用方便性上考慮,本書對Linux命令進行了詳細的分類,將功能相同或相近的命令放在一起,使讀者可以觸類旁通、舉一反三,以達到全面掌握的目的。對於初、中級用戶來說,許多命令並不熟悉,而且也不了解命令的參數,需要查閱相應的資料。此時,本書就可以像字典一樣供查閱。
本書的編寫基於RHEL 5.0作業系統,匯集了Linux命令行下最常用、最重要的命令。這些命令同時也適用於其他Linux發行版,是所有Linux用戶必備的參考用書。
本書適合的讀者對象
Linux套用愛好者,Linux網路管理員和系統管理員以及對故障排除方面感興趣的讀者,IT行業的相關人員,大專院校計算機專業師生,Linux系統管理、網路管理、維護的從業人員。作為一本系統管理與維護、網路配置與管理的工具類用書,本書對於相關工程技術人員也是一本不可多得的參考書。
致謝
我首先感謝在編寫過程中領導、朋友和家人的支持及幫助,包括51CTO網站編輯楊文飛、劉兵、李棉等人。另外,電子工業出版社的李冰、高洪霞編輯在我寫書的過程中給了我無私的幫助和鞭策,為了使這一本書能儘快與讀者見面,她們也付出了巨大的努力。李冰多次邀請專家對此書提出有益意見,對於此書的修改完善起到了重要作用。
由於作者水平有限,書中不足及錯誤之處在所難免,敬請專家和讀者給予批評指正。
編 者
2008年11月於北京
目 錄 Linux基礎
第1章 LINUX簡介
1.1 Linux簡介 1
1.1.1 UNIX作業系統的誕生 1
1.1.2 Minix作業系統 2
1.1.3 GNU早期簡史 3
1.1.4 POSIX標準歷史 3
1.1.5 Linux概述 4
1.1.6 Linux和開源軟體的商業化 5
1.1.7 Linux和開源軟體的商業模式 6
1.2 Linux核心和Linux發行版本 7
1.2.1 Linux發行版本概述 7
1.2.2 Linux核心的變遷 8
1.2.3 Linux主要發行版本 9
1.3 Linux的優勢 12
1.4 小結 14
目錄 從系統管理角度學習Linux命令
第2章 LINUX檔案系統及其相關處理命令
2.1 Linux的檔案系統介紹 15
2.1.1 檔案系統定義 15
2.1.2 Linux檔案系統的體系結構 15
2.1.3 Linux檔案系統結構 16
2.1.4 /proc檔案系統 18
2.1.5 Linux檔案系統的組成 19
2.1.6 檔案類型 20
2.1.7 檔案系統的特性 21
2.1.8 Linux主流檔案格式 22
2.2 查看當前Linux支持的檔案類型 26
2.2.1 ls:顯示檔案名稱 26
2.2.2 cat:顯示文本檔案內容 28
2.2.3 rm:刪除檔案 30
2.2.4 less:分屏顯示檔案 30
2.2.5 cp:複製檔案 31
2.2.6 mv:更改檔案名稱 33
2.2.7 grep:查找字元串 33
2.2.8 head:顯示檔案頭部 35
2.2.9 tail:顯示檔案尾部 35
2.2.10 sort:按順序顯示檔案內容 36
2.2.11 uniq:忽略檔案中的重複行 37
2.2.12 diff:比較兩個檔案 37
2.2.13 diffstat命令:diff結果的統計
2.2.13 信息 39
2.2.14 file:測試檔案內容 39
2.2.15 echo:顯示文本 40
2.2.16 date:顯示日期和時間 41
2.2.17 script:記錄Linux會話信息 42
2.2.18 apropos:搜尋關鍵字 43
2.2.19 locate:搜尋檔案 43
2.2.20 rmdir:刪除目錄 44
2.2.21 basename:顯示檔案或者目錄的
2.2.21 基本名稱 44
2.2.22 chattr:改變檔案的屬性 45
2.2.23 cksum:檔案的CRC校驗 46
2.2.24 cmp:比較檔案差異 47
2.2.25 split:分割檔案 47
2.2.26 dirname:顯示檔案除名字外的
2.2.26 路徑 48
2.2.27 find:查找目錄或者檔案 48
2.2.28 findfs:通過列表或用戶ID查找
2.2.28 檔案系統 49
2.2.29 ln:連結檔案或目錄 50
2.2.30 lndir:連結目錄內容 51
2.2.31 lsattr:顯示檔案屬性 51
2.2.32 od:輸出檔案內容 52
2.2.33 paste:合併檔案的列 53
2.2.34 stat:顯示inode內容 53
2.2.35 tee:讀取標準輸入到標準輸出
2.2.35 並可保存為檔案 54
2.2.36 tmpwatch:刪除臨時檔案 54
2.2.37 touch:更新檔案或目錄時間 54
2.2.38 tree:以樹狀圖顯示目錄內容 55
2.2.39 umask:指定在建立檔案時預設
2.2.39 的許可權掩碼 56
2.2.40 chmod:設定檔案或者目錄的
2.2.40 許可權 58
2.2.41 chgrp:改變檔案或者目錄所屬的
2.2.41 群組 60
2.2.42 chown:改變檔案的擁有者或者
2.2.42 群組 60
2.3 小結 61
第3章 LINUX磁碟管理及其相關命令
3.1 硬碟相關的概念 62
3.1.1 硬碟及其組成 62
3.1.2 硬碟的性能指標 64
3.1.3 硬碟接口方式 65
3.1.4 Linux伺服器硬碟的選擇 67
3.2 Linux磁碟分區 67
3.2.1 df:磁碟信息 69
3.2.2 du:顯示目錄或者檔案所占的
3.2.2 磁碟空間 70
3.2.3 dd:磁帶驅動操作 71
3.2.4 fdisk:磁碟分區 74
3.2.5 mount:載入檔案系統 75
3.2.6 umount:卸載檔案系統 77
3.2.7 mkfs:建立各種檔案系統 77
3.2.8 1mkfs.ext2:建立一個ext2/ext3
3.2.8 檔案系統 78
3.2.9 mkbootdisk:建立啟動盤 79
3.2.10 fsck:檢查檔案系統 79
3.2.11 fsck.ext2:檢查檔案系統 80
3.2.12 hdparm:設定磁碟參數 81
3.2.13 mkswap:建立交換分區 82
3.2.14 dump:備份檔案系統 83
3.2.15 restore:還原檔案 84
3.2.16 sync:寫入磁碟 84
3.2.17 e2label:設定卷標 85
3.2.18 badblock:檢查磁碟 85
3.2.19 quota:顯示磁碟已使用的空間
3.2.19 與限制 85
3.2.20 quotacheck:檢查磁碟的使用
3.2.20 空間與限制 86
3.2.21 quotaoff:關閉磁碟空間限制 86
3.2.22 quotaon:開啟磁碟空間限制 87
3.2.23 quotastats:顯示磁碟空間的限制 87
3.2.24 repquota:檢查磁碟空間限制的
3.2.24 狀態 87
3.2.25 mdadm:RAID工具 88
3.2.26 parted:磁碟分區工具 90
3.3 Linux磁碟操作實戰 91
3.3.1 為Linux添加新硬碟 91
3.3.2 Linux伺服器磁碟配額配置 94
3.3.3 最佳化Linux系統硬碟 99
3.4 RAID和LVM 101
3.4.1 Linux下軟體RAID配置 101
3.4.2 LVM基礎 105
3.4.3 LVM配置實戰 108
3.4.4 LVM和RAID配合使用 115
3.5 總結 119
第4章 LINUX進程及其管理命令
4.1 Linux進程的基礎 120
4.1.1 進程的基本概念 120
4.1.2 進程的屬性 120
4.1.3 理解Linux下進程的結構 121
4.1.4 進程狀態 121
4.1.5 Linux進程的創建 121
4.1.6 進程的管理 122
4.1.7 Linux的第一個進程:init 123
4.1.8 Linux的執行緒簡介 126
4.2 理解Linux守護進程 127
4.2.1 守護進程簡介 127
4.2.2 查看守護進程的方法 128
4.2.3 100個最常見Linux守護進程
4.2.3 簡介 128
4.2.4 Linux守護進程工作原理和方式 132
4.3 Linux進程管理命令詳解 135
4.3.1 at:定時運行命令 135
4.3.2 bg:後台運行命令 136
4.3.3 fg:掛起程式 136
4.3.4 jobs:顯示後台程式 137
4.3.5 kill:終止進程 137
4.3.6 crontab:安裝、刪除或列出
4.3.6 任務表 138
4.3.7 ps:查看許可權 139
4.3.8 pstree:列出當前進程的樹狀
4.3.8 結構 141
4.3.9 top:顯示進程 141
4.3.10 nice:改變許可權優先權 143
4.3.11 renice:修改優先權 143
4.3.12 sleep:暫停進程 144
4.3.13 nohup:用戶退出系統之後
4.3.13 繼續工作 144
4.3.14 pgrep:查找當前進程並列出
4.3.14 匹配給定條件的進程pid 144
4.3.15 chkconfig:設定系統的各種服務 145
4.4 總結 146
第5章 LINUX網路體系及其相關命令
5.1 Linux網路體系簡介 147
5.1.1 OSI模型 147
5.1.2 OSI七層功能說明 149
5.1.3 TCP/IP模型 152
5.1.4 IP定址、子網和路由 154
5.2 Linux網路基礎 157
5.2.1 Linux網路結構的特點 157
5.2.2 Linux下連線埠號分配 159
5.2.3 Linux的TCP/IP網路配置 161
5.3 Linux網路管理命令詳解 162
5.3.1 arp:管理系統中的ARP高速
5.3.1 快取 162
5.3.2 arpwatch:監聽ARP記錄 163
5.3.3 ADSL:數據機命令 164
5.3.4 ifconfig:設定網路接口 164
5.3.5 iwconfig:設定無線網卡 165
5.3.6 hostname:顯示主機名 169
5.3.7 ifup:激活設備 170
5.3.8 ifdown:禁用網路設備 170
5.3.9 mii-tool:調整網卡模式 171
5.3.10 route:設定路由表 172
5.3.11 netstat:查看網路連線 173
5.3.12 ping:檢測網卡接口 174
5.3.13 minicom:設定數據機 175
5.3.14 pppd:建立ppp連線 176
5.3.15 pppstats:顯示ppp連線狀態 177
5.3.16 chat:撥號命令 178
5.3.17 traceroute:顯示數據包到主機間
5.3.17 的路徑 178
5.3.18 rcp:遠程複製 179
5.3.19 finger:查找並顯示用戶信息 179
5.3.20 tcpdump:網路數據分析器 180
5.3.21 ip:網路集成命令工具 181
5.3.22 yum:軟體包管理 182
5.3.23 apt:管理套件的工具 186
5.4 通過Linux命令行進行網路操作 188
5.4.1 配置Linux的TCP/IP配置 188
5.4.2 Linux伺服器的靜態路由配置 193
5.4.3 Linux異構網路共享ADSL連線
5.4.3 及其故障排除 197
5.4.4 Linux命令行下傳送帶有附屬檔案的
5.4.4 郵件 204
5.4.5 掌握Linux命令行下載工具 206
5.4.6 掌握Linux命令行網路監控工具 213
5.5 掌握Linux 命令行嗅探器工具 223
5.5.1 Linux嗅探器簡介 223
5.5.2 使用Tcpdump 225
5.5.3 嗅探器的防範 228
第6章 LINUX用戶管理及其相關命令
6.1 Linux用戶管理簡介 232
6.1.1 Linux多用戶、任務系統 232
6.1.2 Linux用戶(user)和用戶組
6.1.2 (group)概念 233
6.1.3 Linux用戶、組及私有用戶組 234
6.1.4 理解Linux用戶配置檔案 236
6.1.5 理解Linux用戶組配置檔案 237
6.1.6 Linux用戶相關配置檔案 239
6.1.7 定製Linux系統環境變數 241
6.2 Linux用戶管理命令 243
6.2.1 useradd:建立用戶 243
6.2.2 userdel:刪除用戶 244
6.2.3 usermod:修改已有用戶信息 244
6.2.4 passwd:設定密碼 245
6.2.5 chage:密碼老化 246
6.2.6 groupadd:添加組 246
6.2.7 groupdel:刪除組賬戶 247
6.2.8 groupmod:修改組 247
6.2.9 vipw:編輯/etc/passwd檔案 247
6.2.10 vigr:編輯/etc/group檔案 248
6.2.11 newgrp:轉換組 248
6.2.12 groups:顯示組 248
6.2.13 gpasswd:添加組 248
6.2.14 whoami:顯示當前用戶名稱 249
6.2.15 who:顯示登錄用戶 249
6.2.16 id:顯示用戶信息 250
6.2.17 su:切換身份 250
6.2.18 pwck:檢測賬戶 251
6.2.19 grpck:檢測用戶組賬號信息
6.2.19 完整性 251
6.2.20 chsh:設定shell 251
6.2.21 chfn:修改用戶信息 252
6.3 Linux用戶管理實例 253
6.3.1 Linux用戶管理小技巧 253
6.3.2 配置sudo讓Linux用戶管理
6.3.2 更加安全 257
6.3.3 為Linux用戶配置PAM 262
6.3.4 Linux用戶安全策略 271
目錄 LINUX的備份和壓縮及其相關
第7章 命令
7.1 Linux備份恢復基礎 276
7.1.1 什麼是備份 276
7.1.2 備份的重要性 276
7.1.3 備份前需考慮的因素 276
7.1.4 選擇備份介質 277
7.1.5 Linux備份策略 278
7.1.6 確定要備份的內容 279
7.2 Linux下壓縮檔案格式簡介 280
7.2.1 .arc格式 281
7.2.2 .arj格式 281
7.2.3 .lzh(.lha)格式 282
7.2.4 .rar格式 282
7.2.5 .zip格式 283
7.2.6 壓縮檔案相關網址 284
7.3 Linux的備份和壓縮及其相關命令 285
7.3.1 tar:備份檔案 285
7.3.2 dump:備份檔案系統 287
7.3.3 cpio(copy in/out):備份檔案 288
7.3.4 restore:還原備份下來的檔案或
7.3.4 整個檔案系統(一個分區) 290
7.3.5 ar:建立、修改或從檔案檔案中
7.3.5 提取檔案 291
7.3.6 bunzip2:解壓縮.bz2檔案 292
7.3.7 bzip2:解壓縮.bz2檔案 293
7.3.8 unzip:解壓縮zip檔案 293
7.3.9 bzip2recover:損壞bz2檔案的
7.3.9 修復 294
7.3.10 gzip:壓縮檔案 294
7.3.11 compress:壓縮、解壓檔案 295
7.3.12 gzexe:壓縮執行檔案 296
7.3.13 lha:壓縮或解壓縮檔案 296
7.3.14 unarj:解壓縮檔案 297
7.3.15 zip:壓縮檔案 297
7.3.16 zipinfo:顯示壓縮檔案的信息 298
7.4 Linux命令行數據備份實例 299
7.4.1 Linux磁帶機備份攻略 299
7.4.2 用mirrordir做硬碟分區鏡像 309
7.4.3 使用partimage備份恢復Linux
7.4.3 分區 310
7.4.4 使用afio工具備份 311
7.4.5 在RHEL 5中使用Amanda實現
7.4.5 伺服器及客戶端備份 312
7.4.6 使用cfengine工具備份Linux
7.4.6 伺服器 320
7.4.7 部署開源磁碟備份伺服器rsync 330
第8章 LINUX系統管理命令
8.1 Linux啟動過程 336
8.1.1 Linux的啟動過程詳解 336
8.1.2 Linux運行級 339
8.1.3 /etc/inittab檔案詳解 340
8.1.4 init和/etc/inittab 342
8.2 Linux引導載入程式:LILO和
8.2 GRUB 343
8.2.1 LILO 343
8.2.2 GRUB 347
8.3 Linux系統管理命令詳解 359
8.3.1 apmd:高級電源管理 359
8.3.2 apmsleep:APM進入休眠狀態 360
8.3.3 apropos:查找使用手冊的名字
8.3.3 和相關描述 360
8.3.4 arch:輸出主機的體系結構 360
8.3.5 alias:設定別名 361
8.3.6 batch:執行批處理命令 361
8.3.7 cd:切換目錄 362
8.3.8 chkconfig:設定服務 362
8.3.9 clear:清除終端螢幕 363
8.3.10 clock:系統RTC時間設定 363
8.3.11 cal:顯示日曆 364
8.3.12 chroot:改變根目錄 364
8.3.13 date:顯示或設定系統時間 365
8.3.14 dmesg:顯示開機信息 366
8.3.15 dircolors:設定ls命令在顯示
8.3.15 目錄或檔案時所用色彩 367
8.3.16 depmod:分析模組 367
8.3.17 echo:顯示文本行 367
8.3.18 exec:執行完命令後,交出
8.3.18 控制權 368
8.3.19 exit:退出shell 368
8.3.20 eject:彈出介質 369
8.3.21 enable:關閉shell命令 369
8.3.22 fgconsole:顯示虛擬終端的數目 370
8.3.23 free:顯示記憶體信息 370
8.3.24 fuser:使用檔案或檔案結構識別
8.3.24 進程 370
8.3.25 getty:設定終端機模式 371
8.3.26 gdialog:從shell顯示文本信息 372
8.3.27 git:檔案管理員 372
8.3.28 halt:關閉系統 372
8.3.29 history:顯示歷史命令 373
8.3.30 hwclock:顯示與設定硬體時鐘 374
8.3.31 init:進程處理初始化 374
8.3.32 last:顯示登錄用戶信息 375
8.3.33 lilo:引導管理器 376
8.3.34 login:登錄系統 376
8.3.35 local:顯示本地支持的語言系統
8.3.35 信息 377
8.3.36 logname:顯示登錄賬號的信息 377
8.3.37 logout:退出系統 378
8.3.38 lsmod:顯示Linux核心的模組
8.3.38 信息 378
8.3.39 lsattr:顯示檔案在Linux第二
8.3.39 擴展檔案系統上的特有屬性 378
8.3.40 modinfo:顯示核心信息 379
8.3.41 modprobe:自動處理可載入
8.3.41 模組 379
8.3.42 ntsysv:設定系統的各種服務 380
8.3.43 pmap:顯示程式的記憶體信息 380
8.3.44 procinfo:顯示系統狀態 381
8.3.45 pwd:顯示工作目錄 382
8.3.46 reboot:重新啟動系統 382
8.3.47 rlogin:遠程登錄 383
8.3.48 rmmod:刪除模組 383
8.3.49 rpm:軟體包管理 384
8.3.50 shutdown:系統關機命令 388
8.3.51 sleep:延遲指定數量的時間 388
8.3.52 suspend:暫停執行shell 389
8.3.53 swatch:系統監控程式 389
8.3.54 tload:顯示系統負載 389
8.3.55 uname:顯示系統信息 390
8.3.56 authconfig:配置系統的認證
8.3.56 信息 390
8.3.57 declare:顯示或者設定shell
8.3.57 變數 392
8.3.58 enable:可用的shell內置命令 393
8.3.59 export:設定或者顯示環境變數 393
8.3.60 hostid:列印出當前主機的標識 394
8.3.61 insmod:載入模組 394
8.3.62 rdate:顯示其他主機的日期與
8.3.62 時間 394
8.3.63 runlevel:顯示執行等級 395
8.3.64 set:設定shell 395
8.3.65 setconsole:設定系統終端 396
8.3.66 setenv:查詢或顯示環境變數 397
8.3.67 setserial:設定或顯示串口的相關
8.3.67 信息 397
8.3.68 setup:設定公用程式 397
8.3.69 sync:將記憶體緩衝區內的數據
8.3.69 寫入磁碟 398
8.3.70 startx:啟動X Window 398
8.3.71 sysctl:設定系統核心參數 399
8.3.72 timeconfig:設定時區 399
8.3.73 ulimit:控制shell程式的資源 400
8.3.74 unalias:刪除別名 401
8.3.75 unset:刪除變數或函式 402
8.3.76 up2date:軟體包升級工具 402
8.3.77 uptime:告知系統運行了多長
8.3.77 時間 403
8.3.78 mousconfig:設定滑鼠相關參數 403
8.3.79 bind:顯示或設定鍵盤按鍵與其
8.3.79 相關的功能 404
8.3.80 kbdconfig:設定鍵盤類型 405
8.3.81 snapscreenshot:命令行截圖 405
8.3.82 mt:磁帶機控制 405
8.3.83 cdrecord:刻錄工具 406
8.3.84 dvdrecord:DVD刻錄工具 407
8.3.85 lspci:查看硬體插槽 407
8.3.86 sane-find-scanner:掃瞄器搜尋 408
8.3.87 scanimage:檢測掃瞄器型號 409
8.3.88 mtools:命令集 409
8.3.89 whereis:查找檔案 410
8.3.90 ytalk:與其他用戶交談 411
8.4 Linux系統性能監控 411
8.4.1 性能監控的重要性和方法 411
8.4.2 系統負載監測 413
8.4.3 Linux進程運行的監測 415
8.4.4 記憶體使用情況監測 416
8.4.5 中央處理器使用情況監測 418
8.4.6 使用iostat監測I/O性能 420
8.4.7 網路性能的監測 422
8.4.8 使用sar工具 424
8.4.9 使用nmon工具 428
8.4.10 Linux記憶體泄漏及其回收 434
第9章 LINUX伺服器管理命令
9.1 Linux伺服器市場近況 437
9.2 apache伺服器套用命令 440
9.2.1 apache伺服器管理命令 440
9.2.2 Apache伺服器日誌管理命令 450
9.2.3 Apache日誌管理命令 453
9.3 dns伺服器管理命令 459
9.3.1 dns伺服器啟動、停止、重新啟動
9.3.1 命令 459
9.3.2 Bind DNS伺服器管理、檢查查詢
9.3.2 命令 461
9.3.3 Bind DNS伺服器輔助工具dlint
9.3.3 和dnstop 475
9.4 NFS伺服器管理命令 478
9.4.1 nfsd:NFS伺服器啟動、停止命令 478
9.4.2 portmap:portmap守護程式將
9.4.2 RPC程式號轉換成網際網路連線埠號 478
9.4.3 rpcinfo:報告遠程過程調用
9.4.3 (RPC)伺服器的狀態 479
9.4.4 showmount:顯示遠程已安裝檔案
9.4.4 系統的所有客戶機的列表 480
9.4.5 umount:刪除當前已掛載的遠程
9.4.5 檔案系統 481
9.4.6 mount:mount命令將已命名的
9.4.6 檔案系統(本地或遠程)連線到
9.4.6 指定的掛載點 481
9.4.7 automount:安裝自動安裝點 482
9.4.8 mountall:掛載一組檔案系統 482
9.4.9 exportfs:重新分享/etc/exports
9.4.9 變更的目錄資源 483
9.5 samba伺服器管理命令 483
9.5.1 啟動samba伺服器 483
9.5.2 testparm:檢查smb.conf配置
9.5.2 檔案的內部正確性 484
9.5.3 smbd(samba daemon):samba
9.5.3 伺服器程式 485
9.5.4 smbclient:類似FTP操作方式
9.5.4 的訪問smb/cifs伺服器資源的
9.5.4 客戶端 485
9.5.5 smbstatus:報告當前samba的
9.5.5 連線狀態 487
9.5.6 smbmount:裝載一個smbfs檔案
9.5.6 系統 488
9.5.7 smbpasswd:設定用戶的SMB
9.5.7 密碼 489
9.6 SSH伺服器管理命令 490
9.6.1 SSH伺服器啟動停止命令 490
9.6.2 SSH客戶端命令 494
9.7 squid伺服器管理命令 498
9.7.1 squid:代理伺服器squid守護
9.7.1 進程 498
9.8 DHCP伺服器管理命令 500
9.8.1 dhcpd:DHCP伺服器守護進程 500
9.8.2 dhclient:DHCPv6客戶端守護
9.8.2 進程 501
9.8.3 dhcp6c:DHCPv6客戶端守護
9.8.3 進程 501
9.9 FTP伺服器管理命令 501
9.9.1 FTP伺服器管理命令 501
9.9.2 FTP客戶端命令 504
9.10 E-mail伺服器管理命令 507
9.10.1 sendmail:為本地或網路交付
9.10.1 傳送郵件 507
9.10.2 mail:E-mail管理程式 509
9.10.3 mailq:顯示待寄郵件的清單 510
9.10.4 mailstats:顯示關於郵件流量的
9.10.4 統計信息 511
9.10.5 mutt:E-mail管理程式 512
9.10.6 Sendmail郵件伺服器性能控制 513
9.11 Linux防火牆管理工具iptables 515
9.11.1 iptables:Linux防火牆管理工具 515
9.11.2 ip6tables:ipv6版本的iptables
9.11.2 工具 521
9.11.3 iptables-save:iptables列表存儲 521
9.11.4 iptables-restore:裝載由iptables-
9.11.4 save保存的規則集 521
9.11.5 iptables配置企業套用 522
9.12 xinetd和Linux伺服器工作方式
9.12 的關係 524
9.12.1 什麼是xinetd 524
9.12.2 xinetd的特色 524
9.12.3 使用xinetd啟動守護進程 525
9.12.4 解讀/etc/xinetd.conf和/etc/
9.12.4 xinetd.d/* 526
9.12.5 配置xinetd 527
9.12.6 Linux下伺服器運行的兩種模式 532
9.12.7 xinetd防止拒絕服務攻擊
9.12.7 (Denial of Services)的原因 533
第10章 LINUX列印系統及其相關命令
10.1 Linux列印系統發展路線圖 535
10.1.1 PostScript語言 535
10.1.2 BSD LPD列印系統 537
10.1.3 LPRng列印系統 538
10.1.4 通用UNIX列印系統(CUPS) 538
10.1.5 Linux列印過程 540
10.2 配置CUPS列印系統 541
10.2.1 印表機驅動程式查詢和安裝 541
10.2.2 配置CUPS列印系統 542
10.2.3 使用Red Hat Linux列印配置
10.2.3 管理工具 545
10.2.4 重要資料 550
10.3 Linux列印系統相關命令 551
10.3.1 redhat-config-printer-tui:
10.3.1 印表機配置字元界面工具 551
10.3.2 cupsd:通用列印程式守護進程 552
10.3.3 lpadmin:配置LP列印服務 553
10.3.4 lp:列印 554
10.3.5 lpstat:顯示行式印表機狀態
10.3.5 信息 555
10.3.6 lpr:排隊列印作業 556
10.3.7 lprm:列印佇列刪除任務 556
10.3.8 Lpc:控制印表機 557
10.3.9 lpq:檢查假脫機佇列 558
10.3.10 lpinfo:顯示驅動和設備 558
10.4 Linux列印技巧 559
10.4.1 為Linux添加虛擬PDF印表機 559
10.4.2 Linux下套用Windows印表機 561
10.4.3 Linux列印故障排除 563
10.5 總結 563
目錄 Linux開發編程中需要使用的命令
第11章 LINUX庫套用及其相關命令
11.1 Linux庫簡介 564
11.1.1 Linux庫的定義 564
11.1.2 Linux庫的種類 564
11.1.3 Linux庫的命名和編號 566
11.1.4 常用的Linux庫 567
11.1.5 目標檔案和庫 568
11.2 Linux庫命令 569
11.2.1 ldconfig:配置查找共享庫 569
11.2.2 nm:列舉目標檔案中的符號名 571
11.2.3 ar:建立修改檔案或從檔案中
11.2.3 抽取成員 572
11.2.4 strip:去除目標檔案中的無用
11.2.4 信息 574
11.2.5 objdump:展開目標檔案、
11.2.5 靜態庫和共享庫中的信息 575
11.2.6 ldd:顯示共享庫的依賴情況 576
12.2.7 diff:找出兩個檔案的不同點 577
11.2.8 patch:修補檔案 579
11.3 Linux庫編程套用 580
11.3.1 構建共享庫 580
11.3.2 安裝共享庫 581
11.3.3 套用實例 582
11.3.4 新安裝一個庫後如何讓系統
11.3.4 找到 583
11.3.5 可執行程式在執行的時候如何
11.3.5 定位共享庫檔案 583
11.3.6 深入了解共享庫 583
11.3.7 保持庫兼容的建議 583
11.3.8 在共享庫中載入函式 584
11.4 Linux庫升級 585
11.4.1 為什麼要升級庫 585
11.4.2 gcc庫升級過程 586
第12章 LINUX開發常用命令GCC
12.1 gcc基礎 589
12.1.1 gcc簡介 589
12.1.2 gcc支持的基本語言 590
12.1.3 gcc支持平台 592
12.1.4 gcc安裝 592
12.1.5 gcc基本套用 594
12.1.6 運行gcc時調用的程式和命令 596
12.2 gcc套用進階 597
12.2.1 使用gcc處理多個檔案 597
12.2.2 gcc命令詳解 598
12.2.3 gcc函式館和包含檔案 600
12.2.4 gcc警告提示功能 601
12.2.5 gcc的錯誤類型總結 603
12.3 gcc進階套用 604
12.3.1 gcc調試選項 604
12.3.2 使用gcc編譯Fortran程式 605
12.3.3 使用gcc編譯Java檔案 613
12.3.4 使用gdb 618
12.3.5 gcc最佳化 623
12.3.6 gcc環境變數 625
12.4 gnu make命令簡介 627
12.4.1 make基礎入門 628
12.4.2 make命令參數、調試、錯誤
12.4.2 機制 636
12.5 make的高級工具automake、
12.5 autoconf和libtool 642
12.5.1 automake、autoconf和libtool
12.5.1 定義 643
12.5.2 使用automake、libtool和
12.5.2 autoconf製作makefile檔案 644
12.5.3 套用實例 647
12.6 本章參考資料 649
第13章 LINUX編輯器VI和EMACS
13.1 vi編輯器 650
13.1.1 Linux命令行編輯器簡介 650
13.1.2 vi編輯器簡介 654
13.1.3 vi編輯器的模式 654
13.1.4 vi三種模式的切換 655
13.1.5 vi編輯器基本操作 656
13.1.6 在vi編輯器移動游標 657
13.1.7 在檔案中搜尋、修改和刪除
13.1.7 文本 659
13.1.8 vi進階套用 660
13.1.9 vi總結 664
13.2 Emacs編輯器簡介 664
13.2.1 GNU Emacs是什麼 664
13.2.2 Emacs安裝 665
13.2.3 Emacs的啟動和退出 665
13.2.4 Emacs螢幕的結構 666
13.2.5 了解Emacs的鍵綁定 668
13.2.6 退出Emacs 670
13.3 使用Emacs進行編輯 670
13.3.1 移動游標 670
13.3.2 剪下和貼上 671
13.3.3 複製文本 671
13.3.4 搜尋和替換文本 671
13.3.5 Buffer緩衝區操作 672
13.3.6 視窗操作 673
13.3.7 獲取幫助 673
13.3.8 其他功能鍵 673
13.3.9 Emacs中的滑鼠操作 674
13.3.10 保存文檔 674
13.3.11 Emacs的下編譯 675
13.3.12 Emacs中的網際網路操作 677
13.3.13 Emacs鍵綁定常用列表 678
第14章 使用SHELL
14.1 Shell簡介 680
14.1.1 什麼是Shell 680
14.1.2 Shell類型 681
14.1.3 Shell與Linux核心的互動作用 683
14.2 Linux Shell的功能 683
14.2.1 通配符 683
14.2.2 重定向 684
14.2.3 管道 685
14.2.4 別名 686
14.2.5 命令行補全 686
14.2.6 命令替換 687
14.2.7 命令歷史 688
14.3 Linux Shell元字元 692
14.4 Shell變數和Shell環境 693
14.4.1 變數簡介 693
14.4.2 常見的預定義變數詳解 693
14.4.3 設定環境變數 697
14.5 Shell常用關鍵術語及套用技巧 699
14.5.1 Shell常用關鍵術語 699
14.5.2 Shell套用技巧 702
14.5.3 了解Shell的內置命令 704