《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