《Linux操作系統基礎教程(第二版)》以最新版紅帽7.0和Ubuntu 14.04為基礎,采用大量的圖、表,循序漸進地闡述了Linux操作系統的基本框架和原理(概述、安裝、用戶和組、文件系統、基本命令、vi/vim、文件共享與遠程控制、編程基礎、運維等),以及常見服務的部署。精心挑選了8個實訓作為原理闡析的補充內容,每章的知識拓展章節為想進一步學習和研究相關內容的讀者指明了方向。
本書作為Linux的初級教程,適當留白讓教師自我發揮,同時配有精美的教學PPT和網站,適合作為本科生、大專生、職校生、中專生和培訓機構的教材或參考書。
總有人問我這么幾個問題: 我會Windows,為什么還要學Linux?怎么學習Linux操作系統?
問我第一個問題的人大都是個人用戶,或者是非資深的IT后臺管理員,他們使用計算機主要是面向桌面應用,即采用個人計算機(PC)或臺式機或筆記本或上網本,安裝Windows以應付日常辦公、上網和娛樂,但桌面應用的硬件平臺(PC)也行將落幕,2010年我們已經跨入了云計算時代的門檻!
主機升天形成云端,用戶交互設備(鍵鼠/顯示器/音響等)落地構成終端,兩端通過網絡相連,計算和交互分離,這就是云計算的本質。云端是IT后臺應用,這是最適合采用Linux的領地,可用性遠遠超過了Windows。終端主要是各種各樣的嵌入式設備,這同樣也是Linux操作系統的最佳應用場所,目前高達70%的嵌入式設備(如智能手機、平板電腦、mp4、mp3、商務通等)都采用Linux操作系統,家喻戶曉的Andriod系統采用的就是Linux內核。因此,在云計算時代,普通用戶根本不需要了解操作系統,他們只管運行自己感興趣的應用程序即可,聰明的IT從業人員都在轉向Linux、分布式計算、并行計算、虛擬化、JavaScript/HTML5 CSS3、基于Linux的嵌入式開發、安全、用戶體驗等領域。而Linux作為系統平臺軟件,學習掌握它,其重要性是不言而喻的。
那到底怎樣才能學好Linux操作系統呢?作為一個在企事業單位從事UNIX/Linux崗位16年,加上在高校教授Linux 6年,又一直研究分布式系統和算法,以及從事基于Linux的嵌入式產品研發的我,在此給出如下建議。
首先要從宏觀上了解Linux的全貌——它的起源、現狀和發展。這其實就是歸結于哲學的三大終極問題: 我是誰,我從哪里來,我要到哪里去。眾所周知,要描述清楚一個事物,回答清楚這三個問題就夠了。本書的第1章“Linux系統概況”就是根據這個流程進行闡述的。
其次是要掌握Linux各部分的原理。知其然,還要知其所以然。原理是相對穩定的,而基于原理之上的實現是經常變化的,但是萬變不離其宗。原理學通了,就一通百通,而且又不用時時為跟上技術的變化而疲于奔命。我們都知道,計算機發展到今天,仍然遵循圖靈機模型,這個基本的理論沒有變化。聰明的IT人員喜歡從原理入手,相反,笨拙的人喜歡炫耀新潮的技術。本書第2章~第10章采用大量的圖、表,重點闡述分區、用戶和組、文件系統、基本命令、vi/vim、遠程控制、shell編程以及Linux運維等,這些都是Linux系統管理員必須理解和掌握的知識點。
第二版在第一版的基礎上做了如下改進: 增加了一章專門講述服務配置,同時以最新的Linux發行版本(紅帽7.0、Ubuntu 14.04)為基礎設計教學案例,一些重要的開源軟件介紹章節改為附錄,作為參考而不做教學內容,紅帽7.0相比之前的版本改動比較大,所以即使在相同的章節中,第二版改動的地方也很多。
本書作為Linux初級教程,本著“扶上馬送一程”的原則,在每一章的后面都列出了一些相關的比較深入的知識點,給有興趣的學生指明學習方向,剩下的路還得靠讀者自己走。
當然實際操作對于學好Linux也是不可或缺的,大量的操作訓練能加深讀者對原理的理解,同時能夠幫助讀者練就優美的鍵盤指法。為此本書附錄部分精心挑選了8個實訓,當然光這8個實訓還是遠遠不夠的。
此書能夠順利完成和出版,我要特別感謝父母和恩師,開啟了我的智慧之門,還要感謝妻子和女兒,女兒懂事,能快樂地成長和學習,很少讓我操心,女兒給予了我莫大的精神動力和鼓舞,我還要感謝我的領導和同事。
本書有配套的網站和教學PPT,歡迎來信詢問和索取。
作者
2014年9月
第1章Linux系統概況
1.1Linux使用總攬
1.2Linux成長發展
1.2.1Linux的誕生
1.2.2Linux的成長
1.2.3Linux的發展
1.3內核版本與開源協議
1.3.1內核版本
1.3.2開源協議
1.4Linux的應用場合
1.5Linux發行版和開源社區
1.5.1Linux發行版
1.5.2開源社區
1.6知識拓展與作業
1.6.1知識拓展
1.6.2作業
第2章安裝和卸載
2.1安裝和卸載步驟
2.1.1分區和分區命名
2.1.2文件系統類型
2.1.3安裝規劃
2.1.4安裝
2.1.5卸載
2.2初步管理
2.2.1系統和服務管理
2.2.2開機、關機與睡眠
2.2.3登錄、鎖屏與注銷
2.2.4配置網絡
2.2.5配置安裝源
2.2.6添加、刪除和升級軟件包
2.3知識拓展與作業
2.3.1知識拓展
2.3.2作業
第3章用戶、組和身份認證
3.1多用戶系統
3.2用戶和組的概念
3.2.1用戶的概念
3.2.2組的概念
3.3用戶和組管理
3.3.1組管理
3.3.2用戶管理
3.4登錄過程和環境變量
3.4.1用戶登錄過程
3.4.2用戶環境變量
3.5知識拓展和作業
3.5.1知識拓展
3.5.2作業
第4章文件系統
4.1Linux目錄樹
4.2文件分類與權限
4.2.1文件分類
4.2.2文件權限
4.3文件管理
4.3.1文件通配符
4.3.2文件操作
4.4新建文件系統
4.5知識拓展與作業
4.5.1知識拓展
4.5.2作業
第5章基本命令
5.1命令基本語法與類型
5.1.1命令類型與語法
5.1.2在線幫助文檔
5.2bash快捷鍵、重定向和管道
5.2.1歷史命令與bash快捷鍵
5.2.2命令重定向
5.2.3其他元字符
5.3命令舉例
5.3.1關機/重啟/退出
5.3.2bash內部命令
5.3.3系統信息相關命令
5.3.4文件操作命令
5.3.5進程及任務管理相關命令
5.3.6網絡相關命令
5.4知識拓展與作業
5.4.1知識拓展
5.4.2作業
第6章vi/vim
6.1vim介紹
6.2vim基本操作
6.2.1處女作
6.2.2基本操作
6.3知識拓展
第7章遠程控制
7.1遠程控制:OpenSSH
7.1.1介紹
7.1.2SSH服務器安裝和配置
7.1.3SSH客戶端
7.2知識拓展與作業
7.2.1知識拓展
7.2.2作業
第8章編程基礎
8.1bash編程基礎
8.1.1Shell程序:HelloWorld
8.1.2腳本語言介紹
8.1.3結構和基本語法
8.1.4變量
8.1.5控制語句
8.1.6Shell程序調試
8.2C語言編程基礎
8.2.1C語言編程環境
8.2.2進程編程
8.2.3網絡編程
8.2.4程序調試
8.3知識拓展與作業
8.3.1知識拓展
8.3.2作業
第9章Linux圖形桌面系統
9.1組成與原理
9.1.1Linux圖形桌面系統組成
9.1.2XWINDOW原理
9.2起停圖形系統
9.3—些圖形應用程序介紹
9.4圖形界面遠程登錄
9.4.1登錄Linux圖形桌面
9.4.2從Linux桌面登錄其他系統
9.5知識拓展與作業
9.5.1知識拓展
9.5.2作業
第10章Linux運維
10.1進程管理
10.1.1進程的概念
10.1.2進程管理
10.2系統資源管理
10.2.1計算機資源概述
10.2.2資源管理
10.3定時任務
10.3.1周期性定時任務
10.3.2—次性定時任務
10.4備份與恢復
10.4.1系統文件備份
10.4.2業務數據備份
10.5知識拓展與作業
10.5.1知識拓展
10.5.2作業
第11章服務配置
11.1搭建網站系統
11.1.1網站簡介
11.1.2具體操作
11.2搭建郵件系統
11.2.1郵件系統簡介
11.2.2動手操作
11.2.3使用郵件系統
11.3網絡文件系統NFS
11.3.1NFS介紹
11.3.2搭建NFS
11.4虛擬機和容器
11.4.1虛擬機
11.4.2容器
11.5防火墻
12.5.1基礎知識
11.5.2內核中的filter模塊
11.5.3配置規則
11.6FTP服務
11.7DNS服務
11.7.1域名解析
11.7.2資源記錄
11.7.3安裝和配置DNS
11.8DHCP服務
11.9知識拓展
附錄A實訓
附錄A1安裝虛擬機工具
附錄A2安裝Linux實訓
附錄A3找回丟失的root密碼實訓
附錄A4創建用戶和組實訓
附錄A5硬盤分區與格式化實訓
附錄A6常用命令用法實訓
附錄A7vi/vim實訓
附錄A8bash編程實訓
附錄B一些著名開源軟件介紹
附錄B1VirtuaIBOX/KVM/Xen/OpenVZ/Docker
附錄B2MariaDB/PostgresoL
附錄B30penstack/Hadoop
附錄B4Apache/Nginx
附錄B5Netfilter/Iptables
附錄B6Postfix
附錄B7Squid
附錄B8Snort
附錄B9Odoo
附錄B10Kerberos