商品详情
书名:Linux 管理与应用
定价:69.0
ISBN:9787030490360
作者:张美平汤琳纯
版次:1
出版时间:2016-06
内容提要:
本书采用Windows操作系统+VMware虚拟机作为Linux操作系统运行平台,选用主流的Linux发行版Red Hat企业版Linux RHEL 6.3为基础,全面介绍了Linux操作系统的Shell、系统管理、网络配置、内核升级与配置等方面的基础知识与实际应用。
本书分为12章,内容包括Linux概述、Linux系统安装、登录并访问Linux、Linux文件系统访问、Linux Shell基础、用户管理、文件系统权限、Linux软件包安装与管理、Linux Shell脚本编程、Linux内核与模块管理、Linux基本网络服务配置等基本的Linux管理方面的知识,此外在第12章还提供了Linux GCC编程基础作为选学内容。本书内容丰富、结构清晰、通俗易懂。
目录:
前言
第1章 绪论 1
1.1 UNIX/Linux发展历史 1
1.1.1 UNIX发展历史 1
1.1.2 从UNIX到Linux的过渡:Minix系统与GNU计划 3
1.1.3 Linux的诞生与发展 4
1.1.4 POSIX标准与软件移植 4
1.2 Linux简介 5
1.2.1 Linux结构 5
1.2.2 Linux发行版 7
1.2.3 Linux的特点 9
1.3 学习Linux的方法 10
第2章 安装Linux操作系统 12
任务1 准备Linux系统运行环境 12
2.1.1 Linux硬件需求 12
2.1.2 安装Linux的软硬件环境 13
任务2 新建VMware虚拟机 13
2.2.1 VMware Workstation虚拟机软件简介 13
2.2.2 新建虚拟机的软件配置 13
2.2.3 新建虚拟机的硬件相关选项 15
任务3 安装RHEL 6.3 18
2.3.1 系统安装前的引导光盘配置 18
2.3.2 在VMware虚拟机中安装RHEL 6.3 19
第3章 登录并访问Linux 32
任务1 从X-Windows登录访问Linux 32
3.1.1 启动Linux系统 32
3.1.2 登录RHEL 6.3 图形界面 34
3.1.3 通过Shell与Linux交互 35
任务2 使用X-Windows的终端程序访问Linux 35
任务3 从本地虚拟终端登录访问Linux 36
3.3.1 任务实施 36
3.3.2 虚拟控制台简介 37
任务4 通过SSH远程登录Linux系统 38
任务5 使用Linux Shell 40
3.5.1 基本Shell命令 40
3.5.2 Shell命令行 43
3.5.3 Shell在Linux系统中的地位 45
3.5.4 终端、控制台、虚拟终端、伪终端 46
任务6 注销用户登录与关闭Linux 47
3.6.1 注销登录 47
3.6.2 关闭Linux或重启Linux系统 48
第4章 访问Linux文件系统 51
任务1 对比Linux与Windows文件系统结构区别 51
4.1.1 Linux树型目录结构 51
4.1.2 LinuxFHS目录树 52
4.1.3 Linux支持的文件系统 54
4.1.4 Linux文件与文件类型 55
4.1.5 几个Linux目录相关的概念 56
4.1.6 Linux文件系统访问Shell命令 57
任务2 在Linux中使用外部存储设备 60
4.2.1 磁盘分区的mount加载 60
4.2.2 Linux自动加载外部存储设备 62
4.2.3 在RHEL 6.3 Linux系统中存取U盘数据 62
4.2.4 RHEL 6.3 Linux中使用光盘 64
任务3 手动加载与卸载存储设备 65
4.3.1 在X-Windows图形界面中卸载磁盘 65
4.3.2 使用umount卸载磁盘 65
4.3.3 使用mount命令手动安装加载外部磁盘设备 66
第5章 使用Shell命令行 68
任务1 认识Linux Shell 68
5.1.1 Shell的作用与种类 68
5.1.2 Shell功能 71
5.1.3 Shell特殊符号 73
5.1.4 同时运行多条命令 74
5.1.5 Shell变量 75
5.1.6 Shell环境配置 79
任务2 在Linux Shell命令行编辑文件 80
5.2.1 vi简介 81
5.2.2 任务操作:用vi新建并保存一个文件 81
5.2.3 vi工作模式 84
5.2.4 常用vi命令 85
任务3 扩展Shell命令 88
5.3.1 Shell命令替换 88
5.3.2 Shell输入/输出重定向与管道 89
任务4 使用Shell命令帮助 95
第6章 Linux用户账号配置与管理 97
任务1 获取登录用户stu1用户账号信息 97
6.1.1 任务操作:用户stu1登录Linux的相关信息 97
6.1.2 用户与用户组 98
6.1.3 用户与用户组信息文件 100
任务2 建立用户与用户组账号 104
6.2.1 建立用户组 104
6.2.2 建立用户账号并设定登录密码 105
6.2.3 使用gpasswd设定组密码与管理组成员 107
6.2.4 修改用户账号与组账号 107
6.2.5 删除用户、删除组 109
6.2.6 任务实施步骤 109
6.2.7 使用newgrp切换用户主组 111
任务3 使用口令时限机制增强系统安全性 112
6.3.1 设定默认口令时效参数 113
6.3.2 使用chage修改账号的口令时限信息 113
6.3.3 任务实施 114
第7章 Linux文件系统权限配置与管理 116
任务1 普通用户stu2访问其他用户的目录 116
7.1.1 操作演示:普通用户stu2尝试访问文件系统 116
7.1.2 文件系统权限访问控制机制 117
7.1.3 访问Linux文件与目录的权限要求 118
7.1.4 权限的数字表示形式 120
任务2 为用户组students建立用户组共享目录 120
7.2.1 文件权限设置Shell命令 120
7.2.2 任务操作:建立用户组共享目录 123
任务3 增强students组共享目录安全性 125
7.3.1 特殊权限 126
7.3.2 任务操作 128
7.3.3 特殊权限的数字表示形式 130
任务4 通过umask设定新建文件的默认权限 130
第8章 Linux软件包安装与管理 133
任务1 认识Linux发行版 133
任务2 认识Linux软件包的依赖性问题 135
8.2.1 Linux源代码软件编译环境 135
8.2.2 Linux可执行程序与函数库 136
8.2.3 动态链接执行程序所调用的外部库 137
8.2.4 Linux软件包依赖性问题 138
任务3 认识Linux软件发布形式 141
任务4 使用rpm管理软件包 142
8.4.1 rpm简介 142
8.4.2 rpm软件包文件命名格式 143
8.4.3 rpm命令 143
8.4.4 通过rpm包搜索引擎查找rpm软件包 147
任务5 编译tarball源码软件 149
8.5.1 源代码软件开发编译环境 150
8.5.2 tarball源代码软件包的安装步骤 152
8.5.3 编译GNU源代码软件hello 152
8.5.4 编译开源摄像头服务程序mjpg-streamer 154
任务6 编译src.rpm源码软件包 156
8.6.1 编译src.rpm的步骤 157
8.6.2 编译tree-1.5.3-2.el6.src.rpm 157
任务7 使用yum安装软件 159
8.7.1 yum简介 159
8.7.2 yum系统组成 159
8.7.3 配置yum源 160
8.7.4 使用yum安装与卸载软件包 161
8.7.5 使用yum软件组功能安装和卸载软件 162
第9章 Linux Shell脚本编程 165
任务1 编写并运行Shell脚本 165
9.1.1 运行简单Shell脚本 165
9.1.2 几种脚本运行方式比较 166
任务2 学习Bash Shell脚本基本语法 168
9.2.1 在Shell脚本中使用变量 168
9.2.2 Shell中的数学运算命令 172
9.2.3 Shell条件判断 175
9.2.4 控制语句 178
任务3 编写新建用户账号并设置随机密码的Shell脚本 183
任务4 编写批量建立用户的Shell脚本 185
任务5 编写读取用户列表文件批量建立账号的Shell脚本 186
第10章 Linux内核升级与模块管理 189
任务1 查看RHEL Linux内核与模块信息 189
10.1.1 Linux内核与模块 189
10.1.2 LinuxLKM内核优点 190
10.1.3 Linux内核版本号 190
10.1.4 RHEL 6.3内核模块信息 192
10.1.5 RHEL 6.3中驱动USB摄像头 195
任务2 编译支持NTFS文件系统的Linux内核 196
10.2.1 获取内核源代码 197
10.2.2 Linux内核编译步骤 197
10.2.3 配置内核选项 199
10.2.4 任务操作:编译内核增加NTFS分区支持 203
任务3 管理Linux模块 209
10.3.1 常用模块管理Shell命令 209
10.3.2 管理模块依赖性 213
10.3.3 模块配置modprobe.conf 213
任务4 编译安装网卡驱动 214
任务5 调整内核参数关闭ping应答 216
第11章 Linux网络配置与网络服务管理 218
任务1 使用NetworkManager管理网络连接 218
11.1.1 使用NetworkManager启动、断开网络连接 218
11.1.2 NetworkManager配置网络连接 221
11.1.3 Linux网络设备驱动信息 222
11.1.4 RHEL 6.3 网络配置 225
任务2 禁用NetworkManager网络托管工具管理网络 228
11.2.1 配置过程 228
11.2.2 Linux服务管理与运行级别 229
任务3 使用FTP服务传输myweb网站数据文件 232
11.3.1 启动FTP服务器 232
11.3.2 通过客户端登录FTP服务器 233
11.3.3 修改配置允许普通用户通过FTP访问用户主目录 234
11.3.4 通过FTP向服务器传输网站压缩包myweb.tar.gz 234
11.3.5 使用命令行FTP工具访问FTP服务器 235
任务4 通过Web服务器发布myweb网站 236
11.4.1 HTTP服务简介 237
11.4.2 启动HTTP服务 237
11.4.3 发布myweb网站 238
第12章 LinuxGCC编程基础 240
任务1 LinuxC编程环境概述 240
12.1.1 Linux编程环境简介 240
12.1.2 RHEL 6.3 Linux编程环境 241
任务2 使用GCC工具编译源代码 242
12.2.1 GCC介绍 242
12.2.2 GCC基本用法与常用选项 244
12.2.3 GCC静态编译 246
12.2.4 指定GCC链接其他函数库 247
12.2.5 使用GCC编译生成函数库 251
任务3 可执行程序函数库搜索路径 254
12.3.1 动态函数库搜索路径 254
12.3.2 设置-rpath参数直接指定可执行程序的函数库路径 255
12.3.3 配置环境变量LD_LIBRARY_PATH设置函数库路径 256
12.3.4 修改ld.so.conf配置文件 257
任务4 使用pkg-config生成外部函数库的编译参数 257
任务5 工程配置文件Makefile 259
12.5.1 make项目管理器简介 259
12.5.2 Makefile基本结构 260
12.5.3 make工作原理 262
12.5.4 简化Makefile 262
参考文献 264
在线试读:
第1章 绪论
Linux是一个优秀的开源操作系统,是一个支持多用户多任务的网络操作系统,是一种类UNIX系统,支持多种体系结构的处理器平台,能在基于X86处理器的PC上运行。了解Linux操作系统发展历史、Linux操作系统结构、Linux特点以及Linux发行版等知识,将有助于更好地学习Linux操作系统相关知识,掌握Linux操作系统的实践与使用。
为了更好地了解Linux操作系统,进一步学习Linux操作系统,本章将介绍以下几部分内容:
(1) UNIX/Linux的发展诞生历史;
(2) Linux简介、结构、特点以及Linux发行版。
1.1 UNIX/Linux发展历史
Linux是众多类UNIX(UNIX-like)系统中比较出名的操作系统。类UNIX系统指各种传统的UNIX系统(如FreeBSD、OpenBSD、Sun公司的Solaris)以及各种与传统UNIX类似的系统(如Minix、Linux、QNX等)。它们虽然有的是自由软件,有的是商业软件,但都相当程度地继承了原始UNIX的特性,有许多相似处,并且都在一定程度上遵守POSIX规范。要了解Linux的历史就不能不提到UNIX系统,下面简要介绍UNIX系统的发展历史。
1.1.1 UNIX发展历史
1.兼容分时系统(Compatible Time-Sharing System,CTSS)
早期的计算机硬件是非常昂贵的,一般只有在军事或学术机构才能接触到,而且数量稀少。为了使一台计算机能供更多人使用,麻省理工学院(MIT)于20世纪60年代初期研发了“兼容分时系统”。
CTSS使得一台大型主机可以连接多个带有显示器和键盘的终端,同时允许多个用户通过主机的终端以交互方式使用计算机,共享主机中的资源。通过终端向主机提交作业任务,任务在主机上运行,终端本身不具备运算能力,通过显示器和键盘提供输入/输出的功能。CTSS的工作结构如图1-1所示。
图1-1 CTSS的主机结构
分时(Time Sharing)操作系统中使用了当时非常前卫的设计理念,它可以让使用者在某一段时间内轮流循环使用计算机的资源,由于CPU在多个用户之间进行快速切换,每个用户能在不易察觉的延时下操作计算机。宏观上使得大型计算机可以同时被多个人使用。
这个经典的“分时”思想在现代多任务操作系统设计中继续被使用,操作系统能控制多个进程分时使用系统资源,以达到多任务宏观上同时运行的效果。
2.UNIX诞生
虽然当时的兼容分时系统已经创造性地使一台大型计算机能被多个用户同时使用,但其仍不够成熟,一个比较先进的主机大概也只能提供30个终端同时使用而已。为了进一步加强大型主机的功能,以便让主机的资源可以提供给更多使用者使用,贝尔实验室(Bell)、麻省理工学院及通用电器公司(GE)共同发起了一个名为Multics的项目计划,该计划希望能使大型主机同时为300台以上的终端提供服务。
但在1969年前后,由于各种原因,贝尔实验室退出了该项目的研发工作。不过参与该计划的研究人员也从中获得了诸多灵感,其中Ken Thompson就是其中一员。Thompson因为自己的工作需要,需要一个小型的操作系统来供自己使用。于是他花了四周时间在一台DEC(Digital Equipment Corporation)公司推出的PDP-7主机上使用汇编语言设计了一组核心程序以及一些核心工具程序和一个小小的文件系统,这就是UNIX系统的原型。当时Thompson将庞大而复杂的Multics系统简化了不少,于是同实验室的朋友都戏称这个系统为Unics(当时还未称为UNIX)。由于这个Unics操作系统十分好用,在贝尔实验室内广为流传。1971年,Ken Thompson申请到了一台PDP-11主机,如图1-2所示,继续完善该程序,于是UNIX**版在这台PDP-11主机上完成。后来Thompson和DennisRitchie合作,采用高级语言C语言重构了Unics核心,并正式发布了UNIX第三版。
图1-2 DEC公司推出的PDP-11主机
3.UNIX的发展
由于贝尔实验室隶属于美国电话电报公司AT&T,而当时AT&T正忙于其他商业活动,对UNIX采取较开放的态度。且由于UNIX的正式版本使用C语言开发,使得UNIX系统可以移植到不同的计算机主机上,这使得UNIX在商业产品和学术研究都被广泛使用。
1977年,加州大学伯克利分校(Berkeley)的Bill Joy在取得了UNIX的源码后,着手修改成适合自己机器的版本,并同时增加了很多工具软件与编译器。*后Bill Joy将它命名为Berkeley Software Distribution(BSD)。这个BSD是UNIX系统一个很重要的一个分支,Bill Joy即是Sun Microsystems(Sun公司)的创始人之一,该公司即是以BSD的核心进行自己商业版UNIX(Solaris)的开发,后来可以安装在X86架构上的FreeBSD(图1-3)也是从BSD改版而来的。
图1-3 FreeBSD项目logo
由于UNIX的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以众多商业公司开始了UNIX操作系统的发展,如AT&T的System V、IBM的AIX等,这些公司都为自己公司的主机搭配了自己的UNIX操作系统。
后来,由于AT&T出于商业目的等方面的考虑,计划将UNIX的版权收回。因此,AT&T在1979年发行的第七版UNIX中,特别增加了“不可对学生提供源代码”的限制。同时,也造成UNIX业界的紧张气氛,并引发了众多商业纠纷。
现在,被称为纯种的UNIX系统就是指System V以及BSD这两套操作系统。
1.1.2 从UNIX到Linux的过渡:Minix系统与GNU计划
1.基于X86架构的Minix操作系统
由于AT&T在1979年的第七版UNIX的版权声明中限制对学生提供源代码,因此学校就不能再使用UNIX源代码进行教学了。为了能提供一个供学生学习的操作系统内核,AndrewTanenbaum教授决定自己动手在X86平台上编写一个类UNIX的系统核心,这就是Minix。
在编写Minix的过程中,为了避免版权纠纷,Andrew Tanenbaum教授完全不看UNIX源代码并要求所开发的Minix能够和UNIX兼容。Andrew Tanenbaum教授于1984年开始撰写程序,直到1986年完成并在次年出版了Minix相关书籍。
Minix即是Mini UNIX的意思,由于Minix不仅提供系统程序还提供源代码,所以使用者能够通过Minix来学习操作系统的设计理念,这为之后的Linux开发提供了帮助。
2.GNU计划与FSF基金会
1984年,Richard Mathew Stallman(理查德·斯托曼)开始发起GNU计划,这个计划的目的是:创建一套完全自由的操作系统。
Stallman首先参照UNIX上已有的程序来开发功能相同的程序,但只参考功能而不看其他已有软件的源代码以避免版权问题。由于GNU软件的功能和原版的带有专利保护的软件功能类似而且是免费软件,所以越来越多的人开始使用GNU软件,GNU计划的知名度也随之提升了。
1985年,理查德·斯托曼创立了自由软件基金会(Free Software Foundation,FSF)来为GNU计划(图1-4)提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。
图1-4 GNU计划logo
图1-5 GCC编译器logo
在1990年前后,GNU项目已经开发出了一些重要的工具软件,其中*有名的就是现在依然广泛使用的C语言编译器GNU C Compiler(GCC)、以及C语言函数库GNU C libraryGCC编辑器Logo如图1-5所示。当时C语言编译器版本众多,但都存在版权限制。GCC使用自由软件基金会的GPL协议进行发布。由于其高性能且免费使用等特点,使用非常广泛,成为大多数类UNIX操作系统(如Linux、BSD、Mac OS X等)标准的编译器。现在GCC已经能支持C++处理并支持X86、ARM等平台。GUN项目还推出了一款程序编辑器Emacs并公布源码,它可以在用户编写代码的过程中进行语法检测,大大提高了程序员的工作效率。GNU还开发了一款可以被用来操作并访问操作系统的基本接口Bash Shell,直到现在Linux系统中使用*广泛、功能*强大的Shell就是Bash。
1.1.3 Linux的诞生与发展
1.Linux的诞生
1969年出生于芬兰的Linus Torvalds(托瓦兹)于1988年进入赫尔辛基大学计算机科学系,当时,他接触到了UNIX系统,由于当时整个赫尔辛基大学只有一部*新的UNIX主机,且仅提供16个终端(Terminal)使用,使用机会相当有限,Torvalds萌生了想自己拥有一台UNIX主机的念头。
后来Torvalds接触到一个类似UNIX,而且可以在Intel 386上运行的系统Minix。Torvalds贷款购买了一台Intel 386计算机,Torvalds拿到Intel 386计算机之后,开始使用Minix系统。他发现Minix确实很好用,但由于Andrew Tanenbaum教授不再对Minix系统进行功能的加强,导致该系统不能再满足用户更多的需求,于是Torvalds萌发了自己编写操作系统的想法。
当时由于GNU计划的推进,已经有了Bash Shell工作环境和GCC编译器,Torvalds得以顺利地开始在Intel 386计算机上开发操作系统。1991年,Torvalds完成了Linux系统的雏形,在BBS上发布了这个消息并提供了FTP下载目录。由于那个FTP的网络目录为Linux,此后就称这个程序为Linux了。
为了使Linux上可以与UNIX系统兼容,以使得UNIX软件能在Linux系统上运行。Torvalds开始参考POSIX规范来修改Linux系统,POSIX是由IEEE发布的便携式操作系统接口(Portable Operating System Interface)的缩写,其规范了系统与应用程序之间的编程接口。理论上基于这个标准所编写的操作系统与应用程序之间是可以相互兼容的。这样一来,Linux就能够兼容UNIX系统上的应用程序了。Linux系统logo如图1-6所示。
图1-6 Linux系统logo
由于Linux稳定高效且免费等特点,其赢得了大量用户,越来越多的黑客与志愿者也加入了Torvalds维护、升级Linux系统的核心代码的行列。
2.Linux的发展
Linux系统的维护与升级经历了3个阶段。*初由Torvalds个人进行维护,他将系统发布在FTP服务器上,用户将使用中的问题反馈给Torvalds,Torvalds在能够解决的问题范围内进行查错与更新。之后,越来越多的黑客加入到Linux的开发与维护队伍中,由于Linux开放源代码,所以黑客很容易就能根据Linux的原本架构设计出兼容的驱动程序或软件。再后来程序分工进一步细化,成员之间对工作进行分层,进一步提高了工作效率。
1.1.4 POSIX标准与软件移植
Linux的发展离不开POSIX标准,POSIX标准制定了一套可移植操作系统接口的标准。该标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其他POSIX操作系统(即使是来自另一个厂商)上编译执行。
如图1-7所示,该标准的制定使得所有支持该标准的操作系统上运行的应用程序理论上是可以相互移植的。Linux系统也支持POSIX标准,例如,GNU*早是在UNIX环境中编写的GCC编译器和Clib库,之后成功移植到了Linux环境下。
图1-7 POSIX标准下软件的可移植性
1.2 Linux简介
1.2.1 Linux结构
一个完整的运行Linux操作系统的计算机结构大致可以分为四部分,如图1-8所示。
1.硬件
位于底层的是具体的计算机硬件架构,这部分是能看得见摸得着的硬件实体,如中央处理器(CPU)、内存、硬盘、主板、光驱等,如图1-9所示。
图1-8 Linux操作系统结构
图1-9 传统的PC硬件组成
2.操作系统内核
位于中间的灰色部分就是所谓的操作系统。这里主要分为两部分:系统调用接口和操作系统内核。其中操作系统核心主要负责对计算机系统相关资源的分配和管理,主要概括为以下几点。
1) 处理器管理
对于支持多任务操作的操作系统而言,计算机必须能够支持多个应用程序按时间轮流进入CPU运行,并通过有效的处理器调度算法对进程进行调度,这样才能提供高效的程序并行运行环境。
2) 内存管理
对于32位多任务操作系统而言,它的每个程序执行时可寻址的内存范围为4G,而实际运行时,操作系统为其完成了一个虚拟地址到实际内存地址的硬件转换,这样为应用程序提供了虚拟内存空间,而且计算机需要控制各个进程间对内存的访问地址的隔离等工作。
3) 文件系统
文件系统为二进制文件提供了存储环境。它将存储器上的一维地址空间转换成为易于理解的文件对象,例如,在Linux操作系统中使用根文件系统等,它使得应用程序可以访问一个抽象的特定的文件。而实际上这个文件在磁盘上并不一定连续存储在一段地址空间上的。
4) 外设管理
计算机操作系统一个重要的功能就是控制多个进程对临界资源的利用。例如,有多个进程都想使用打印机打印文件的时候,操作系统就需要对临界资源上锁,并规范各个进程轮流使用打印机。此外,操作系统需要为应用程序提供对硬件统一的访问接口,屏蔽掉底层的硬件差异,这就是所谓的硬件驱动,驱动属于内核的一部分,但也可以在运行时被动态地加载。
5) 系统调用接口
系统调用接口为应用程序的开发提供了编程接口,例如,对一个文本文件的典型操作可以抽象为读操作、写操作。应用程序只要使用系统提供的read和write函数就能直接对文件进行读写,而不用关心读写文件的磁盘的类型或大小。
3.应用程序
位于顶部的就是普通用户*直接使用的Linux应用软件,如X Windows、vi编辑器、Shell等应用程序就在这一层工作。这里大致可以将应用程序分为两类:操作系统用户接口程序和普通应用程序。
Shell是用户与操作系统交互的用户界面软件,类UNIX系统都支持Shell接口。如图1-10所示为RHEL 6.3 Linux提供的Bash Shell界面,在Shell中用户可以输入应用程序命令来运行特定应用程序。
另外,比较广泛使用的是X-Windows GUI操作界面。在安装Linux系统的过程中选择安装桌面系统后默认提供的可视化操作界面,可以通过单击等操作来运行特定应用程序,如图1-11所示为RHEL 6.3系统提供的Gnome GUI界面。
应用程序:应用程序就是用户在计算机上运行的各种工具软件,如编辑代码时使用的Eclipse集成开发工具等,还有一些是运行于Shell命令行或在后台作为服务程序运行的没有GUI界面的应用程序,如提供网络FTP下载服务的vsftpd软件。
定价:69.0
ISBN:9787030490360
作者:张美平汤琳纯
版次:1
出版时间:2016-06
内容提要:
本书采用Windows操作系统+VMware虚拟机作为Linux操作系统运行平台,选用主流的Linux发行版Red Hat企业版Linux RHEL 6.3为基础,全面介绍了Linux操作系统的Shell、系统管理、网络配置、内核升级与配置等方面的基础知识与实际应用。
本书分为12章,内容包括Linux概述、Linux系统安装、登录并访问Linux、Linux文件系统访问、Linux Shell基础、用户管理、文件系统权限、Linux软件包安装与管理、Linux Shell脚本编程、Linux内核与模块管理、Linux基本网络服务配置等基本的Linux管理方面的知识,此外在第12章还提供了Linux GCC编程基础作为选学内容。本书内容丰富、结构清晰、通俗易懂。
目录:
前言
第1章 绪论 1
1.1 UNIX/Linux发展历史 1
1.1.1 UNIX发展历史 1
1.1.2 从UNIX到Linux的过渡:Minix系统与GNU计划 3
1.1.3 Linux的诞生与发展 4
1.1.4 POSIX标准与软件移植 4
1.2 Linux简介 5
1.2.1 Linux结构 5
1.2.2 Linux发行版 7
1.2.3 Linux的特点 9
1.3 学习Linux的方法 10
第2章 安装Linux操作系统 12
任务1 准备Linux系统运行环境 12
2.1.1 Linux硬件需求 12
2.1.2 安装Linux的软硬件环境 13
任务2 新建VMware虚拟机 13
2.2.1 VMware Workstation虚拟机软件简介 13
2.2.2 新建虚拟机的软件配置 13
2.2.3 新建虚拟机的硬件相关选项 15
任务3 安装RHEL 6.3 18
2.3.1 系统安装前的引导光盘配置 18
2.3.2 在VMware虚拟机中安装RHEL 6.3 19
第3章 登录并访问Linux 32
任务1 从X-Windows登录访问Linux 32
3.1.1 启动Linux系统 32
3.1.2 登录RHEL 6.3 图形界面 34
3.1.3 通过Shell与Linux交互 35
任务2 使用X-Windows的终端程序访问Linux 35
任务3 从本地虚拟终端登录访问Linux 36
3.3.1 任务实施 36
3.3.2 虚拟控制台简介 37
任务4 通过SSH远程登录Linux系统 38
任务5 使用Linux Shell 40
3.5.1 基本Shell命令 40
3.5.2 Shell命令行 43
3.5.3 Shell在Linux系统中的地位 45
3.5.4 终端、控制台、虚拟终端、伪终端 46
任务6 注销用户登录与关闭Linux 47
3.6.1 注销登录 47
3.6.2 关闭Linux或重启Linux系统 48
第4章 访问Linux文件系统 51
任务1 对比Linux与Windows文件系统结构区别 51
4.1.1 Linux树型目录结构 51
4.1.2 LinuxFHS目录树 52
4.1.3 Linux支持的文件系统 54
4.1.4 Linux文件与文件类型 55
4.1.5 几个Linux目录相关的概念 56
4.1.6 Linux文件系统访问Shell命令 57
任务2 在Linux中使用外部存储设备 60
4.2.1 磁盘分区的mount加载 60
4.2.2 Linux自动加载外部存储设备 62
4.2.3 在RHEL 6.3 Linux系统中存取U盘数据 62
4.2.4 RHEL 6.3 Linux中使用光盘 64
任务3 手动加载与卸载存储设备 65
4.3.1 在X-Windows图形界面中卸载磁盘 65
4.3.2 使用umount卸载磁盘 65
4.3.3 使用mount命令手动安装加载外部磁盘设备 66
第5章 使用Shell命令行 68
任务1 认识Linux Shell 68
5.1.1 Shell的作用与种类 68
5.1.2 Shell功能 71
5.1.3 Shell特殊符号 73
5.1.4 同时运行多条命令 74
5.1.5 Shell变量 75
5.1.6 Shell环境配置 79
任务2 在Linux Shell命令行编辑文件 80
5.2.1 vi简介 81
5.2.2 任务操作:用vi新建并保存一个文件 81
5.2.3 vi工作模式 84
5.2.4 常用vi命令 85
任务3 扩展Shell命令 88
5.3.1 Shell命令替换 88
5.3.2 Shell输入/输出重定向与管道 89
任务4 使用Shell命令帮助 95
第6章 Linux用户账号配置与管理 97
任务1 获取登录用户stu1用户账号信息 97
6.1.1 任务操作:用户stu1登录Linux的相关信息 97
6.1.2 用户与用户组 98
6.1.3 用户与用户组信息文件 100
任务2 建立用户与用户组账号 104
6.2.1 建立用户组 104
6.2.2 建立用户账号并设定登录密码 105
6.2.3 使用gpasswd设定组密码与管理组成员 107
6.2.4 修改用户账号与组账号 107
6.2.5 删除用户、删除组 109
6.2.6 任务实施步骤 109
6.2.7 使用newgrp切换用户主组 111
任务3 使用口令时限机制增强系统安全性 112
6.3.1 设定默认口令时效参数 113
6.3.2 使用chage修改账号的口令时限信息 113
6.3.3 任务实施 114
第7章 Linux文件系统权限配置与管理 116
任务1 普通用户stu2访问其他用户的目录 116
7.1.1 操作演示:普通用户stu2尝试访问文件系统 116
7.1.2 文件系统权限访问控制机制 117
7.1.3 访问Linux文件与目录的权限要求 118
7.1.4 权限的数字表示形式 120
任务2 为用户组students建立用户组共享目录 120
7.2.1 文件权限设置Shell命令 120
7.2.2 任务操作:建立用户组共享目录 123
任务3 增强students组共享目录安全性 125
7.3.1 特殊权限 126
7.3.2 任务操作 128
7.3.3 特殊权限的数字表示形式 130
任务4 通过umask设定新建文件的默认权限 130
第8章 Linux软件包安装与管理 133
任务1 认识Linux发行版 133
任务2 认识Linux软件包的依赖性问题 135
8.2.1 Linux源代码软件编译环境 135
8.2.2 Linux可执行程序与函数库 136
8.2.3 动态链接执行程序所调用的外部库 137
8.2.4 Linux软件包依赖性问题 138
任务3 认识Linux软件发布形式 141
任务4 使用rpm管理软件包 142
8.4.1 rpm简介 142
8.4.2 rpm软件包文件命名格式 143
8.4.3 rpm命令 143
8.4.4 通过rpm包搜索引擎查找rpm软件包 147
任务5 编译tarball源码软件 149
8.5.1 源代码软件开发编译环境 150
8.5.2 tarball源代码软件包的安装步骤 152
8.5.3 编译GNU源代码软件hello 152
8.5.4 编译开源摄像头服务程序mjpg-streamer 154
任务6 编译src.rpm源码软件包 156
8.6.1 编译src.rpm的步骤 157
8.6.2 编译tree-1.5.3-2.el6.src.rpm 157
任务7 使用yum安装软件 159
8.7.1 yum简介 159
8.7.2 yum系统组成 159
8.7.3 配置yum源 160
8.7.4 使用yum安装与卸载软件包 161
8.7.5 使用yum软件组功能安装和卸载软件 162
第9章 Linux Shell脚本编程 165
任务1 编写并运行Shell脚本 165
9.1.1 运行简单Shell脚本 165
9.1.2 几种脚本运行方式比较 166
任务2 学习Bash Shell脚本基本语法 168
9.2.1 在Shell脚本中使用变量 168
9.2.2 Shell中的数学运算命令 172
9.2.3 Shell条件判断 175
9.2.4 控制语句 178
任务3 编写新建用户账号并设置随机密码的Shell脚本 183
任务4 编写批量建立用户的Shell脚本 185
任务5 编写读取用户列表文件批量建立账号的Shell脚本 186
第10章 Linux内核升级与模块管理 189
任务1 查看RHEL Linux内核与模块信息 189
10.1.1 Linux内核与模块 189
10.1.2 LinuxLKM内核优点 190
10.1.3 Linux内核版本号 190
10.1.4 RHEL 6.3内核模块信息 192
10.1.5 RHEL 6.3中驱动USB摄像头 195
任务2 编译支持NTFS文件系统的Linux内核 196
10.2.1 获取内核源代码 197
10.2.2 Linux内核编译步骤 197
10.2.3 配置内核选项 199
10.2.4 任务操作:编译内核增加NTFS分区支持 203
任务3 管理Linux模块 209
10.3.1 常用模块管理Shell命令 209
10.3.2 管理模块依赖性 213
10.3.3 模块配置modprobe.conf 213
任务4 编译安装网卡驱动 214
任务5 调整内核参数关闭ping应答 216
第11章 Linux网络配置与网络服务管理 218
任务1 使用NetworkManager管理网络连接 218
11.1.1 使用NetworkManager启动、断开网络连接 218
11.1.2 NetworkManager配置网络连接 221
11.1.3 Linux网络设备驱动信息 222
11.1.4 RHEL 6.3 网络配置 225
任务2 禁用NetworkManager网络托管工具管理网络 228
11.2.1 配置过程 228
11.2.2 Linux服务管理与运行级别 229
任务3 使用FTP服务传输myweb网站数据文件 232
11.3.1 启动FTP服务器 232
11.3.2 通过客户端登录FTP服务器 233
11.3.3 修改配置允许普通用户通过FTP访问用户主目录 234
11.3.4 通过FTP向服务器传输网站压缩包myweb.tar.gz 234
11.3.5 使用命令行FTP工具访问FTP服务器 235
任务4 通过Web服务器发布myweb网站 236
11.4.1 HTTP服务简介 237
11.4.2 启动HTTP服务 237
11.4.3 发布myweb网站 238
第12章 LinuxGCC编程基础 240
任务1 LinuxC编程环境概述 240
12.1.1 Linux编程环境简介 240
12.1.2 RHEL 6.3 Linux编程环境 241
任务2 使用GCC工具编译源代码 242
12.2.1 GCC介绍 242
12.2.2 GCC基本用法与常用选项 244
12.2.3 GCC静态编译 246
12.2.4 指定GCC链接其他函数库 247
12.2.5 使用GCC编译生成函数库 251
任务3 可执行程序函数库搜索路径 254
12.3.1 动态函数库搜索路径 254
12.3.2 设置-rpath参数直接指定可执行程序的函数库路径 255
12.3.3 配置环境变量LD_LIBRARY_PATH设置函数库路径 256
12.3.4 修改ld.so.conf配置文件 257
任务4 使用pkg-config生成外部函数库的编译参数 257
任务5 工程配置文件Makefile 259
12.5.1 make项目管理器简介 259
12.5.2 Makefile基本结构 260
12.5.3 make工作原理 262
12.5.4 简化Makefile 262
参考文献 264
在线试读:
第1章 绪论
Linux是一个优秀的开源操作系统,是一个支持多用户多任务的网络操作系统,是一种类UNIX系统,支持多种体系结构的处理器平台,能在基于X86处理器的PC上运行。了解Linux操作系统发展历史、Linux操作系统结构、Linux特点以及Linux发行版等知识,将有助于更好地学习Linux操作系统相关知识,掌握Linux操作系统的实践与使用。
为了更好地了解Linux操作系统,进一步学习Linux操作系统,本章将介绍以下几部分内容:
(1) UNIX/Linux的发展诞生历史;
(2) Linux简介、结构、特点以及Linux发行版。
1.1 UNIX/Linux发展历史
Linux是众多类UNIX(UNIX-like)系统中比较出名的操作系统。类UNIX系统指各种传统的UNIX系统(如FreeBSD、OpenBSD、Sun公司的Solaris)以及各种与传统UNIX类似的系统(如Minix、Linux、QNX等)。它们虽然有的是自由软件,有的是商业软件,但都相当程度地继承了原始UNIX的特性,有许多相似处,并且都在一定程度上遵守POSIX规范。要了解Linux的历史就不能不提到UNIX系统,下面简要介绍UNIX系统的发展历史。
1.1.1 UNIX发展历史
1.兼容分时系统(Compatible Time-Sharing System,CTSS)
早期的计算机硬件是非常昂贵的,一般只有在军事或学术机构才能接触到,而且数量稀少。为了使一台计算机能供更多人使用,麻省理工学院(MIT)于20世纪60年代初期研发了“兼容分时系统”。
CTSS使得一台大型主机可以连接多个带有显示器和键盘的终端,同时允许多个用户通过主机的终端以交互方式使用计算机,共享主机中的资源。通过终端向主机提交作业任务,任务在主机上运行,终端本身不具备运算能力,通过显示器和键盘提供输入/输出的功能。CTSS的工作结构如图1-1所示。
图1-1 CTSS的主机结构
分时(Time Sharing)操作系统中使用了当时非常前卫的设计理念,它可以让使用者在某一段时间内轮流循环使用计算机的资源,由于CPU在多个用户之间进行快速切换,每个用户能在不易察觉的延时下操作计算机。宏观上使得大型计算机可以同时被多个人使用。
这个经典的“分时”思想在现代多任务操作系统设计中继续被使用,操作系统能控制多个进程分时使用系统资源,以达到多任务宏观上同时运行的效果。
2.UNIX诞生
虽然当时的兼容分时系统已经创造性地使一台大型计算机能被多个用户同时使用,但其仍不够成熟,一个比较先进的主机大概也只能提供30个终端同时使用而已。为了进一步加强大型主机的功能,以便让主机的资源可以提供给更多使用者使用,贝尔实验室(Bell)、麻省理工学院及通用电器公司(GE)共同发起了一个名为Multics的项目计划,该计划希望能使大型主机同时为300台以上的终端提供服务。
但在1969年前后,由于各种原因,贝尔实验室退出了该项目的研发工作。不过参与该计划的研究人员也从中获得了诸多灵感,其中Ken Thompson就是其中一员。Thompson因为自己的工作需要,需要一个小型的操作系统来供自己使用。于是他花了四周时间在一台DEC(Digital Equipment Corporation)公司推出的PDP-7主机上使用汇编语言设计了一组核心程序以及一些核心工具程序和一个小小的文件系统,这就是UNIX系统的原型。当时Thompson将庞大而复杂的Multics系统简化了不少,于是同实验室的朋友都戏称这个系统为Unics(当时还未称为UNIX)。由于这个Unics操作系统十分好用,在贝尔实验室内广为流传。1971年,Ken Thompson申请到了一台PDP-11主机,如图1-2所示,继续完善该程序,于是UNIX**版在这台PDP-11主机上完成。后来Thompson和DennisRitchie合作,采用高级语言C语言重构了Unics核心,并正式发布了UNIX第三版。
图1-2 DEC公司推出的PDP-11主机
3.UNIX的发展
由于贝尔实验室隶属于美国电话电报公司AT&T,而当时AT&T正忙于其他商业活动,对UNIX采取较开放的态度。且由于UNIX的正式版本使用C语言开发,使得UNIX系统可以移植到不同的计算机主机上,这使得UNIX在商业产品和学术研究都被广泛使用。
1977年,加州大学伯克利分校(Berkeley)的Bill Joy在取得了UNIX的源码后,着手修改成适合自己机器的版本,并同时增加了很多工具软件与编译器。*后Bill Joy将它命名为Berkeley Software Distribution(BSD)。这个BSD是UNIX系统一个很重要的一个分支,Bill Joy即是Sun Microsystems(Sun公司)的创始人之一,该公司即是以BSD的核心进行自己商业版UNIX(Solaris)的开发,后来可以安装在X86架构上的FreeBSD(图1-3)也是从BSD改版而来的。
图1-3 FreeBSD项目logo
由于UNIX的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以众多商业公司开始了UNIX操作系统的发展,如AT&T的System V、IBM的AIX等,这些公司都为自己公司的主机搭配了自己的UNIX操作系统。
后来,由于AT&T出于商业目的等方面的考虑,计划将UNIX的版权收回。因此,AT&T在1979年发行的第七版UNIX中,特别增加了“不可对学生提供源代码”的限制。同时,也造成UNIX业界的紧张气氛,并引发了众多商业纠纷。
现在,被称为纯种的UNIX系统就是指System V以及BSD这两套操作系统。
1.1.2 从UNIX到Linux的过渡:Minix系统与GNU计划
1.基于X86架构的Minix操作系统
由于AT&T在1979年的第七版UNIX的版权声明中限制对学生提供源代码,因此学校就不能再使用UNIX源代码进行教学了。为了能提供一个供学生学习的操作系统内核,AndrewTanenbaum教授决定自己动手在X86平台上编写一个类UNIX的系统核心,这就是Minix。
在编写Minix的过程中,为了避免版权纠纷,Andrew Tanenbaum教授完全不看UNIX源代码并要求所开发的Minix能够和UNIX兼容。Andrew Tanenbaum教授于1984年开始撰写程序,直到1986年完成并在次年出版了Minix相关书籍。
Minix即是Mini UNIX的意思,由于Minix不仅提供系统程序还提供源代码,所以使用者能够通过Minix来学习操作系统的设计理念,这为之后的Linux开发提供了帮助。
2.GNU计划与FSF基金会
1984年,Richard Mathew Stallman(理查德·斯托曼)开始发起GNU计划,这个计划的目的是:创建一套完全自由的操作系统。
Stallman首先参照UNIX上已有的程序来开发功能相同的程序,但只参考功能而不看其他已有软件的源代码以避免版权问题。由于GNU软件的功能和原版的带有专利保护的软件功能类似而且是免费软件,所以越来越多的人开始使用GNU软件,GNU计划的知名度也随之提升了。
1985年,理查德·斯托曼创立了自由软件基金会(Free Software Foundation,FSF)来为GNU计划(图1-4)提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。
图1-4 GNU计划logo
图1-5 GCC编译器logo
在1990年前后,GNU项目已经开发出了一些重要的工具软件,其中*有名的就是现在依然广泛使用的C语言编译器GNU C Compiler(GCC)、以及C语言函数库GNU C libraryGCC编辑器Logo如图1-5所示。当时C语言编译器版本众多,但都存在版权限制。GCC使用自由软件基金会的GPL协议进行发布。由于其高性能且免费使用等特点,使用非常广泛,成为大多数类UNIX操作系统(如Linux、BSD、Mac OS X等)标准的编译器。现在GCC已经能支持C++处理并支持X86、ARM等平台。GUN项目还推出了一款程序编辑器Emacs并公布源码,它可以在用户编写代码的过程中进行语法检测,大大提高了程序员的工作效率。GNU还开发了一款可以被用来操作并访问操作系统的基本接口Bash Shell,直到现在Linux系统中使用*广泛、功能*强大的Shell就是Bash。
1.1.3 Linux的诞生与发展
1.Linux的诞生
1969年出生于芬兰的Linus Torvalds(托瓦兹)于1988年进入赫尔辛基大学计算机科学系,当时,他接触到了UNIX系统,由于当时整个赫尔辛基大学只有一部*新的UNIX主机,且仅提供16个终端(Terminal)使用,使用机会相当有限,Torvalds萌生了想自己拥有一台UNIX主机的念头。
后来Torvalds接触到一个类似UNIX,而且可以在Intel 386上运行的系统Minix。Torvalds贷款购买了一台Intel 386计算机,Torvalds拿到Intel 386计算机之后,开始使用Minix系统。他发现Minix确实很好用,但由于Andrew Tanenbaum教授不再对Minix系统进行功能的加强,导致该系统不能再满足用户更多的需求,于是Torvalds萌发了自己编写操作系统的想法。
当时由于GNU计划的推进,已经有了Bash Shell工作环境和GCC编译器,Torvalds得以顺利地开始在Intel 386计算机上开发操作系统。1991年,Torvalds完成了Linux系统的雏形,在BBS上发布了这个消息并提供了FTP下载目录。由于那个FTP的网络目录为Linux,此后就称这个程序为Linux了。
为了使Linux上可以与UNIX系统兼容,以使得UNIX软件能在Linux系统上运行。Torvalds开始参考POSIX规范来修改Linux系统,POSIX是由IEEE发布的便携式操作系统接口(Portable Operating System Interface)的缩写,其规范了系统与应用程序之间的编程接口。理论上基于这个标准所编写的操作系统与应用程序之间是可以相互兼容的。这样一来,Linux就能够兼容UNIX系统上的应用程序了。Linux系统logo如图1-6所示。
图1-6 Linux系统logo
由于Linux稳定高效且免费等特点,其赢得了大量用户,越来越多的黑客与志愿者也加入了Torvalds维护、升级Linux系统的核心代码的行列。
2.Linux的发展
Linux系统的维护与升级经历了3个阶段。*初由Torvalds个人进行维护,他将系统发布在FTP服务器上,用户将使用中的问题反馈给Torvalds,Torvalds在能够解决的问题范围内进行查错与更新。之后,越来越多的黑客加入到Linux的开发与维护队伍中,由于Linux开放源代码,所以黑客很容易就能根据Linux的原本架构设计出兼容的驱动程序或软件。再后来程序分工进一步细化,成员之间对工作进行分层,进一步提高了工作效率。
1.1.4 POSIX标准与软件移植
Linux的发展离不开POSIX标准,POSIX标准制定了一套可移植操作系统接口的标准。该标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其他POSIX操作系统(即使是来自另一个厂商)上编译执行。
如图1-7所示,该标准的制定使得所有支持该标准的操作系统上运行的应用程序理论上是可以相互移植的。Linux系统也支持POSIX标准,例如,GNU*早是在UNIX环境中编写的GCC编译器和Clib库,之后成功移植到了Linux环境下。
图1-7 POSIX标准下软件的可移植性
1.2 Linux简介
1.2.1 Linux结构
一个完整的运行Linux操作系统的计算机结构大致可以分为四部分,如图1-8所示。
1.硬件
位于底层的是具体的计算机硬件架构,这部分是能看得见摸得着的硬件实体,如中央处理器(CPU)、内存、硬盘、主板、光驱等,如图1-9所示。
图1-8 Linux操作系统结构
图1-9 传统的PC硬件组成
2.操作系统内核
位于中间的灰色部分就是所谓的操作系统。这里主要分为两部分:系统调用接口和操作系统内核。其中操作系统核心主要负责对计算机系统相关资源的分配和管理,主要概括为以下几点。
1) 处理器管理
对于支持多任务操作的操作系统而言,计算机必须能够支持多个应用程序按时间轮流进入CPU运行,并通过有效的处理器调度算法对进程进行调度,这样才能提供高效的程序并行运行环境。
2) 内存管理
对于32位多任务操作系统而言,它的每个程序执行时可寻址的内存范围为4G,而实际运行时,操作系统为其完成了一个虚拟地址到实际内存地址的硬件转换,这样为应用程序提供了虚拟内存空间,而且计算机需要控制各个进程间对内存的访问地址的隔离等工作。
3) 文件系统
文件系统为二进制文件提供了存储环境。它将存储器上的一维地址空间转换成为易于理解的文件对象,例如,在Linux操作系统中使用根文件系统等,它使得应用程序可以访问一个抽象的特定的文件。而实际上这个文件在磁盘上并不一定连续存储在一段地址空间上的。
4) 外设管理
计算机操作系统一个重要的功能就是控制多个进程对临界资源的利用。例如,有多个进程都想使用打印机打印文件的时候,操作系统就需要对临界资源上锁,并规范各个进程轮流使用打印机。此外,操作系统需要为应用程序提供对硬件统一的访问接口,屏蔽掉底层的硬件差异,这就是所谓的硬件驱动,驱动属于内核的一部分,但也可以在运行时被动态地加载。
5) 系统调用接口
系统调用接口为应用程序的开发提供了编程接口,例如,对一个文本文件的典型操作可以抽象为读操作、写操作。应用程序只要使用系统提供的read和write函数就能直接对文件进行读写,而不用关心读写文件的磁盘的类型或大小。
3.应用程序
位于顶部的就是普通用户*直接使用的Linux应用软件,如X Windows、vi编辑器、Shell等应用程序就在这一层工作。这里大致可以将应用程序分为两类:操作系统用户接口程序和普通应用程序。
Shell是用户与操作系统交互的用户界面软件,类UNIX系统都支持Shell接口。如图1-10所示为RHEL 6.3 Linux提供的Bash Shell界面,在Shell中用户可以输入应用程序命令来运行特定应用程序。
另外,比较广泛使用的是X-Windows GUI操作界面。在安装Linux系统的过程中选择安装桌面系统后默认提供的可视化操作界面,可以通过单击等操作来运行特定应用程序,如图1-11所示为RHEL 6.3系统提供的Gnome GUI界面。
应用程序:应用程序就是用户在计算机上运行的各种工具软件,如编辑代码时使用的Eclipse集成开发工具等,还有一些是运行于Shell命令行或在后台作为服务程序运行的没有GUI界面的应用程序,如提供网络FTP下载服务的vsftpd软件。