第1章 Linux系统概述 1
1.1计算机基础知识 1
1.1.1硬件 1
1.1.2软件 1
1.2操作系统的功能 3
1.2.1硬件控制 3
1.2.2资源管理 3
1.2.3用户接口 3
1.2.4输入和输出处理 5
1.2.5系统监控 5
1.2.6通信 5
1.3 Linux系统的历史、现状和特点 6
1.3.1 Linux的历史 6
1.3.2 Linux的现状 6
1.3.3 Linux的特点 7
1.3.4 Linux的版本 8
1.3.5 Linux的发展优势与存在的问题 10
1.4 Linux系统安装 10
1.4.1基本硬件需求 11
1.4.2安装前的准备 11
1.4.3利用PQMagic8.0划分分区 13
1.4.4安装过程 15
1.4.5登录和退出系统 21
1.4.6常用硬件配置 22
1.4.7安装软件工具 25
1.5在虚拟机上安装Linux 26
1.6 Linux图形环境 27
1.6.1 XWindow系统 28
1.6.2 GNOME桌面系统 30
1.6.3 KDE桌面系统 30
思考题 1 34
第2章Linux常用命令 35
2.1使用命令 35
2.1.1进入shell界面 35
2.1.2命令格式 36
2.1.3输入命令 36
2.2简单命令 37
2.3文件概念和文件类型 38
2.3.1文件系统的概念 38
2.3.2文件类型 39
2.4文件操作命令 41
2.4.1文件显示命令 41
2.4.2匹配、排序及显示指定内容的命令 44
2.4.3比较文件内容的命令 46
2.4.4复制、删除和移动文件的命令 47
2.4.5文件内容统计命令 49
2.5目录及其操作命令 50
2.5.1目录结构 50
2.5.2创建和删除目录的命令 52
2.5.3改变工作目录和显示目录内容的命令 54
2.5.4链接文件的命令 56
2.5.5改变文件或目录存取权限的命令 58
2.5.6改变用户组和文件主的命令 62
2.6联机帮助命令 63
2.6.1 man命令 63
2.6.2 help命令 64
2.7有关进程管理的命令 65
2.7.1 ps命令 65
2.7.2 kill命令 67
2.7.3 sleep命令 68
2.8文件压缩和解压缩命令 68
2.8.1 gzip命令 68
2.8.2 unzip命令 69
2.9有关DOS命令 70
思考题2 71
第3章 文本编辑 72
3.1 vi的工作方式 72
3.1.1命令方式 72
3.1.2输入方式 72
3.1.3 ex转义方式 73
3.2进入和退出vi 74
3.2.1进入vi 74
3.2.2退出vi 74
3.3文本输入 75
3.3.1插入命令 75
3.3.2附加命令 75
3.3.3打开命令 76
3.3.4输入方式下光标的移动 76
3.4移动光标 77
3.5文本修改 78
3.6编辑文件 79
3.7字符串检索 80
3.8 ex命令 81
3.8.1命令定位 81
3.8.2常用ex命令 82
思考题3 83
第4章 Linux shell程序设计 84
4.1 shell概述 84
4.1.1 shell的特点和主要版本 84
4.1.2简单shell程序示例 85
4.1.3 shell脚本的建立和执行 86
4.2命令历史 87
4.2.1显示历史命令 88
4.2.2执行历史命令 88
4.2.3配置历史命令环境 89
4.3名称补全 90
4.4别名 90
4.4.1定义别名 90
4.4.2取消别名 91
4.5 shell特殊字符 92
4.5.1通配符 92
4.5.2引号 93
4.5.3输入/输出重定向符 95
4.5.4注释、管道线和后台命令 98
4.5.5命令执行操作符 99
4.5.6成组命令 100
4.6 shell变量 101
4.6.1用户定义的变量 101
4.6.2数组 103
4.6.3变量引用 105
4.6.4输入/输出命令 106
4.6.5位置参数 108
4.6.6移动位置参数 109
4.6.7预先定义的特殊变量 110
4.6.8环境变量 112
4.6.9环境文件 114
4.6.10 export语句与环境设置 114
4.7参数置换变量 118
4.8算术运算 120
4.9控制结构 122
4.9.1 if语句 122
4.9.2条件测试 124
4.9.3 case语句 127
4.9.4 while语句 129
4.9.5 until语句 130
4.9.6 for语句 130
4.9.7 break命令和continue命令 133
4.9.8 exit命令 134
4.10函数 135
4.11作业控制 136
4.11.1 jobs命令 137
4.11.2 kill命令 137
4.12 shell内置命令 137
4.13 shell脚本调试 140
4.13.1解决环境设置问题 141
4.13.2解决脚本错误 141
4.14 shell脚本示例 142
思考题4 144
第5章Linux内核简介 146
5.1概述 146
5.2进程管理 147
5.2.1进程和线程的概念 148
5.2.2进程的结构 150
5.2.3对进程的操作 151
5.2.4进程调度 152
5.2.5 shell基本工作原理 154
5.3文件系统 155
5.3.1 ext2文件系统 155
5.3.2虚拟文件系统 160
5.4内存管理 164
5.4.1请求分页机制 164
5.4.2内存交换 168
5.5进程通信 168
5.5.1信号机制 169
5.5.2管道文件 171
5.5.3 System V IPC机制 172
5.6设备管理 172
5.6.1设备管理概述 172
5.6.2设备驱动程序和内核之间的接口 173
5.7中断、异常和系统调用 175
5.7.1中断处理 176
5.7.2系统调用 177
5.8网络系统 177
5.8.1 socket 177
5.8.2网络分层结构 178
思考题5 179
第6章 常用开发工具 180
6.1 gcc编译系统 180
6.1.1文件名后缀 180
6.1.2 C语言编译过程 181
6.1.3 gcc命令行选项 182
6.2 gdb程序调试工具 187
6.2.1启动gdb和查看内部命令 187
6.2.2显示源程序和数据 189
6.2.3改变和显示目录或路径 192
6.2.4控制程序的执行 193
6.2.5其他常用命令 196
6.2.6应用示例 196
6.3程序维护工具make 199
6.3.1 make的工作机制 199
6.3.2使用变量 202
6.3.3隐式规则 203
6.3.4 make命令常用选项 204
思考题6 205
第7章Linux环境编程 207
7.1系统调用和库函数 207
7.1.1系统调用 207
7.1.2库函数 207
7.1.3调用方式 208
7.2文件操作 209
7.2.1有关文件操作的系统调用 209
7.2.2应用示例 210
7.3进程控制 214
7.3.1有关进程控制的系统调用 214
7.3.2应用示例 215
7.4进程通信 217
7.4.1有关进程通信的函数 217
7.4.2应用示例 219
7.5内存管理 222
7.6综合编程示例 223
思考题7 225
第8章 Linux系统管理 226
8.1系统管理概述 226
8.2用户和工作组管理 227
8.2.1有关用户账号的文件 227
8.2.2用户账号的创建和维护 230
8.2.3用户磁盘空间限制及其实现 236
8.3文件系统及其维护 238
8.3.1分区 238
8.3.2文件系统 243
8.3.3 Linux主要目录的内容 247
8.4文件系统的备份 249
8.4.1备份概述 249
8.4.2备份策略 250
8.4.3恢复备份文件 252
8.5系统安全管理 252
8.5.1安全管理 252
8.5.2安全管理要素 253
8.5.3用户密码和账号的管理 254
8.5.4文件和目录权限的管理 255
8.5.5系统日志 256
8.6系统性能优化 258
8.6.1磁盘I/O性能的优化 258
8.6.2执行进程的调度 259
思考题8 260
第9章 网络应用及管理 261
9.1配置网络 261
9.1.1配置网卡 261
9.1.2网络互连 263
9.1.3基本网络命令 263
9.2电子邮件 267
9.2.1电子邮件系统简介 267
9.2.2配置邮件环境 269
9.3网络文件系统NFS 274
9.3.1 NFS简介 274
9.3.2 NFS的配置及使用 275
9.4网络管理 277
9.4.1网络管理简介 277
9.4.2 SNMP 278
9.4.3基于SNMP的管理应用程序 281
9.5网络安全 283
9.5.1网络安全简介 283
9.5.2 Linux安全问题及对策 286
9.5.3网络安全工具 294
思考题9 296
第10章 嵌入式操作系统简介 297
10.1嵌入式系统概述 297
10.2嵌入式操作系统概述 298
10.2.1嵌入式软件系统的体系结构 298
10.2.2嵌入式操作系统 299
10.3实时内核及其实现 300
10.3.1任务管理与调度 300
10.3.2中断和时间管理 302
10.3.3任务间同步、互斥与通信及其实现 303
10.3.4内存管理和I/O管理 305
10.4嵌入式操作系统实例——gCLinux 308
思考题10 310
附录A 实验大纲 311
实验一 Linux系统安装与简单配置(3~4学时) 311
实验二 常用命令使用(2~4学时) 312
实验三 vi编辑器(2~4学时) 313
实验四 shell编程(3~6学时) 313
实验五 常用开发工具(3~6学时) 314
实验六 Linux环境编程(3~6学时) 315
实验七 系统及网络管理(2~6学时) 315
参考文献 316