第一篇 Linux基础入门
第1章 初识Linux 2
1.1 Linux简介 3
1.1.1 什么是Linux 3
1.1.2 Linux系统的产生 3
1.1.3 Linux系统的发展历程 3
1.1.4 Linux系统的应用 4
1.2 Linux系统的特点和组成 5
1.2.1 Linux系统的特点 5
1.2.2 Linux系统的组成 6
1.2.3 Linux系统与Windows系统的比较 6
1.3 Linux的版本介绍 7
1.3.1 Linux内核版本 7
1.3.2 Linux内核的发展史 8
1.3.3 Linux发行版本 8
1.4 Red Hat Linux操作系统介绍 9
1.4.1 Red Hat Linux的优点 9
1.4.2 Red Hat Linux版本介绍 10
1.4.3 Red Hat Enterprise Linux AS 4简介 11
1.5 课后练习 12
第2章 Linux系统的安装 13
2.1 准备安装Linux系统 14
2.1.1 安装RHEL 4系统的软硬件要求 14
2.1.2 Linux系统下硬盘的基本知识 15
2.2 安装Red Hat Enterprise Linux AS 4系统 16
2.2.1 安装Linux的步骤 16
2.2.2 安装后的初始化配置 24
2.3 升级和删除RHEL 4 27
2.3.1 升级RHEL 4 27
2.3.2 删除安装的RHEL 4 28
2.4 RHEL 4安装过程中的故障排除 28
2.4.1 无法引导RHEL 4 28
2.4.2 安装起始部分的问题 29
2.4.3 安装过程中的问题 29
2.4.4 安装后的问题 30
2.5 课后练习 30
第3章 走进Linux图形界面 31
3.1 登录、注销和关闭系统 32
3.1.1 登录系统 32
3.1.2 注销 34
3.1.3 关机 34
3.2 使用GNOME图形化桌面 35
3.2.1 使用桌面 35
3.2.2 使用面板 36
3.3 使用Nautilus文件管理器 37
3.4 使用软盘和光盘 38
3.4.1 使用软盘 38
3.4.2 使用光盘 40
3.5 系统设置 40
3.5.1 系统监视器 40
3.5.2 硬件浏览器 41
3.5.3 显示设置 42
3.5.4 日期和时间配置 42
3.5.5 改变桌面背景 44
3.6 KDE桌面简介 45
3.6.1 使用KDE桌面 45
3.6.2 使用面板 46
3.6.3 使用主菜单 47
3.6.4 使用小程序 47
3.6.5 使用多个桌面 47
3.6.6 查看任务栏 48
3.6.7 在面板上添加图标和小程序 48
3.6.8 配置KDE面板 49
3.7 使用Konqueror管理器 49
3.7.1 管理文件 49
3.7.2 导航面板 50
3.7.3 使用Konqueror浏览万维网 50
3.7.4 使用 Konqueror 来查看图像 50
3.8 定制KDE 51
3.9 课后练习 52
第4章 Linux应用软件的使用 53
4.1 播放音频 54
4.1.1 播放音频光盘 54
4.1.2 播放数码音乐文件 54
4.2 查看图像 55
4.2.1 使用Nautilus查看图像 55
4.2.2 使用gThumb查看图像 56
4.3 上网冲浪 57
4.3.1 配置互联网向导 57
4.3.2 使用Mozilla Firefox浏览万维网 59
4.4 收发电子邮件 60
4.4.1 使用Evolution收发电子邮件 60
4.4.2 使用KMail收发邮件 62
4.5 刻录CD-R和CD-RW 63
4.5.1 使用CD/DVD刻录 63
4.5.2 在命令行中使用CD-R和CD-RW 64
4.6 Linux下常用应用程序介绍 65
4.7 课后练习 66
第5章 Linux字符界面操作 67
5.1 字符界面简介 68
5.1.1 进入Linux字符界面 68
5.1.2 虚拟控制台 68
5.1.3 系统运行级别 68
5.1.4 关闭和启动系统 69
5.2 在Linux下获取帮助 71
5.2.1 使用man手册页 71
5.2.2 使用help命令 73
5.2.3 whereis命令 73
5.3 shell基础 73
5.3.1 shell起步 73
5.3.2 shell类型和功能 74
5.3.3 开始使用bash 75
5.4 shell实用功能 76
5.4.1 命令行自动补全 76
5.4.2 命令历史记录 77
5.4.3 命令的排列、替换和别名 78
5.4.4 文件名匹配和输出重定向 79
5.5 shell变量 83
5.5.1 bash配置文件 83
5.5.2 提示符 83
5.5.3 改变$PATH 84
5.6 vi编辑器的基本使用方法 86
5.6.1 vi的基本概念 86
5.6.2 vi的基本操作 86
5.6.3 命令行模式操作 87
5.6.4 末行模式操作 88
5.7 课后练习 89
第6章 Linux常用操作命令 90
6.1 文件和目录操作 91
6.1.1 显示工作目录路径的命令pwd 91
6.1.2 更改工作目录路径的命令cd 91
6.1.3 列出子目录和文件信息的命令ls 92
6.1.4 创建空文件、更改文件时间的命令touch 93
6.1.5 创建目录的命令mkdir 93
6.1.6 删除空目录的命令rmdir 94
6.1.7 复制文件和目录的命令cp 94
6.1.8 文件和目录改名、移动文件和目录路径的命令mv 95
6.1.9 删除文件和目录的命令rm 95
6.1.10 统计文件字节数、字数、行数的命令wc 96
6.2 文本显示和处理 96
6.2.1 显示文本文件的命令cat 96
6.2.2 分页显示文本文件的命令more 97
6.2.3 回卷显示文本文件的命令less 97
6.2.4 显示指定文件前若干行的命令head 98
6.2.5 查看文件末尾数据的命令tail 98
6.2.6 对文件中的数据进行排序的命令sort 99
6.2.7 将重复行从输出文件中删除的命令uniq 99
6.2.8 从文件每个行中写出选定的字节、字符或字段的命令cut 100
6.2.9 比较两个已排过序的文件的命令comm 100
6.2.10 逐行比较两个文本文件,列出其不同之处的命令diff 101
6.3 文件和命令查找 102
6.3.1 查找文件里符合条件字符串的命令grep 102
6.3.2 列出文件系统内符合条件的文件的命令find 102
6.3.3 在数据库中查找文件的命令locate 103
6.3.4 查找指定文件、命令和手册页位置的命令whereis 104
6.3.5 查询文件类型的命令file 104
6.3.6 查询命令功能的命令whatis 105
6.3.7 显示可执行命令路径的命令which 105
6.4 系统信息显示 105
6.4.1 显示计算机及操作系统相关信息的命令uname 105
6.4.2 显示或修改计算机主机名的命令hostname 106
6.4.3 显示开机信息的命令dmesg 106
6.4.4 显示日历的命令cal 107
6.4.5 显示和设置系统日期和时间的命令date 107
6.5 信息交流 109
6.5.1 在显示器上显示文字的命令echo 109
6.5.2 设定是否允许用write命令发送信息的命令mesg 109
6.5.3 对全部已登录用户发送信息的命令wall 110
6.5.4 向用户发送消息的命令write 110
6.5.5 发送信息给其他使用者的命令talk 110
6.6 其他命令 110
6.6.1 清除屏幕上信息的命令clear 110
6.6.2 将缓冲文件写到硬盘中的命令sync 111
6.6.3 显示系统已经运行时间的命令uptime 111
6.6.4 显示近期用户登录情况的命令last 111
6.7 在Linux系统中运行DOS命令 112
6.8 课后练习 113
第二篇 Linux系统管理
第7章 文件和目录 116
7.1 Linux文件 117
7.1.1 Linux文件的扩展名 117
7.1.2 Linux文件类型 118
7.2 Linux目录结构 120
7.3 查看Linux系统的软硬件信息 123
7.3.1 查看计算机CPU信息 123
7.3.2 查看主机DMA通道信息 123
7.3.3 查看文件系统信息 123
7.3.4 查看主机中断信息 124
7.3.5 查看主机I/O端口号信息 124
7.3.6 查看计算机内存信息 124
7.3.7 查看Linux版本信息 125
7.3.8 查看板卡信息 125
7.3.9 查看usb设备 126
7.4 链接文件 126
7.4.1 链接文件简介 126
7.4.2 链接文件的使用 127
7.5 课后练习 128
第8章 用户和组群账户管理 129
8.1 用户账户管理 130
8.1.1 Linux用户账户概述 130
8.1.2 Linux用户账户配置文件 130
8.1.3 图形界面下用户账户的设置 132
8.1.4 字符界面下用户账户的设置 134
8.2 组群账户管理 138
8.2.1 Linux组群账户配置文件 138
8.2.2 图形界面下组群账户的设置 139
8.2.3 字符界面下组群账户的设置 140
8.3 账户相关文件或目录 141
8.3.1 /etc/skel目录 141
8.3.2 /etc/login.defs配置文件 142
8.3.3 /etc/default/useradd文件 143
8.4 创建用户和组群的特殊方法 143
8.4.1 修改用户和用户组群配置文件来添加用户和组群 143
8.4.2 大批量添加用户 144
8.5 用户和组群维护命令 145
8.5.1 账户维护命令 145
8.5.2 账户信息显示 150
8.6 账户安全 152
8.7 课后练习 154
第9章 软件包管理 155
9.1 RPM软件包简介 156
9.1.1 什么是RPM软件包 156
9.1.2 RPM软件包的设计目标 156
9.1.3 RPM软件包管理的用途 156
9.2 RPM软件包管理 157
9.2.1 图形界面管理RPM软件包 157
9.2.2 RPM软件包命令的使用 159
9.3 tar包管理 163
9.3.1 tar包简介 164
9.3.2 tar包使用和管理 164
9.3.3 tar包的特殊使用 166
9.4 其他软件包管理命令 168
9.4.1 gzip命令 168
9.4.2 zip和unzip命令 169
9.5 课后练习 170
第10章 磁盘管理 171
10.1 Linux硬盘分区 172
10.1.1 硬盘分区知识 172
10.1.2 使用fdisk进行硬盘分区 172
10.2 逻辑卷管理器(LVM) 177
10.2.1 什么是LVM 177
10.2.2 LVM配置 178
10.3 RAID配置 180
10.3.1 RAID简介 180
10.3.2 软件RAID配置 182
10.4 课后练习 184
第11章 Linux文件系统 185
11.1 Linux文件系统简介 186
11.1.1 Linux文件系统的工作原理 186
11.1.2 Linux主流文件系统 186
11.1.3 查看RHEL 4支持的文件类型 189
11.2 创建文件系统 190
11.2.1 创建文件系统简介 190
11.2.2 创建文件系统 190
11.3 挂载和卸载文件系统 192
11.3.1 挂载文件系统 192
11.3.2 卸载文件系统 194
11.3.3 查看分区挂载情况 195
11.4 检查文件系统的错误 195
11.5 使用交换空间 197
11.5.1 交换空间简介 197
11.5.2 添加交换空间 197
11.5.3 删除交换空间 199
11.6 设置开机自动挂载文件系统 199
11.6.1 /etc/fstab简介 199
11.6.2 /etc/fstab文件详解 200
11.7 课后练习 201
第12章 磁盘配额和权限设置 202
12.1 磁盘配额的设置 203
12.1.1 磁盘配额简介 203
12.1.2 配置磁盘配额 203
12.1.3 管理磁盘配额 205
12.2 权限设置 206
12.2.1 文件和目录权限 206
12.2.2 权限设置 208
12.2.3 更改文件和目录的所有权 212
12.2.4 设置权限掩码 214
12.3 课后练习 215
第13章 Linux系统启动 216
13.1 Linux系统的启动过程 217
13.1.1 BIOS自检 217
13.1.2 启动GRUB/LILO 218
13.1.3 加载内核 218
13.1.4 执行init进程 218
13.1.5 通过/etc/inittab文件进行初始化 219
13.1.6 执行/bin/login程序 220
13.2 init进程 221
13.3 维护GRUB 224
13.3.1 引导加载程序和GRUB 224
13.3.2 GRUB配置文件 225
13.4 课后练习 226
第14章 进程和服务管理 227
14.1 Linux进程管理 228
14.1.1 进程及作业的概念 228
14.1.2 进程管理 228
14.1.3 守护进程工作原理和方式 230
14.2 查看系统进程信息 231
14.2.1 ps命令 231
14.2.2 top命令 233
14.3 管理服务 235
14.3.1 服务配置工具 235
14.3.2 ntsysv命令 238
14.3.3 chkconfig和service命令 239
14.4 课后练习 241
第15章 作业控制和任务计划 242
15.1 作业控制 243
15.1.1 进程的启动方式 243
15.1.2 进程的挂起及恢复 244
15.2 任务计划 245
15.2.1 配置cron实现自动化 246
15.2.2 使用at实现自动化 250
15.2.3 配置batch作业 252
15.3 课后练习 253
第16章 维护Linux系统 254
16.1 Linux日志管理 255
16.1.1 日志简介 255
16.1.2 日志的查看和配置 255
16.1.3 常用的日志文件 257
16.1.4 syslog程序 259
16.2 查看系统信息 260
16.2.1 查看内存信息 260
16.2.2 查看磁盘空间占用情况 262
16.2.3 显示目录或文件的大小 263
16.3 字符界面的中文化 264
16.3.1 zhcon的特点 264
16.3.2 安装和查看zhcon 265
16.3.3 zhcon的使用 266
16.3.4 zhcon配置文件 267
16.4 课后练习 270
第三篇 Linux网络服务
第17章 网络基本配置 272
17.1 网络基础知识 273
17.1.1 Internet所提供的服务 273
17.1.2 网络拓扑结构 274
17.1.3 网络互联的方式 276
17.1.4 OSI参考模型 277
17.1.5 TCP/IP 277
17.1.6 IP地址及其分类 279
17.2 Linux网络配置文件 280
17.2.1 /etc/sysconfig/network-scripts/ifcfg-ethN文件 280
17.2.2 /etc/resolv.conf文件 280
17.2.3 /etc/host.conf文件 281
17.2.4 /etc/sysconfig/network文件 281
17.2.5 /etc/hosts文件 281
17.2.6 /etc/services文件 281
17.3 网络测试命令 282
17.3.1 traceroute命令 282
17.3.2 ifconfig命令 284
17.3.3 ping命令 285
17.3.4 netstat命令 286
17.3.5 arp命令 287
17.3.6 tcpdump命令 288
17.4 字符界面的网络客户端 289
17.4.1 使用FTP命令实现远程文件传输 289
17.4.2 使用telnet命令访问远程计算机 293
17.4.3 使用wget命令下载资料 294
17.5 Linux下路由器的配置 295
17.5.1 路由器的基本概念 295
17.5.2 静态路由器的配置 296
17.5.3 静态路由配置举例 298
17.6 ADSL配置 299
17.6.1 ADSL介绍 299
17.6.2 ADSL配置 301
17.7 课后练习 303
第18章 远程管理Linux服务器 304
18.1 架设telnet服务器 305
18.1.1 安装telnet软件包 305
18.1.2 启动telnet服务 305
18.1.3 配置telnet服务器 306
18.2 OpenSSH配置 308
18.2.1 使用SSH的原因 308
18.2.2 配置OpenSSH服务器 308
18.2.3 Linux客户端的连接 309
18.2.4 Windows客户端的连接 311
18.3 使用VNC实现远程管理 314
18.3.1 VNC简介 314
18.3.2 VNC配置 315
18.4 课后练习 318
第19章 使用Samba实现文件共享 319
19.1 Samba简介 320
19.1.1 Samba和SMB 320
19.1.2 Samba的功能 320
19.1.3 安装和查看Samba软件包 320
19.2 图形界面配置Samba服务器 321
19.2.1 配置服务器设置 322
19.2.2 管理Samba用户 323
19.2.3 添加共享 323
19.3 字符界面配置Samba服务器 325
19.3.1 修改/etc/samba/smb.conf文件 325
19.3.2 设置Samba加密口令 325
19.4 控制Samba服务器 327
19.5 访问Samba共享 327
19.5.1 在Linux系统下访问Samba共享 327
19.5.2 在Windows系统下访问Samba共享 330
19.6 课后练习 330
第20章 DHCP和NFS服务器配置 331
20.1 DHCP服务器配置 332
20.1.1 DHCP简介 332
20.1.2 DHCP服务器配置 334
20.2 NFS服务器配置 338
20.2.1 NFS简介 338
20.2.2 NFS服务器配置 339
20.2.3 启动和停止服务器 341
20.2.4 挂载NFS文件系统 342
20.3 课后练习 344
第21章 使用Apache架设Web网站 345
21.1 Apache简介 346
21.2 基本设置 346
21.3 默认设置 347
21.3.1 页码选项 348
21.3.2 记录日志 349
21.3.3 环境变量 350
21.3.4 目录 351
21.4 虚拟主机设置 353
21.4.1 添加和编辑虚拟主机 353
21.4.2 SSL 354
21.4.3 其他虚拟主机选项 355
21.5 服务器设置 355
21.6 调整性能 356
21.7 保存设置 357
21.8 课后练习 357
第22章 实现Linux网络安全 358
22.1 提高Linux系统安全性能 359
22.2 Linux系统安全保护措施 361
22.3 检测Linux系统 363
22.3.1 Linux入侵检测方法 363
22.3.2 查找Linux系统漏洞 365
22.4 网络安全工具 367
22.4.1 TCP_Wrappers实现访问控制 367
22.4.2 nmap的使用 368
22.5 课后练习 372
第四篇 Linux程序开发
第23章 shell编程 374
23.1 熟悉shell程序的创建 375
23.1.1 语法基本介绍 375
23.1.2 一个简单shell程序的创建过程 375
23.1.3 显示欢迎界面的shell程序 376
23.2 shell变量 376
23.2.1 shell定义的环境变量 377
23.2.2 用户定义的变量 377
23.2.3 位置参数 378
23.2.4 预定义变量 378
23.2.5 参数置换的变量 378
23.3 变量表达式 379
23.3.1 字符串比较 379
23.3.2 数字比较 380
23.3.3 逻辑测试 380
23.3.4 文件操作 381
23.3.5 进行test测试的标准方法 381
23.4 shell程序的执行和跟踪 381
23.4.1 shell程序的执行和调试 381
23.4.2 shell程序的跟踪 383
23.4.3 bash的内部命令 383
23.5 shell流程控制语句 384
23.5.1 条件判断 385
23.5.2 循环控制 387
23.6 函数 391
23.7 shell编程实例 392
23.7.1 检查输入参数和环境变量 392
23.7.2 当出现错误时,提供一个函数终止脚本 393
23.7.3 在每个脚本内捕获每个行命令的返回码 394
23.7.4 远程杀死僵进程 394
23.8 课后练习 395
第24章 Linux C语言编程基础 396
24.1 C语言简介 397
24.2 数据类型 397
24.2.1 整型(int) 397
24.2.2 浮点型(float) 398
24.2.3 字符型(char) 398
24.2.4 指针型(*) 399
24.2.5 无值型(void) 399
24.3 控制流程语句 399
24.3.1 条件语句 399
24.3.2 循环语句 401
24.3.3 break、continue和goto语句 404
24.4 文件的输入输出函数 406
24.4.1 标准文件函数 406
24.4.2 非标准文件函数 411
24.5 变量 412
24.5.1 变量声明 412
24.5.2 变量种类 412
24.5.3 变量存储类型 413
24.5.4 数组变量 415
24.5.5 变量的初始化和赋值 416
24.6 数组与指针 419
24.6.1 结构说明和结构变量定义 420
24.6.2 结构变量的使用 421
24.6.3 结构数组和结构指针 422
24.6.4 结构的复杂形式 424
24.7 课后练习 425
第25章 Linux程序编译和调试维护 426
25.1 C语言编译器GCC 427
25.1.1 GCC应用简介 427
25.1.2 GCC的使用 427
25.1.3 警告提示功能 428
25.1.4 库依赖 429
25.2 用GDB调试程序 430
25.2.1 GDB概述 430
25.2.2 GDB基本命令 431
25.2.3 GDB应用举例 432
25.3 使用make维护程序 435
25.3.1 makefile文件 435
25.3.2 make命令 437
25.3.3 隐含规则 438
25.4 课后练习 440