本书讲解了Linux操作系统的工作机制以及运行Linux系统所需的常用工具和命令。根据系统启动的大体顺序,本书更深入地介绍从设备管理到网络配置的各个部分,最后演示了系统各部分的运行方式,并介绍了一些基本技巧和开发人员常用的工具。
Linux不像其他操作,会对用户隐藏很多重要的东西。相反,Linux会让用户掌控一切。而要掌控一切,就必须理解这个操作系统的工作机制,包括如何启动、如何连网,以及Linux内核如何工作。本书是畅销书的新版本,作者拥有多年的实践经验,内容通俗易懂。通过这本书,读者可以迅速从Linux新手变成老鸟,把作者丰富的经验装进自己的知识库。
第1章 概述1
1.1 Linux操作系统中的抽象级别和层次2
1.2 硬件系统:理解主内存3
1.3 内核3
1.3.1 进程管理4
1.3.2 内存管理5
1.3.3 设备驱动程序和设备管理5
1.3.4 系统调用和系统支持5
1.4 用户空间6
1.5 用户7
1.6 前瞻8
第2章 基础命令和目录结构9
2.1 Bourne shell: /bin/sh9
2.2 shell的使用10
2.2.1 shell窗口10
2.2.2 cat命令11
2.2.3 标准输入输出11
2.3 基础命令11
2.3.1 ls命令12
2.3.2 cp命令12
2.3.3 mv命令12
2.3.4 touch命令13
2.3.5 rm命令13
2.3.6 echo命令13
2.4 浏览目录13
2.4.1 cd命令14
2.4.2 mkdir命令14
2.4.3 rmdir命令14
2.4.4 shell通配符14
2.5 中间命令15
2.5.1 grep命令15
2.5.2 less命令16
2.5.3 pwd命令16
2.5.4 diff命令16
2.5.5 file命令17
2.5.6 find和locate命令17
2.5.7 head和tail命令17
2.5.8 sort命令17
2.6 更改密码和shell18
2.7 dot文件18
2.8 环境变量和shell变量18
2.9 命令路径19
2.10 特殊字符19
2.11 命令行编辑20
2.12 文本编辑器21
2.13 获取在线帮助21
2.14 shell输入输出23
2.14.1 标准错误输出23
2.14.2 标准输入重定向24
2.15 理解错误信息24
2.15.1 解析Unix的错误信息24
2.15.2 常见错误25
2.16 查看和操纵进程26
2.16.1 命令选项26
2.16.2 终止进程27
2.16.3 任务控制27
2.16.4 后台进程28
2.17 文件模式和权限28
2.17.1 更改文件权限29
2.17.2 符号链接30
2.17.3 创建符号链接30
2.18 归档和压缩文件31
2.18.1 gzip命令31
2.18.2 tar命令31
2.18.3 压缩归档文件(.tar.gz)32
2.18.4 zcat命令32
2.18.5 其他的压缩命令33
2.19 Linux目录结构基础33
2.19.1 root目录下的其他目录34
2.19.2 /usr目录35
2.19.3 内核位置35
2.20 以超级用户的身份运行命令35
2.20.1 sudo命令35
2.20.2 /etc/sudoers35
2.21 前瞻36
第3章 设备管理37
3.1 设备文件37
3.2 sysfs设备路径38
3.3 dd命令和设备39
3.4 设备名总结40
3.4.1 硬盘:/dev/sd*40
3.4.2 CD和DVD:/dev/sr*41
3.4.3 PATA 硬盘:/dev/hd*41
3.4.4 终端设备/dev/tty/*、/dev/pts/*和/dev/tty41
3.4.5 串行端口:/dev/ttyS*42
3.4.6 并行端口:/dev/lp0 和/dev/lp142
3.4.7 音频设备:/dev/snd/*、/dev/dsp、/dev/audio 和其他43
3.4.8 创建设备文件43
3.5 udev44
3.5.1 devtmpfs44
3.5.2 udevd的操作和配置44
3.5.3 udevadm46
3.5.4 设备监控47
3.6 详解SCSI和Linux内核47
3.6.1 USB存储设备和SCSI50
3.6.2 SCSI和ATA50
3.6.3 通用SCSI设备51
3.6.4 访问设备的多种方法51
第4章 硬盘和文件系统53
4.1 为磁盘设备分区55
4.1.1 查看分区表55
4.1.2 更改分区表56
4.1.3 磁盘和分区的构造57
4.1.4 固态硬盘58
4.2 文件系统59
4.2.1 文件系统类型59
4.2.2 创建文件系统60
4.2.3 挂载文件系统60
4.2.4 文件系统UUID 62
4.2.5 磁盘缓冲、缓存和文件系统 62
4.2.6 文件系统挂载选项63
4.2.7 重新挂载文件系统64
4.2.8 /etc/fstab文件系统表64
4.2.9 /etc/fstab的替代者65
4.2.10 文件系统容量65
4.2.11 检查和修复文件系统.66
4.2.12 特殊用途的文件系统.68
4.3 交换空间68
4.3.1 使用磁盘分区作为交换空间 69
4.3.2 使用文件作为交换空间 69
4.3.3 你需要多大的交换空间 69
4.4 前瞻:磁盘和用户空间70
4.5 深入传统文件系统70
4.5.1 查看inode细节72
4.5.2 在用户空间中使用文件系统 73
4.5.3 文件系统的演进73
第5章 Linux内核的启动75
5.1 启动消息75
5.2 内核初始化和启动选项76
5.3 内核参数77
5.4 引导装载程序78
5.4.1 引导装载程序任务78
5.4.2 引导装载程序概述79
5.5 GRUB 简介79
5.5.1 使用GRUB命令行浏览设备和分区81
5.5.2 GRUB配置信息83
5.5.3 安装GRUB84
5.6 UEFI 安全启动的问题86
5.7 链式加载其他操作系统86
5.8 引导装载程序细节86
5.8.1 MBR启动87
5.8.2 UEFI启动87
5.8.3 GRUB工作原理87
第6章 用户空间的启动89
6.1 init介绍89
6.2 System V运行级别90
6.3 识别你的init91
6.4 systemd91
6.4.1 单元和单元类型91
6.4.2 systemd中的依赖关系92
6.4.3 systemd配置94
6.4.4 systemd操作96
6.4.5 在systemd中添加单元98
6.4.6 systemd进程跟踪和同步99
6.4.7 systemd的按需和资源并行启动99
6.4.8 systemd的System V兼容性103
6.4.9 systemd辅助程序103
6.5 Upstart104
6.5.1 Upstart初始化过程104
6.5.2 Upstart任务105
6.5.3 Upstart配置107
6.5.4 Upstart操作110
6.5.5 Upstart日志111
6.5.6 Upstart运行级别和System V兼容性111
6.6 System V init112
6.6.1 System V init启动命令顺序113
6.6.2 System V init链接池114
6.6.3 run-parts115
6.6.4 System V init控制115
6.7 关闭系统116
6.8 initramfs117
6.9 紧急启动和单用户模式118
第7章 系统配置:日志、系统时间、批处理任务和用户119
7.1 /etc目录结构119
7.2 系统日志120
7.2.1 系统日志120
7.2.2 配置文件120
7.3 用户管理文件122
7.3.1 /etc/passwd文件122
7.3.2 特殊用户123
7.3.3 /etc/shadow文件124
7.3.4 用户和密码管理124
7.3.5 用户组124
7.4 getty和login125
7.5 设置时间125
7.5.1 内核时间和时区126
7.5.2 网络时间127
7.6 使用cron来调度日常任务127
7.6.1 安装crontab文件128
7.6.2 系统crontab文件128
7.6.3 cron的未来129
7.7 使用at进行一次性任务调度129
7.8 了解用户ID和用户切换129
7.9 用户标识和认证131
7.10 PAM132
7.10.1 PAM配置133
7.10.2 关于PAM的一些注解135
7.10.3 PAM和密码136
7.11 前瞻136
第8章 进程与资源利用详解137
8.1 进程跟踪137
8.2 使用lsof 查看打开的文件138
8.2.1 lsof输出138
8.2.2 lsof的使用139
8.3 跟踪程序执行和系统调用139
8.3.1 strace命令139
8.3.2 ltrace命令141
8.4 线程141
8.4.1 单线程进程和多线程进程141
8.4.2 查看线程142
8.5 资源监控简介143
8.6 测量CPU时间143
8.7 调整进程优先级144
8.8 平均负载145
8.8.1 uptime的使用145
8.8.2 高负载145
8.9 内存146
8.9.1 内存工作原理146
8.9.2 内存页面错误146
8.10 使用vmstat监控CPU和内存性能147
8.11 I/O监控149
8.11.1 使用iostat149
8.11.2 使用iotop查看进程的I/O使用和监控150
8.12 使用pidstat监控进程151
8.13 更深入的主题151
第9章 网络与配置153
9.1 网络基础153
9.2 网络层次154
9.3 网际层155
9.3.1 查看自己计算机的IP 地址156
9.3.2 子网157
9.3.3 共用子网掩码与无类域内路由选择157
9.4 路由和内核路由表158
9.5 基本ICMP和DNS工具159
9.5.1 ping159
9.5.2 traceroute160
9.5.3 DNS与host160
9.6 物理层与以太网161
9.7 理解内核网络接口161
9.8 配置网络接口162
9.9 开机启动的网络配置163
9.10 手动和开机启动的网络配置带来的问题163
9.11 一些网络配置管理器164
9.11.1 NetworkManager的操作164
9.11.2 与NetworkManager交互164
9.11.3 NetworkManager的配置165
9.12 解析主机名166
9.12.1 /etc/hosts167
9.12.2 resolv.conf 文件167
9.12.3 缓存和零配置DNS167
9.12.4 /etc/nsswitch.conf文件168
9.13 Localhost168
9.14 传输层:TCP、UDP和Service169
9.14.1 TCP 端口与连接169
9.14.2 建立TCP连接169
9.14.3 端口的数字和/etc/services 170
9.14.4 TCP的特点171
9.14.5 UDP171
9.15 普通本地网络172
9.16 理解DHCP173
9.16.1 Linux的DHCP客户端 173
9.16.2 Linux的DHCP服务器 173
9.17 将Linux配置成路由器174
9.18 私有网络175
9.19 网络地址转换(IP伪装) 176
9.20 路由器与Linux177
9.21 防火墙177
9.21.1 Linux防火墙基础178
9.21.2 设置防火墙规则179
9.21.3 防火墙策略181
9.22 以太网、IP和ARP182
9.23 无线以太网183
9.23.1 iw184
9.23.2 无线网络安全184
9.24 小结185
第10章 网络应用与服务186
10.1 服务的基本概念186
10.2 网络服务器188
10.3 SSH189
10.3.1 SSHD服务器190
10.3.2 SSH客户端191
10.4 守护进程inetd和xinetd193
10.5 诊断工具193
10.5.1 lsof194
10.5.2 tcpdump195
10.5.3 netcat196
10.5.4 扫描端口197
10.6 远程程序调用198
10.7 网络安全198
10.7.1 典型漏洞199
10.7.2 安全资源199
10.8 前瞻200
10.9 套接字:进程与网络的通信方式 200
10.10 Unix域套接字201
10.10.1 对开发者的好处.201
10.10.2 列出Unix域套接字 202
第11章 shell脚本203
11.1 shell脚本基础203
11.2 引号与字面量204
11.2.1 字面量205
11.2.2 单引号205
11.2.3 双引号205
11.2.4 单引号的字面义206
11.3 特殊变量206
11.3.1 单个参数:$1,$2,…… 207
11.3.2 参数的数量:$#207
11.3.3 所有参数:$@207
11.3.4 脚本名:$0208
11.3.5 进程号:$$208
11.3.6 退出码:$?208
11.4 退出码208
11.5 条件判断209
11.5.1 防范空参数209
11.5.2 使用其他命令来测试210
11.5.3 elif210
11.5.4 逻辑结构&&和||210
11.5.5 测试条件211
11.5.6 用case进行字符串匹配213
11.6 循环214
11.6.1 for循环214
11.6.2 while循环214
11.7 命令替换215
11.8 管理临时文件216
11.9 here文档216
11.10 重要的shell脚本工具217
11.10.1 basename217
11.10.2 awk218
11.10.3 sed218
11.10.4 xargs219
11.10.5 expr219
11.10.6 exec219
11.11 子shell220
11.12 在脚本中包含其他文件220
11.13 读取用户输入221
11.14 什么时候(不)应该使用shell脚本221
第12章 在网络上传输文件222
12.1 快速复制222
12.2 rsync222
12.2.1 rsync基础223
12.2.2 准确复制目录结构224
12.2.3 以斜杠结尾224
12.2.4 排除文件与目录226
12.2.5 合并、检查及冗长模式226
12.2.6 压缩227
12.2.7 限制带宽227
12.2.8 传文件到你的计算机227
12.2.9 更多有关rsync的话题227
12.3 文件共享228
12.4 用Samba分享文件228
12.4.1 配置服务器228
12.4.2 服务器访问控制229
12.4.3 密码229
12.4.4 启动服务器231
12.4.5 诊断和日志文件231
12.4.6 配置文件共享231
12.4.7 home目录232
12.4.8 共享打印机232
12.4.9 使用Samba客户端232
12.4.10 作为客户去访问文件233
12.5 NFS 客户端234
12.6 有关网络文件服务的选择与局限的更多内容234
第13章 用户环境235
13.1 创建启动文件的规则235
13.2 何时需要修改启动文件236
13.3 shell启动文件的元素236
13.3.1 命令路径236
13.3.2 帮助手册的路径237
13.3.3 提示符237
13.3.4 别名238
13.3.5 权限掩码238
13.4 启动文件的顺序及例子238
13.4.1 bash shell239
13.4.2 tcsh shell241
13.5 用户默认设置241
13.5.1 shell默认设置242
13.5.2 编辑器242
13.5.3 翻页器242
13.6 启动文件的一些陷阱242
13.7 前瞻243
第14章 Linux 桌面概览244
14.1 桌面组件244
14.1.1 窗口管理器245
14.1.2 工具包245
14.1.3 桌面环境245
14.1.4 应用245
14.2 近观X Window系统245
14.2.1 显示管理器246
14.2.2 网络透明性246
14.3 探索X客户端247
14.3.1 X事件247
14.3.2 理解X输入以及偏好设定248
14.4 X的未来250
14.5 D-Bus250
14.5.1 系统和会话实例251
14.5.2 监视D-Bus消息251
14.6 打印251
14.6.1 CUPS252
14.6.2 格式转换与打印过滤器252
14.7 其他有关桌面的话题253
第15章 开发工具254
15.1 C 编译器254
15.1.1 多个源码文件255
15.1.2 头(include)文件和目录256
15.1.3 连接库257
15.1.4 共享库258
15.2 make261
15.2.1 一个Makefile实例261
15.2.2 内置规则262
15.2.3 最终的程序构建262
15.2.4 保持更新263
15.2.5 命令行参数与选项263
15.2.6 标准宏和变量264
15.2.7 常规的目标264
15.2.8 组织一个Makefile.265
15.3 调试器266
15.4 Lex和Yacc.267
15.5 脚本语言267
15.5.1 Python268
15.5.2 Perl268
15.5.3 其他脚本语言268
15.6 Java269
15.7 展望:编译包270
第16章 从C代码编译出软件.271
16.1 软件的构建系统271
16.2 解开C源码包272
16.3 GNU autoconf273
16.3.1 一个autoconf的例子 274
16.3.2 使用打包工具来安装 275
16.3.3 configure脚本的选项 275
16.3.4 环境变量276
16.3.5 autoconf的目标277
16.3.6 autoconf的日志文件 277
16.3.7 pkg-config 277
16.4 实践安装278
16.5 打补丁279
16.6 编译和安装的问题排查280
16.7 前瞻282
第17章 在基础上搭建284
17.1 Web服务器与应用284
17.2 数据库285
17.3 虚拟化285
17.4 分布式计算与实时计算286
17.5 嵌入式系统286
17.6 结束语287
《信息图表设计入门》是一本信息图表制作的实用入门书。信息视觉化是一种潮流,无论是商业宣传活动、专业设计领域还是制作供非专
《单片机原理及接口技术习题详解与实验指导》是与《单片机原理及接口技术》(修订本)配套的辅助教材。《单片机原理及接口技术习
《Android应用测试与调试实战》内容简介:本书是Android应用测试与调试领域最为系统、深入且极具实践指导意义的著作,由拥有近10年
《创新思维与科技创新》内容简介:科技创新包括知识创新、技术创新和管理创新,是当代大学生必须学习和掌握的创新、创业的基础且重
本书以科学研究的成果为基础,以作者丰富的实战经验为支撑,简明扼要地提炼出系统思维的规律,为我们阐释一种卓有成效的洞悉混沌
《种文化》内容简介:本书从产业兴旺、生态宜居、乡风文明、治理有效、生活富裕等角度,遴选了上百幅来自全国各画乡的农民画新作,
社交媒体网络安全理论与技术 本书特色 张志勇、赵长伟、王剑等著的这本《社交媒体网络安全理论与技术》试图从信息技术和社会空间管理的多学科交叉视角,对媒体社交网络安...
《扶贫志》内容简介:本书为反映决战脱贫攻坚重大主题的长篇报告文学,作品以精准扶贫首倡地花垣县为切入点,辐射具有典型意义的扶
《微营销》内容简介:《微营销:指尖上的利器》站在更宏观更广博的层面上,对下一个“微营销会占据未来十年”进行论断,以“指尖上
《服务设计:用极致体验赢得用户追随》内容简介:服务设计不只是设计服务,更是设计与服务相关的整个商业系统。服务设计包括表层的
《改革开放口述史》内容简介:纪念改革开放四十周年万里、曾培炎、陈锦华等改革开放重大决策亲历者真情讲述。本书精选我国改革开放
《从维熙自选集》内容简介:从维熙的作品,无论小说还是散文,都演绎着中国历史以及作者个人的深切感悟。本书精选了他优秀且极具代
《绘画之美》内容简介:《绘画之美》是北京大学哲学系教授、中华美学学会副会长朱良志对中国传统文人画的解析与品读。作者选取了元
《中国工艺美学史》包括主体人、人与自然、道与器、生活需要、物的功能、功能与装饰等方面,这是对中国工艺美学的本质的剖析,反
《百年新路》内容简介:近年来,世界经济持续不景气,反全球化、民粹主义势力抬头,现有的国际政治经济秩序已难以为继,美国等西方
掌握需求过程-(第2版) 本书特色 本书论述了软件开发中的重要课题—如何得到正确需求,书中用一个接一个的步骤、一个接一个的模板、一个接一个的例子,向读者展示了经...
《淘宝天猫电商运营与数据化选品完全手册》内容简介:现代化的电商运营要求对社会发展、消费者及行业变化有清晰的认识;行业数据、
高性能集群计算:编程与应用 第二卷 内容简介 本书全面系统地介绍了高性能集群计算技术的概念、理论研究和工程实践成果。全书由两卷构成:系统与结构(**卷)和编程与...
《新妈妈的育儿经》内容简介:本书共分九章,内容从优孕优生、饮食营养、生活照顾、疾病预防与护理、智力开拓、行为培养、心理健康
《Android 9编程通俗演义》内容简介:本书严格参考Android 9官方开发文档的逻辑,全面讲解Android开发中的各种技术,章节内容循序渐