第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的逻辑组织结构 11
1.3.1 进程管理子系统 12
1.3.3 文件管理子系统 13
1.3.2 内存管理子系统 13
1.3.4 I/O管理子系统 14
1.3.5 硬件系统 14
第2章 UNIX系统入门 15
2.1 命令行结构 15
2.2 后台进程 18
2.3 标准输入、标准输出与标准错误输出 19
2.4 输入输出重定向 20
2.5 管道 25
2.6 元字符与文件名生成 27
2.7 转义与引用 30
2.8 命令历史 33
2.8.1 fc命令 34
2.8.2 history命令 37
2.8.4 编辑并执行校正后的命令 38
2.8.3 重复执行先前的命令 38
2.9 命令别名 39
2.10 作业控制 42
2.11 查阅联机文档 45
2.12 命令行的解释执行过程 46
2.12.1 读取命令行 46
2.12.2 回显输入的命令 46
2.12.3 变量替换 47
2.12.4 命令替换 47
2.12.5 I/O重定向 48
2.12.6 IFS处理 49
2.12.7 元字符扩展与文件名生成 49
2.12.11 执行命令 50
2.12.10 环境处理 50
2.12.9 跟踪执行过程 50
2.12.8 引号引用处理 50
2.12.12 实例验证 51
2.13 定制Shell工作环境 52
2.13.1 设置环境变量 52
2.13.2 设置命令检索路径 53
2.13.3 定制命令提示符 53
2.13.4 定义命令别名 55
2.13.5 设定中文运行环境 55
2.13.6 定制.profile初始化文件 55
第3章 文件系统基础知识 56
3.1 文件系统的层次结构 56
3.1.1 树形结构 56
3.1.2 路径名 57
3.2 文件系统的组织结构 58
3.3 文件的类型 59
3.3.1 普通文件 60
3.3.2 目录文件 61
3.3.3 特殊文件 64
3.3.4 链接文件 67
3.3.5 符号链接文件 68
3.3.6 管道文件 70
第4章 文件和目录操作 71
4.1 创建文件 71
4.2 显示文件列表 72
4.2.1 使用ls命令显示文件列表 72
4.2.2 利用通配符显示文件 74
4.2.3 列出隐藏文件 76
4.2.4 递归地列出文件 77
4.3 显示文件的内容 78
4.3.1 使用cat命令显示文件 78
4.3.2 使用more命令分页显示文件 78
4.3.3 使用pg命令分页显示文件 80
4.3.4 使用head命令显示文件前几行内容 80
4.3.5 使用tail命令显示文件最后几行内容 81
4.4 复制文件 81
4.5 移动文件 82
4.6 删除文件 84
4.7 确定文件内容的类型 85
4.8 建立链接和符号链接文件 85
4.9 显示当前工作目录 87
4.10 改换目录 87
4.12 移动目录 89
4.11 创建目录 89
4.13 复制目录 90
4.14 删除目录 91
4.15 比较文件之间的差别 91
4.15.1 使用diff命令比较两个文件 91
4.15.2 使用diff3命令比较三个文件 92
4.15.3 使用bdiff命令比较大型文件 94
4.16 检索文件 94
4.16.1 简单检索 95
4.16.2 使用逻辑运算符 95
4.16.3 利用find命令本身实现其他处理功能 96
4.16.4 利用管道实现其他处理功能 96
4.17 文件目录的安全机制 97
4.17.1 显示文件的访问权限 97
4.17.2 修改文件目录的访问权限 98
4.17.3 设置文件目录的访问权限 100
4.17.4 其他访问权限设置 103
4.18 文件内容检索 104
4.18.1 利用grep检索文件内容 104
4.18.2 使用grep进行过滤 105
4.18.3 使用grep检索多个文件 105
4.18.4 检索不包含特定字符串的文本行 106
4.18.5 在grep中使用正则表达式 106
4.18.6 检索元字符本身 108
4.18.7 在命令行中使用引号 108
第5章 编辑文件 109
5.1 启动vi编辑器 109
5.1.1 创建文件 109
5.2 vi编辑器的两种工作模式 110
5.1.2 状态行 110
5.2.2 命令模式 111
5.3 保存编辑的文件并退出vi 111
5.2.1 输入模式 111
5.4 vi编辑器的基本命令 112
5.4.1 移动光标位置 112
5.4.2 输入文本 113
5.4.3 修改与替换文本 114
5.4.4 撤销先前的修改 114
5.4.5 删除文本 114
5.4.6 复制、删除与粘贴文本 115
5.4.7 按指定的数量重复执行命令 116
5.5 使用ex命令 116
5.5.1 显示行号 116
5.5.4 删除文本行 117
5.6 检索与替换 117
5.5.2 多行复制 117
5.5.3 移动文本行 117
5.6.1 检索字符串 118
5.6.2 模式检索 118
5.6.3 替换字符串 119
5.7 编辑多个文件 120
5.7.1 编辑多个文件 120
5.7.2 合并文件与合并文本行 120
5.8 定制vi编辑器的运行环境 120
5.8.1 临时设定vi的运行环境 120
5.8.2 永久性地定制vi的运行环境 122
5.9.2 在编辑期间运行UNIX命令 123
5.9.1 删除或替换特殊字符 123
5.9 其他特殊说明 123
5.10 vi编辑器命令总结 124
第6章 进程管理 127
6.1 ps命令概述 128
6.2 列出进程及其状态信息 130
6.2.1 列出经常请求运行的进程 130
6.2.2 列出系统中的所有进程 130
6.2.3 列出进程的重要状态信息 131
6.2.4 列出进程的详细状态信息 132
6.2.5 利用ps命令监控异常进程 132
6.3 监控进程及系统资源 132
6.4 强行终止进程的运行 135
6.5.1 显示进程调度的类别及优先级 137
6.5 调整进程的调度类别及优先级 137
6.5.2 调整进程的调度类别与优先级 138
6.5.3 修改分时进程的优先级 139
6.5.4 修改进程的调度类别 140
6.6 调整分时进程的优先级 141
6.7 定时运行系统任务和用户程序 143
6.7.1 cron监控进程的调度过程 143
6.7.2 调度定时重复执行的任务 145
6.7.3 提交一次性定时执行的任务:at 145
6.8 调度定时重复执行的任务 146
6.8.1 crontab文件的工作原理 146
6.8.2 crontab文件的语法格式 147
6.8.3 创建和编辑crontab文件 147
6.8.4 显示crontab文件 149
6.8.5 删除crontab文件 150
6.8.6 crontab命令的访问控制 151
6.8.7 应用实例——数据库定时备份 153
6.9 调度执行单个作业或任务 155
6.9.1 创建at作业 155
6.9.2 显示at作业及作业队列 156
6.9.3 删除at作业 157
6.9.4 at命令的访问控制 157
6.9.5 应用实例——系统定时关机 159
第7章 用户与用户组 161
7.1 增加与删除用户 161
7.1.1 /etc/passwd文件 162
7.1.2 /etc/shadow文件 163
7.1.3 用户管理实例 164
7.2.1 选择命令解释程序 168
7.2 定制用户的工作环境 168
7.2.2 设置用户初始化文件 171
7.3 增加与删除用户组 176
7.4 监控用户 179
7.4.1 使用who命令查询系统中的用户 179
7.4.2 使用finger命令查询系统中的用户 180
7.4.3 使用whodo命令查询系统中的用户活动 181
7.4.4 向注册用户发送消息 181
第8章 Shell基础知识 183
8.1 引言 183
8.1.1 为什么需要Shell编程 184
8.1.2 什么是Shell脚本 185
8.1.3 运行Shell脚本 185
8.1.4 退出与出口状态 186
8.1.5 调用适当的Shell解释程序 188
8.1.6 位置参数 189
8.2 变量与变量替换 192
8.2.1 变量分类 193
8.2.2 变量的赋值 193
8.2.3 内部变量 194
8.2.4 变量的引用与替换 196
8.2.5 变量的间接引用 198
8.2.6 特殊的变量替换 199
8.2.7 变量声明与类型定义 203
8.3 命令与命令替换 204
8.3.1 Shell内部命令 204
8.3.2 部分命令介绍 207
8.3.3 命令替换 216
8.4 test语句 218
8.4.1 文件测试运算符 219
8.4.2 字符串测试运算符 220
8.4.3 整数值测试运算符 222
8.4.4 逻辑运算符 223
第9章 Shell高级编程 226
9.1 if语句 226
9.1.1 if语句的表现形式 226
9.1.2 嵌套的if/then条件测试 229
9.1.3 if/then结构参考 231
9.2 case控制结构 233
9.3 for循环 236
9.4 while循环 240
9.5 until循环 245
9.6 select循环 246
9.7 嵌套的循环 248
9.8 循环控制 250
9.8.1 break和continue命令 250
9.8.2 true命令 252
9.8.3 sleep命令 252
9.8.4 shift命令 253
9.8.5 getopt命令 254
9.8.6 getopts命令 256
9.9 循环结构代码块的I/O重定向 258
9.9.1 while循环的I/O重定向 259
9.9.2 until循环的I/O重定向 260
9.9.3 for循环的I/O重定向 261
9.10 Here文档 262
9.11 函数 268
9.12 并列结构 276
9.12.1 逻辑与并列结构 276
9.12.2 逻辑或并列结构 278
9.13 数组 278
9.14 信号捕捉处理 285
9.15 其他Shell课题 290
9.15.1 子Shell 290
9.15.2 进程替换 292
9.15.3 调试 293
9.15.4 系统性能考虑 298
第10章 磁盘空间管理 300
10.1 磁盘空间管理 300
10.1.1 常用的磁盘空间管理工具 300
10.1.2 使用df命令检查磁盘空间的使用情况 301
10.1.3 使用du命令检查目录占用的存储空间 304
10.1.4 使用quot命令查询每个用户占用的存储空间 306
10.1.5 使用find命令找出超过一定容量限制的文件 307
10.1.6 使用find命令找出并删除长期闲置不用的文件 308
10.1.7 使用find命令找出并删除core文件 310
10.1.8 使用ls命令检测文件的大小 311
10.1.9 清除临时目录或文件 311
10.2 利用UNIX提供的标准工具进行备份 312
10.2.1 使用cpio执行备份和恢复 312
10.2.2 使用tar执行备份和恢复 320
10.2.3 使用dd命令实现文件系统的原样复制 325
10.3 限额控制 328
10.3.1 限额概述 328
10.3.2 设置限额 330
10.3.3 限额的维护 332
第11章 软件包的制作与管理 338
11.1 软件包组成简介 338
11.1.1 基本组成部分 339
11.1.2 选用的信息文件 339
11.1.3 选用的Shell脚本文件 339
11.2 软件包的相关文件和命令 339
11.2.1 pkginfo文件 340
11.2.2 prototype文件 341
11.2.3 pkgmap文件 344
11.2.4 copyright文件 345
11.2.5 depend文件 346
11.2.6 space文件 346
11.3 制作软件包 347
11.2.7 compver文件 347
11.2.8 软件包的相关工具 347
11.3.1 制作软件包的步骤 348
11.3.2 创建pkginfo文件 354
11.3.3 利用pkgproto命令创建prototype文件 355
11.3.4 利用pkgmk命令制作软件包 358
11.3.5 pkgtrans命令 364
11.4 安装软件包 365
11.5 查询软件包 369
11.6 检测软件包 370
11.7 卸载软件包 373
12.1 TCP/IP简介 377
12.1.1 TCP/IP协议的层次结构 377
第12章 TCP/IP网络通信 377
12.1.2 TCP/IP协议如何处理数据通信 379
12.2 设置网络接口 382
12.3 主机名字解析 385
12.4 设置网络路由 385
12.4.1 静态路由 386
12.4.2 动态路由 388
12.5 配置网络服务 390
12.6 TCP/IP网络管理 392
12.6.1 使用ifconfig命令管理接口配置 392
12.6.2 使用netstat命令监控网络状态 393
12.6.3 使用ping命令测试远程主机的连通性 398
12.6.4 启动路由监控进程的日志功能 399
12.6.5 使用traceroute命令跟踪路由信息 400
12.7.1 使用ping命令检测网络主机的响应能力 401
12.7 监控网络性能 401
12.7.2 使用ftp命令检测网络主机的传输性能 402
12.7.3 使用spray命令检测网络主机的可靠性和传输性能 403
12.7.4 通过netstat命令检测网络主机的可靠性和传输能力 404
12.8 检测网络问题 406
12.8.1 一般网络故障修复技巧 406
12.8.2 基本的网络软件检查 406
12.9 网络应用——Telnet 407
12.10 网络应用——FTP 410
12.10.1 连接FTP服务器 413
12.10.2 ftp应用 414
12.10.3 ftp访问控制 416
12.10.4 ftp自动注册 416
13.1 NFS的体系结构 418
第13章 网络文件系统 418
13.2 设置NFS服务器 419
13.3 共享本地文件系统 420
13.4 设置NFS客户机 423
13.5 安装远程文件系统 424
13.6 NFS性能监测 426
13.6.1 服务器性能监测 426
13.6.2 客户机性能监测 429
13.7 NFS故障修复策略 431
13.8 NFS故障修复步骤 432
13.8.1 检查NFS客户机的连接状态 432
13.8.2 检测远程NFS服务器 432
13.8.3 检验服务器上的NFS服务 434
13.8.4 重新启动NFS服务 435
13.8.6 查询提供NFS文件共享服务的主机 436
13.8.5 重新启动rpcbind 436
第14章 系统的启动与关机过程 437
14.1 UNIX系统的初始引导过程 437
14.1.1 引言 437
14.1.2 系统的初始引导过程 440
14.1.3 系统初始化 441
14.2 系统生成与init进程 443
14.2.1 运行级 444
14.2.2 改变运行级 446
14.2.3 /etc/inittab文件 446
14.2.4 处理方式 447
14.2.5 /etc/inittab文件举例 448
14.3.1 用户注册进程的启动过程 452
14.3 用户注册进程 452
14.2.6 修改inittab文件 452
14.3.2 sac进程与_sactab文件 454
14.3.3 ttymon进程与ttydefs文件 455
14.3.4 login进程与passwd文件 455
14.3.5 Shell进程与profile文件 455
14.3.6 utmpx和wtmpx文件 455
14.4 系统的关机过程 456
14.4.1 使用shutdown命令关闭系统 456
14.4.2 使用init命令关闭系统 457
14.5 应用实例 458
第15章 文件系统内部组织 461
15.1 文件系统的组织结构 461
15.2 超级块 464
15.3 信息节点 465
15.3.1 特权标志位 466
15.3.2 数据块地址数组 467
15.4 数据区与空闲数据存储块的组织 468
15.5 信息节点的分配与释放 469
15.6 数据块的分配与释放 470
15.7 信息节点与目录和文件的关系 473
15.8 UFS文件系统 473
15.8.1 UFS文件系统的组织结构 473
15.8.2 引导块 474
15.8.3 超级块 474
15.8.4 柱面组信息块 475
15.8.5 信息节点区与信息节点 477
15.8.6 数据块区 479
15.8.7 UFS数据块的分配与释放过程 479
15.8.9 定制UFS文件系统参数 481
15.8.8 UFS信息节点的分配与释放过程 481
第16 章文件系统管理 484
16.1 创建文件系统 485
16.1.1 创建s5文件系统 485
16.1.2 使用mkfs命令创建UFS文件系统 485
16.1.3 使用newfs命令创建文件系统 490
16.2 使用labelit命令命名文件系统 492
16.3 安装、卸载文件系统 492
16.3.1 安装文件系统概述 492
16.3.2 /etc/vfstab文件 494
16.3.3 安装文件系统 495
16.3.4 卸载文件系统 500
16.4 确定文件系统的类型 502
16.4.1 使用vfstab文件确定文件系统的类型 502
16.4.2 使用fstyp命令确定文件系统的类型 503
16.5 检测与修复文件系统 505
16.5.1 何时需要检测文件系统 505
16.5.2 文件系统检测的内容 507
16.5.3 交互地检测与修复UFS文件系统 510
16.5.4 自动地检测与修复UFS文件系统 513
16.5.5 解决fsck命令无法修复的UFS文件系统问题 514
16.5.6 恢复严重受损的超级块 514
16.5.7 fsck的阶段处理方式 516
16.5.8 利用其他工具修复文件系统 525
附录A 安装UNIX操作系统 528
A.1 下载Solaris操作系统 528
A.2 安装Solaris操作系统 528
A.2.1 硬件要求 528
A.2.2 安装前的准备工作 528
A.2.3 Solaris操作系统的安装步骤 532
附录B 通用桌面环境简介 543
B.1 注册到CDE桌面系统 543
B.1.1 注册 544
B.1.2 在会话期间选用不同的语言 545
B.1.3 使用命令行会话 545
B.1.4 退出系统 546
B.1.5 恢复主会话 546
B.2 CDE桌面系统 546
B.2.1 CDE桌面 546
B.2.2 CDE工作区 547
B.2.3 前面板 547
B.2.4 工作区菜单 549
B.3 文件管理器 550
B.4.3 从应用管理器中运行应用 551
B.4.2 从CDE工作区菜单中运行应用 551
B.4 运行应用程序 551
B.4.1 前面板中运行应用 551
B.4.4 从文件管理器中运行应用 552
B.4.5 从终端窗口运行应用 552
B.5 应用管理器 552
B.6 式样管理器 553
B.7 文本编辑器 553
B.8 终端窗口 554
B.9 移动介质管理器 555
B.10 管理注册服务器 555
B.10.1 启动注册服务器 556
B.10.2 停止注册服务器 556
B.11 定制注册界面 557
B.11.1 定制注册屏幕的外观表现形式 558
B.11.2 指定CDE桌面会话过程中使用的默认语言 560
B.11.3 限定注册界面语言选择菜单中的语言列表 560
B.12 实现本地化的CDE桌面会话 561
B.12.1 设置LANG环境变量 561
B.12.2 设置其他环境变量 563
B.12.3 app-defaults资源文件的本地化 563
B.12.4 背景的本地化 563
B.12.5 调色板的本地化 563
B.12.6 帮助文件的本地化 564
B.12.7 NLSPATH变量与消息分类文件的本地化 564
B.12.8 使用指定的语言创建或编辑文件 564
B.12.9 使用指定的语言执行终端仿真程序 565
B.12.10 使用指定的字体 565