第1章 系统概述与安装 1
1.1 Linux的兴起与发展 1
1.2 Linux的层次组织结构 2
1.2.1系统内核 3
1.2.2系统调用 3
1.2.3 Shell与实用程序 3
1.2.4应用程序 3
1.3随时查询随机文档 4
1.3.1使用“--help”选项查询命令的简单说明 4
1.3.2使用man命令联机查询系统参考手册 4
1.3.3使用info命令查询命令的相关信息 6
1.4充分利用网上资源 7
1.4.1 GNU网站 7
1.4.2 Linux文档项目网站 8
1.4.3网上求助 8
1.5安装Fedora Linux系统 9
1.5.1安装前的准备 9
1.5.2安装Fedora Linux系统 11
1.5.3其他安装方式 25
1.5.4安装后的系统定制 28
第2章GNOME桌面环境 32
2.1 GNOME桌面环境概述 32
2.1.1 GNOME注册界面 32
2.1.2 GNOME桌面环境 33
2.2 GNOME桌面环境浏览 34
2.2.1 GNOME菜单面板 34
2.2.2 GNOME桌面区 37
2.2.3 GNOME窗口面板 39
2.3应用程序菜单 40
2.3.1 Internet 40
2.3.2办公 42
2.3.3图像 43
2.3.4系统工具 45
2.3.5附件 47
2.3.6影音 49
2.3.7添加/删除软件 50
2.3.8游戏 50
2.4位置菜单 50
2.5系统菜单 50
2.5.1首选项 50
2.5.2管理 53
2.5.3注销 54
2.5.4关机 55
2.6使用移动存储介质 55
2.6.1浏览移动存储介质 55
2.6.2写入移动存储介质 56
2.7定制GNOME桌面环境 57
2.7.1定制面板 57
2.7.2定制桌面背景 58
2.7.3定制菜单面板 58
第3章 命令行基础知识 60
3.1命令行结构 61
3.2后台进程 64
3.3标准输入、标准输出与标准错误输出 65
3.4输入输出重定向 66
3.5管道 70
3.6元字符与文件名生成 72
3.7转义与引用 75
3.8命令历史 78
3.8.1 fc命令 78
3.8.2 history命令 80
3.8.3重复执行先前的命令 81
3.8.4编辑并执行校正后的命令 83
3.8.5命令行补充 84
3.9命令别名 86
3.10作业控制 89
3.11会话记录与命令确认 92
3.11.1保存会话记录 92
3.11.2确保使用的命令是正确的 93
第4章文件系统基础知识 96
4.1文件系统的层次结构 96
4.1.1树形层次结构 96
4.1.2路径名 97
4.2文件系统的组织结构 98
4.3文件的类型 103
4.3.1普通文件 104
4.3.2目录文件 105
4.3.3特殊文件 107
4.3.4链接文件 110
4.3.5符号链接文件 111
4.3.6管道文件 112
4.4文件的安全保护机制 113
4.4.1显示文件的访问权限 113
4.4.2修改文件目录的访问权限 114
4.4.3设置文件目录的访问权限 116
4.4.4其他访问权限设置 118
第5章 文件和目录操作 120
5.1创建文件 120
5.2显示文件列表 121
5.2.1使用is命令显示文件列表 121
5.2.2利用通配符显示文件 123
5.2.3列出隐藏文件 124
5.2.4递归地列出文件 126
5.3显示文件的内容 126
5.3.1使用cat命令显示文件 126
5.3.2使用more命令分页显示文件 127
5.3.3使用less命令分页显示文件 128
5.3.4使用head命令显示文件前几行内容 130
5.3.5使用tail命令显示文件最后几行内容 130
5.4复制文件 131
5.5移动文件 131
5.6删除文件 133
5.7确定文件内容的类型 134
5.8建立链接和符号链接文件 134
5.9显示当前工作目录 135
5.10改换目录 136
5.11创建目录 137
5.12移动目录 137
5.13复制目录 138
5.14删除目录 139
5.15 比较文件之间的差别 139
5.15.1使用diff命令比较两个文件 139
5.15.2使用diff3命令比较三个义件 140
5.16检索文件 141
5.16.1简单检索 143
5.16.2使用逻辑运算符 144
5.16.3利用find命令本身实现其他处理功能 144
5.16.4利用管道实现其他处理功能 145
5.17文件内容检索 145
5.17.1利用grep检索文件内容 145
5.17.2使用grep进行过滤 146
5.17.3使用grep检索多个文件 146
5.17.4检索不包含特定字符串的文本行 147
5.17.5在grep中使用正则表达式 147
5.17.6检索元字符本身 150
5.17.7在命令行中使用引号 150
5.18排序 150
第6章 编辑文件 152
6.1启动vim编辑器 152
6.1.1创建文件 152
6.1.2状态行 154
6.2 vim编辑器的两种工作模式 154
6.2.1输入模式 154
6.2.2命令模式 154
6.3保存编辑的文件并退出vim 155
6.4 vim编辑器的基本命令 156
6.4.1移动光标位置 156
6.4.2输入文本 157
6.4.3修改与替换文本 158
6.4.4撤销先前的修改 159
6.4.5删除文本 159
6.4.6复制、删除与粘贴文本 159
6.4.7按指定的数量重复执行命令 160
6.5使用ex命令 160
6.5.1显示行号 161
6.5.2多行复制 161
6.5.3移动文本行 162
6.5.4删除文本行 162
6.6检索与替换 162
6.6.1检索字符串 162
6.6.2模式检索 163
6.6.3替换字符串 163
6.7编辑多个文件 165
6.7.1编辑多个文件 165
6.7.2合并文件与合并文本行 165
6.8定制vim编辑器的运行环境 165
6.8.1临时设定vim的运行环境 165
6.8.2永久性地定制vim的运行环境 168
6.9其他特殊说明 169
6.9.1删除或替换特殊字符 169
6.9.2在编辑期间运行Linux命令 170
6.10 vim编辑器命令总结 170
第7章Shell基础知识 174
7.1引言 174
7.1.1为什么需要Shell编程 176
7.1.2什么是Shell脚本 177
7.1.3运行Shell脚本 177
7.1.4退出与出口状态 178
7.1.5调用适当的Shell解释程序 180
7.1.6位置参数 181
7.2变量与变量替换 184
7.2.1变量分类 184
7.2.2变量的赋值 184
7.2.3内部变at 185
7.2.4变量的引用与替换 188
7.2.5变量的间接引用 190
7.2.6特殊的变量替换 190
7.2.7变量声明与类型定义 194
7.3命令与命令替换 195
7.3.1 Shell内部命令 195
7.3.2部分命令介绍 199
7.3.3命令替换 208
7.4进程替换 210
7.5 test语句 211
7.5.1文件测试运算符 212
7.5.2字符串测试运算符 214
7.5.3整数值测试运算符 215
7.5.4逻辑运算符 216
7.6命令行的解释执行过程 217
7.6.1读取命令行 218
7.6.2命令历史替换 219
7.6.3别名替换 219
7.6.4花括号扩展 219
7.6.5波浪号替换 220
7.6.6I/O重定向 221
7.6.7变量替换 222
7.6.8算术运算结果替换 222
7.6.9命令替换 222
7.6.10单词解析 223
7.6.11文件名生成 224
7.6.12引用字符处理 225
7.6.13进程替换 225
7.6.14环境处理 225
7.6.15执行命令 226
7.6.16跟踪执行过程 226
第8章Shell高级编程 227
8.1 if条件语句 227
8.1.1 if语句的表现形式 228
8.1.2嵌套的if-then条件测试 229
8.1.3 if-then结构参考 231
8.2 case分支语句 232
8.3 for循环结构 235
8.4 while循环结构 238
8.5 until循环结构 240
8.6 select循环结构 241
8.7嵌套的循环 243
8.8循环控制与辅助编程命令 244
8.8.1 break和continue命令 244
8.8.2 true命令 246
8.8.3 sleep命令 246
8.8.4 shift命令 247
8.8.5 getopt命令 248
8.8.6 getopts命令 249
8.9循环结构语句的I/O重定向 251
8.9.1 while循环的I/O重定向 251
8.9.2 until循环的I/O重定向 252
8.9.3 for循环的I/O重定向 253
8.10 here文档 253
8.11 Shell函数 258
8.12逻辑与和逻辑或并列结构 265
8.12.1逻辑与命令并列结构 265
8.12.2逻辑或命令并列结构 265
8.13 Shell数组 266
8.14信号的捕捉与处理 271
8.15 其他Shell课题 275
8.15.1子Shell 275
8.15.2脚本的调试 276
8.15.3系统性能考虑 281
第9章 进程管理 283
9.1 ps命令概述 283
9.2查询进程及其状态信息 286
查询当前活动的进程 286
查询系统中的所有进程 286
列出进程的重要状态信息 287
列出进程的详细状态信息 288
列出进程间的调用关系 288
pstree命令 289
利用ps命令监控异常进程 290
9.3监控进程及系统资源 290
9.4强行终止进程的运行 295
9.5调整分时进程的优先级 298
9.5.1 nice命令 298
9.5.2 renice命令 300
9.5.3调整进程优先级的作用 300
第10章proc文件系统 302
10.1进程内存映像文件 302
10.2系统配置信息 306
10.3系统运行状态信息 309
10.4若干重要子目录 312
10.5系统内核可调参数 313
文件系统可调参数 314
系统内核可调参数 315
sysctl命令 319
第11章 磁盘空间管理 321
11.1查询磁盘空间信息 321
常用的磁盘空间管理工具 321
使用df命令检查磁盘空间的使用情况 322
使用du命令检查目录占用的存储空间 324
使用find命令找出超过一定容量限制的文件 326
使用find命令找出并删除长期闲置不用的文件 327
使用find命令找出并删除core文件 328
11.1.7使用is命令检测文件的大小 329
11.1.8清除临时目录或文件 329
11.2采用标准工具备份与恢复数据 330
11.2.1利用cpio实现备份和恢复 330
11.2.2利用tar实现备份和恢复 337
11.2.3利用dd实现文件系统的原样复制 343
11.3采用专用工具备份与恢复数据 345
11.3.1利用dump命令实现数据的备份 346
11.3.2利用restore命令实现数据的恢复 348
11.4限额控制 351
11.4.1限额概述 351
11.4.2设置限额 353
11.4.3限额的维护 356
第12章 软件管理 359
12.1软件管理概述 359
12.1.1软件维护工具 359
12.1.2软件管理基本概念 360
12.2使用yum管理软件包 362
12.2.1利用yum安装新的软件包 364
12.2.2利用yum更新软件包 366
12.2.3利用yum删除软件包 366
12.2.4利用yum检索软件包 367
12.2.5 yum的高级检索功能 369
12.2.6利用yum升级Fedora Linux系统 370
12.2.7利用yum安装本地存储介质上的软件包 370
12.2.8设置yum.conf配置文件 371
11.2.9启用yum的缓存功能 375
12.3使用rpm管理软件包 376
12.3.1安装软件包 377
12.3.2升级软件包 378
12.3.3更新软件包 378
12.3.4查询软件包 379
12.3.5删除软件包 381
第13章 用户管理 382
13.1增加与删除用户 382
13.1.1 /etc/passwd文件 383
13.1.2 /etc/shadow文件 384
13.1.3用户管理实例 385
13.2定制用户的工作环境 389
13.2.1选择命令解释程序 389
13.2.2设置用户初始化文件 392
13.2.3定制Shell工作环境 393
13.3增加与删除用户组 400
13.4监控用户 402
13.4.1利用who命令查询系统中的用户 402
13.4.2利用finger命令查询系统中的用户 403
13.4.3利用w命令查询系统中的用户活动 404
13.4.4向注册用户发送消息 404
第14章 系统启动与关机 406
14.1磁盘分区与GRUB 406
14.1.1磁盘分区 407
14.1.2 GRUB 408
14.1.3 GRUB配置文件 409
14.1.4安装GRUB 410
14.1.5修复GRUB 411
14.2初始引导过程 413
14.2.1 GRUB引导过程概述 413
14.2.2.引导过程详述 415
14.3 init进程与系统生成 418
14.3.1运行级 418
14.3.2改变运行级 420
14.3.3 /etc/inittab文件 421
14.3.4处理方式 422
14.3.5 /etc/inittab文件举例 423
14.3.6启动用户定义的应用程序 428
14.4 login进程 429
14.4.1 login进程与passwd文件 429
14.4.2 Shell进程与profile文件 429
14.4.3 utmp与wtmp文件 431
14.5系统关机过程 431
14.5.1使用shutdown命令关闭系统 431
14.5.2使用init命令关闭系统 432
14.5.3使用其他命令关机 434
14.6应用实例 434
第15章 系统服务管理 437
15.1系统服务进程 437
15.2 Fedora Linux支持的系统服务 443
15.3网络服务与管理 448
15.3.1 xinetd与网络服务 448
15.3.2配置网络服务 452
15.4 sysconfig目录 454
15.4.1部分重要的配置文件 454
15.4.2部分重要的子目录 457
第16章 后台作业调度 459
16.1定时运行后台作业 459
16.1.1 crond服务进程的调度过程 460
16.1.2at作业与atd服务进程 461
16.1.3调度错失执行时间的任务 462
16.2调度定时重复执行的任务 463
16.2.1 crontab文件的工作原理 463
16.2.2 crontab文件的语法格式 464
16.2.3创建和编辑crontab文件 465
16.2.4显示crontab文件 466
16.2.5删除crontab文件 467
16.2.6 crontab命令的访问控制 467
16.2.7应用实例——数据库定时备份 468
16.3调度一次性执行的作业 469
16.3.1创建at作业 470
16.3.2显示at作业及作业队列 470
16.3.3删除at作业 471
16.3.4 at命令的访问控制 471
16.3.5应用实例——系统定时关机 472
第17章TCP/IP网络管理 474
17.1 TCP/IP简介 474
17.1.1 TCP/IP协议的层次结构 474
17.1.2 TCP/IP协议如何处理数据通信 476
17.2网络接口设置 479
17.2.1以太网 479
17.2.2 ADSL网络连接 484
17.3主机名字解析 487
17.4网络路由设置 487
17.4.1静态路由 488
17.4.2动态路由 489
17.5 TCP/IP网络管理与维护 495
17.5.1使用ifconfig命令维护网络接口 495
17.5.2使用netstat命令监控网络状态 497
17.5.3使用ping命令测试远程主机的连通性 503
17.5.4使用ping命令检测网络主机的性能 504
17.5.5使用ftp命令检测网络主机的传输性能 505
17.5.6使用traceroute命令跟踪路由信息 505
17.5.7利用tcpdump捕捉、分析网络分组数据 506
第18章TCP/IP网络应用 511
18.1 OpenSSH 511
18.1.1启动OpenSSH服务进程 511
18.1.2 /etc/ssh/sshd_config配置文件 512
18.1.3使用SSH注册到远程系统 513
18.1.4使用ssh注册到远程系统 513
18.1.5使用SSH执行远程系统中的命令 514
18.1.6使用SCP替代FTP 514
18.1.7使用SFTP替代FTP 516
18.1.8 SSH与SCP的无密码注册 516
18.2网络应用——Telnet 518
18.2.1设置Telnet服务器 519
18.2.2 Telnet服务器的安全考虑 521
18.3网络应用——FTP 523
18.3.1设置vsftpd 523
18.3.2 vsftpd.conf配置文件 524
18.3.3 FTP安全考虑 528
18.3.4 FTP应用 529
18.3.5 FTP自动注册 531
第19章NFS网络文件系统 532
19.1 NFS的体系结构 532
19.2配置NFS服务器 533
19.2.1启动NFS服务器 533
19.2.2/etc/exports文件 535
19.2.3/etc/exports文件 536
19.3配置NFS客户机 538
19.3.1检查NFS客户机的运行状态 538
19.3.2安装远程文件系统 538
19.3.3设置/etc/fstab文件 540
19.4 NFS自动安装 541
19.4.1主映射文件 541
19.4.2直接映射文件 542
19.4.3间接映射文件 542
19.5 NFS故障修复 544
19.5.1基本工具 544
19.5.2其他注意事项 547
第20章DNS域名服务器 548
20.1基本概念 548
20.1.1域与区 548
20.1.2 DNS域名服务器 549
20.1.3 DNS域名与地址解析 551
20.2 DNS配置文件 554
20.2.1 resolv.conf文件 555
20.2.2 named.conf配置文件 556
20.2.3区配置文件 561
20.2.4 DNS资源记录 563
20.3 DNS服务器配置过程 567
20.3.1设置resolv.conf配置文件 567
20.3.2设置named.conf配置文件 568
20.3.3设置正向区配置文件 570
20.3.4设置反向区配置文件 570
20.3.5 DNS视图 571
20.3.6设置缓冲服务器 575
20.3.7区配置文件的保护 575
20.3.8设置配置文件的属主和访问权限 579
20.4启动DNS域名服务器 580
20.5测试DNS服务器 581
第21章Apache服务器 582
21.1 Apache服务器概述 582
21.2启动Apache服务器 583
21.2.1 Apache软件包的目录结构 583
21.2.2 http守护进程 584
21.2.3设置Apache启动脚本 584
21.2.4 Apache模块 585
21.3配置Apache服务器 586
21.3.1 Apache主配置文件 586
21.3.2 .htaccess文件 587
21.3.3配置指令 587
21.4用户目录 593
21.4.1利用UserDir设定目录路径 594
21.4.2限定用户目录的使用 594
21.4.3开放用户CGI目录 595
21.5虚拟主机 595
21.5.1配置基于主机名的虚拟主机 596
21.5.2配置基于IP地址的虚拟主机 598
21.5.3利用不同的IP地址提供相同的网站服务 599
21.5.4利用不同的端口提供不同的网站服务 599
21.6利用CGI提供动态内容服务 599
21.6.1启用CGI程序 600
21.6.2编写CGI程序 601
21.6.3 CGI的安全考虑与suexec 603
21.6.4 Apache与LAMP 604
21.7用户认证 606
21.7.1用户认证的实现 606
21.7.2用户认证方法的补充说明 608
21.8日志文件 609
21.8.1错误日志文件 609
21.8.2访问日志文件 611
21.8.3虚拟主机日志 612
21.9利用GNOME桌面配置Apache服务器 614
第22章 文件系统内部组织 615
22.1文件系统的组织结构 615
22.1.1引导块 617
22.1.2数据块组 617
22.2超级块 620
22.3信息节点 623
22.3.1文件的类型与访问权限 624
22.3.2数据块地址数组 624
22.3.3符号链接文件 626
22.3.4特权标志位 626
22.4信息节点与目录及文件的关系 627
22.4.1目录文件 627
22.4.2目录、文件和信息节点三者之间的关系 628
第23章 文件系统管理 630
23.1划分磁盘分区 630
23.2创建文件系统 633
23.2.1 mkfs或mke2fs命令介绍 633
23.2.2创建Ext2/Ext3文件系统 635
23.3调整文件系统 636
23.4安装、卸载文件系统 639
23.4.1安装文件系统概述 639
23.4.2 mount命令 640
23.4.3 /etc/fstab文件 641
23.4.4安装文件系统 642
23.4.5卸载文件系统 648
23.5检测与修复文件系统 651
23.5.1何时需要检测文件系统 652
23.5.2文件系统检测的内容 653
23.5.3交互地检测与修复文件系统 657
23.5.4自动地检测与修复文件系统 658
23.5.5恢复严重受损的超级块 658
23.5.6解决fsck命令无法修复的文件系统问题 659
23.5.7 fsck的阶段处理方式 660
23.6调试文件系统 663
23.6.1概述 663
23.6.2交互式调试子命令 664
23.6.3应用举例——恢复误删的文件 668
23.7其他文件系统维护工具 670
23.7.1 dumpe2fs命令 670
23.7.2 e2image命令 671
第24章iptables防火墙 674
24.1基本概念 674
24.1.1过滤分组数据 675
24.1.2网络地址转换 676
24.1.3改造分组数据 677
24.1.4分组数据的处理过程 677
24.1.5目标与跳转 679
24.2设置iptables防火墙 683
24.2.1 iptables命令与选项 683
24.2.2怎样设置iptables防火墙 685
24.2.3 iptables防火墙设置实例 688
24.2.4网络地址转换 689
24.3启动 iptables防火墙 691
24.3.1启动iptables服务进程 691
24.3.2 iptables规则配置文件 691
参考文献 695