第1章 UNIX概述与安装 1
1.1 UNIX早期发展过程概述 1
1.1.1 UNIX的缘起 2
1.1.2 UNIX的交替发展 4
1.1.3 UNIX的战国时代 5
1.1.4策略与标准之争 6
1.1.5 UNIX的黑暗时期 7
1.1.6 AT&T UNIX System V Release 4.0 7
1.1.7后UNIX时代 8
1.2 UNIX的层次组织结构 9
1.3 UNIX的逻辑组织结构 10
1.3.1进程管理子系统 11
1.3.2内存管理子系统 12
1.3.3文件管理子系统 12
1.3.4 I/O管理子系统 13
1.3.5硬件系统 13
1.4安装Solaris操作系统 13
1.4.1硬件要求 14
1.4.2安装步骤 14
第2章 命令行基础知识 25
2.1命令行结构 25
2.2后台进程 28
2.3标准输入、标准输出与标准错误输出 28
2.4输入输出重定向 29
2.5管道 33
2.6元字符与文件名生成 35
2.7转义与引用 38
2.8命令历史 40
2.8.1 fc命令 41
2.8.2 history命令 43
2.8.3重复执行先前的命令 44
2.8.4编辑并执行校正后的命令 46
2.8.5命令行补充 47
2.9命令别名 48
2.10作业控制 51
2.11会话记录 53
2.12使用man命令查询系统参考手册 55
第3章 文件系统基础知识 57
3.1文件系统的层次结构 57
3.1.1树形层次结构 57
3.1.2路径名 58
3.2文件系统的组织结构 59
3.3文件的类型 62
3.3.1普通文件 63
3.3.2目录文件 64
3.3.3特殊文件 66
3.3.4链接文件 70
3.3.5符号链接文件 71
3.3.6管道文件 73
3.4文件的安全保护机制 73
3.4.1显示文件的访问权限 74
3.4.2修改文件的访问权限 75
3.4.3设置文件的访问权限 76
3.4.4其他访问权限设置 78
第4章 文件和目录操作 80
4.1创建文件 80
4.2显示文件列表 81
4.2.1使用ls命令显示文件列表 81
4.2.2利用通配符显示文件 83
4.2.3显示隐藏文件 84
4.2.4递归显示目录与文件 85
4.3显示文件内容 86
4.3.1使用cat命令显示文件 86
4.3.2使用more命令分页显示文件 86
4.3.3使用head命令显示文件前几行内容 88
4.3.4使用tail命令显示文件最后几行内容 88
4.4复制文件 89
4.5移动文件 89
4.6删除文件 91
4.7显示当前工作目录 92
4.8改换目录 92
4.9创建目录 94
4.10移动目录 94
4.11复制目录 95
4.12删除目录 96
4.13比较文件之间的差别 96
4.13.1使用diff命令比较两个文件 96
4.13.2使用diff3命令比较三个文件 97
4.14从系统中检索文件 98
4.14.1简单检索 100
4.14.2使用逻辑运算符 100
4.14.3利用find命令本身实现其他处理功能 101
4.14.4利用管道实现其他处理功能 101
4.15 检索文件内容 102
4.15.1利用grep检索文件内容 102
4.15.2过滤其他命令的输出数据 103
4.15.3使用grep检索多个文件 103
4.15.4检索不包含特定字符串的文本行 104
4.15.5在grep中使用正则表达式 104
4.15.6检索元字符本身 107
4.15.7在命令行中使用引号 107
4.16排序 107
第5章 编辑文件 109
5.1启动vi编辑器 109
5.1.1创建文件 109
5.1.2状态行 109
5.2 vi编辑器的两种工作模式 110
5.2.1输入模式 110
5.2.2命令模式 110
5.3保存编辑的文件并退出vi 111
5.4 vi编辑器的基本命令 112
5.4.1移动光标位置 112
5.4.2输入文本 113
5.4.3修改与替换文本 113
5.4.4撤销先前的修改 114
5.4.5删除文本 115
5.4.6复制、删除与粘贴文本 115
5.4.7重复执行指定次数的命令 116
5.5使用ex命令 116
5.5.1显示行号 116
5.5.2多行复制 117
5.5.3移动文本行 117
5.5.4删除文本行 118
5.6检索与替换 118
5.6.1检索字符串 118
5.6.2模式检索 119
5.6.3替换字符串 120
5.7编辑多个文件 120
5.7.1编辑多个文件 120
5.7.2合并文件与合并文本行 121
5.8定制vi编辑器的运行环境 121
5.8.1临时设定vi的运行环境 121
5.8.2永久性地定制vi的运行环境 123
5.9其他特殊说明 124
5.9.1删除或替换特殊字符 124
5.9.2在编辑期间运行UNIX命令 124
5.10 vi编辑器命令总结 125
第6章 Shell基础知识 129
6.1 shell与Shell脚本 129
6.1.1为什么需要Shell编程 129
6.1.2什么是Shell脚本 130
6.1.3运行Shell脚本 131
6.1.4退出与出口状态 131
6.1.5调用适当的Shell解释程序 133
6.1.6位置参数 135
6.2变量与变量替换 137
6.2.1变量分类 137
6.2.2变量赋值 138
6.2.3内部变量 138
6.2.4变量引用与替换 141
6.2.5变量的间接引用 143
6.2.6特殊的变量替换 144
6.2.7变量声明与类型定义 147
6.3命令与命令替换 148
6.3.1 Shell内部命令 148
6.3.2部分命令介绍 151
6.3.3命令替换 161
6.4 test语句 163
6.4.1文件测试运算符 164
6.4.2字符串测试运算符 165
6.4.3整数值测试运算符 167
6.4.4逻辑运算符 168
6.5命令行的解释执行过程 169
6.5.1读取命令行 170
6.5.2命令历史替换 171
6.5.3命令别名替换 171
6.5.4花括号扩展 171
6.5.5波浪号替换 172
6.5.6 I/O重定向 173
6.5.7变量替换 174
6.5.8算术运算结果替换 174
6.5.9命令替换 174
6.5.10单词解析 175
6.5.11文件名生成 175
6.5.12引用字符处理 176
6.5.13进程替换 177
6.5.14环境处理 178
6.5.15执行命令 178
6.5.16跟踪执行过程 179
6.5.17实例验证 179
第7章 Shell高级编程 181
7.1 if条件语句 181
7.1.1 if语句的表现形式 181
7.1.2嵌套的if-then条件测试 183
7.2 case分支语句 185
7.3 for循环语句 187
7.4 while循环语句 191
7.5 until循环语句 193
7.6 select循环语句 194
7.7嵌套的循环 195
7.8循环控制与辅助编程命令 197
7.8.1 break和continue命令 197
7.8.2 true命令 199
7.8.3 sleep命令 199
7.8.4 shift命令 200
7.8.5 getopt命令 200
7.8.6 getopts命令 202
7.9循环语句的I/O重定向 204
7.9.1 while循环的I/O重定向 205
7.9.2 until循环的I/O重定向 206
7.9.3 for循环的I/O重定向 206
7.10 here文档 207
7.11 Shell函数 212
7.12逻辑与和逻辑或并列结构 218
7.12.1逻辑与命令并列结构 218
7.12.2逻辑或命令并列结构 219
7.13 Shell数组 220
7.14信号的捕捉与处理 225
7.15 其他Shell课题 229
7.15.1子Shell 229
7.15.2 Shell脚本的调试 230
7.15.3系统性能考虑 235
第8章 进程管理 237
8.1 ps命令概述 237
8.2查询进程及其状态信息 239
8.2.1查询当前活动的进程 239
8.2.2查询系统中所有的进程 240
8.2.3显示进程的重要状态信息 241
8.2.4显示进程的详细状态信息 241
8.3监控进程及系统资源 242
8.4终止进程的运行 245
8.5调整进程的调度类别及优先级 248
8.5.1显示进程的调度类别与优先级 248
8.5.2按照指定的调度类别与优先级运行进程 249
8.5.3调整进程的调度类别与优先级 250
8.5.4设置实时进程的时间片 250
8.6调整分时进程的优先级 251
8.6.1 nice命令 251
8.6.2 renice命令 252
8.6.3调整进程优先级的作用 252
8.7定时运行系统任务和用户程序 253
8.7.1 cron守护进程的调度过程 253
8.7.2调度定时重复执行的任务 255
8.7.3提交一次性定时执行的任务 255
8.8调度重复执行的任务 255
8.8.1 crontab的工作原理 256
8.8.2创建和编辑crontab文件 257
8.8.3显示crontab文件 258
8.8.4删除crontab文件 258
8.8.5 crontab命令的访问控制 259
8.8.6应用实例——数据库定时备份 260
8.9调度一次性执行的作业 261
8.9.1提交at作业 261
8.9.2显示at作业及作业队列 263
8.9.3删除at作业 263
8.9.4 at命令的访问控制 263
8.9.5应用实例——系统定时关机 264
第9章 用户管理 266
9.1增加与删除用户 266
9.1.1 /etc/passwd文件 266
9.1.2 /etc/shadow文件 267
9.1.3用户管理实例 268
9.2定制用户的工作环境 272
9.2.1选择命令解释程序 272
9.2.2设置用户初始化文件 273
9.2.3定制Shell工作环境 275
9.3增加与删除用户组 280
9.4监控用户 281
9.4.1利用who命令查询系统中的用户 282
9.4.2利用finger命令查询系统中的用户 283
9.4.3利用w命令查询系统中的用户活动 283
9.4.4向注册用户发送消息 284
9.5以不同用户的身份访问系统 284
第10章 软件包的制作与管理 287
10.1软件包组成简介 287
10.1.1基本组成部分 287
10.1.2选用的信息文件 288
10.1.3选用的Shell脚本文件 288
10.2软件包的相关文件和命令 288
10.2.1 pkginfo文件 289
10.2.2 prototype文件 290
10.2.3 pkgmap文件 293
10.2.4 copyright文件 293
10.2.5 depend文件 294
10.2.6 space文件 294
10.2.7 compver文件 295
10.2.8软件包的相关工具 295
10.3制作软件包 295
10.3.1制作软件包的步骤 296
10.3.2创建pkginfo文件 301
10.3.3利用pkgproto命令创建prototype文件 301
10.3.4利用pkgmk命令制作软件包 304
10.3.5 pkgtrans命令 308
10.4安装软件包 310
10.5查询软件包 312
10.6检测软件包 313
10.7卸载软件包 315
第11章 磁盘空间管理 318
11.1查询磁盘空间信息 318
11.1.1常用的磁盘空间管理工具 318
11.1.2使用df命令检查存储空间的使用情况 318
11.1.3使用du命令检查存储空间占用情况 321
11.1.4使用quot命令查询每个用户占用的存储空间 323
11.1.5使用find命令找出超大容量的文件 324
11.1.6使用find命令找出长期闲置的文件 324
11.1.7使用find命令找出并删除core文件 325
11.1.8使用ls命令检测文件的大小 325
11.2采用标准工具备份与恢复数据 326
11.2.1利用cpio实现备份和恢复 327
11.2.2利用tar实现备份和恢复 333
11.2.3利用dd实现数据的复制 337
11.3文件系统限额管理 339
11.3.1限额概述 339
11.3.2设置限额 341
11.3.3限额的维护 343
第12章 TCP/IP网络管理 347
12.1 TCP/IP简介 347
12.1.1 TCP/IP协议的层次结构 347
12.1.2 TCP/IP协议如何处理数据通信 349
12.2网络接口设置 351
12.3主机名字解析 353
12.4网络路由设置 354
12.4.1静态路由 354
12.4.2动态路由 355
12.5配置网络服务 356
12.6网络管理与维护 358
12.6.1使用ifconfig命令维护网络接口 358
12.6.2使用netstat命令监控网络状态 359
12.6.3使用ping命令测试远程主机的连通性 363
12.6.4使用ftp命令检测网络主机的传输性能 364
12.6.5使用traceroute命令跟踪路由信息 365
第13章 TCP/IP网络应用 367
13.1 OpenSSH 367
13.1.1 sshd _config配置文件 367
13.1.2 ssh_config配置文件 370
13.1.3使用SSH注册到远程系统 372
13.1.4使用SSH执行远程系统中的命令 373
13.1.5使用SCP替代FTP 373
13.1.6使用SFTP替代FTP 374
13.1.7 SSH与SCP的无密码注册 375
13.1.8 OpenSSH的安全考虑 377
13.2 Telnet远程系统注册 378
13.3 FTP文件传输 379
13.3.1连接FTP服务器 381
13.3.2 FTP应用 382
13.3.3 FTP访问控制 384
13.3.4 FTP自动注册 384
第14章 网络文件系统 386
14.1 NFS简述 386
14.2配置NFS服务器 387
14.3配置NFS客户系统 390
14.3.1安装远程文件系统 390
14.3.2设置/etc/vfstab文件 392
14.4 NFS自动安装 392
14.4.1主映射文件 393
14.4.2直接映射文件 394
14.4.3间接映射文件 394
第15章 系统启动与关机 396
15.1磁盘分区与初始引导 396
15.1.1磁盘分区 396
15.1.2初始引导过程 399
15.1.3系统初始化 400
15.2 init进程与系统生成 402
15.2.1运行级 403
15.2.2 /etc/inittab文件 405
15.2.3处理方式 405
15.2.4 /etc/inittab文件举例 406
15.2.5启动用户定义的应用程序 409
15.3用户注册过程 409
15.3.1用户注册的处理过程 409
15.3.2 utmpx和wtmpx文件 410
15.4系统关机过程 411
15.4.1使用shutdown命令关闭系统 411
15.4.2使用init命令关闭系统 412
15.4.3使用其他命令关机 412
15.5应用实例 413
第16章 文件系统内部组织 415
16.1文件系统的组织结构 415
16.2超级块 417
16.3信息节点 418
16.3.1特权标志位 418
16.3.2数据块地址数组 420
16.4数据区与空闲数据存储块的组织 421
16.5信息节点的分配与释放 421
16.6数据块的分配与释放 422
16.7信息节点与目录和文件的关系 424
16.8 UFS文件系统 424
16.8.1 UFS文件系统的组织结构 424
16.8.2引导块 425
16.8.3超级块 425
16.8.4柱面组信息块 426
16.8.5信息节点区与信息节点 428
16.8.6数据块区 429
16.8.7数据块的分配与释放过程 429
16.8.8信息节点的分配与释放过程 430
第17章 文件系统管理 432
17.1创建文件系统 432
17.1.1使用mkfs命令创建UFS文件系统 432
17.1.2使用newfs命令创建文件系统 436
17.2使用labelit命令命名文件系统 438
17.3安装、卸载文件系统 438
17.3.1安装文件系统 438
17.3.2 /etc/vfstab文件 439
17.3.3安装文件系统 441
17.3.4卸载文件系统 442
17.4确定文件系统的类型 444
17.5检测与修复文件系统 446
17.5.1何时需要检测文件系统 447
17.5.2文件系统检测的内容 448
17.5.3交互检测与修复UFS文件系统 452
17.5.4自动检测与修复UFS文件系统 454
17.5.5恢复严重受损的超级块 454
17.5.6解决fsck命令无法修复的UFS文件系统问题 455
17.5.7 fsck的阶段处理方式 456
17.5.8利用其他工具修复文件系统 463
参考文献 466