本书讲解了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
FromtheinventorofthePalmPilotcomesanewandcompellingtheoryofintelligence,brainfun...
《Android Jetpack开发》内容简介:随着移动领域的飞速发展,越来越多的工程师开始追求更高效率、更便捷的开发模式。而各种框架层出
《诸子百家普及丛书(套装10册)》内容简介:本丛书以王志民教授主持承担的山东省齐文化传承创新示范区建设重大工程项目为基础。丛
《官绅的荷包》内容简介:人类的财富载体经历了漫长的演变,从原始社会几乎没有载体,到后来发展出房屋、土地、农具、牲畜、衣物、
《未来银行全面风险管理》内容简介:本书从历史演进和核心要义两个纬度,对银行经营模式、巴塞尔协议、COSO企业风险管理框架进行了
《用管理驱动销售》内容简介:本书从组织发展和战略达成的角度阐述了如何展开全面的、系统的销售管理工作,旨在帮助企业打造具有自
《财团首户:无锡荣家》内容简介:本书为“中国近代实业家丛书”中的无锡荣氏家族卷。习近平总书记在企业家座谈会与考察江苏期间两
这是一本介绍软件管理的小品文集。全书分为45章,每章就是一个独立的专题或者知识点。本书内容十分丰富全面,小到项目负责人制订
《jQueryUI开发指南》是jQueryUI的快速开发指南,全面介绍jQueryUI如何改进HTML页面展示,内容包括jQueryUI1.8版本的下列扩展特性
JAVA持续交付 本书特色 本书完整介绍了Java软件开发的整个生命周期,还结合大量的成功实践经验,介绍了每个阶段可能会使用到的工具和技能。在基础设施已经极大完...
Architectslookatthousandsofbuildingsduringtheirtraining,andstudycritiquesofthose...
《前馈神经网络及其应用》较系统地介绍了前馈神经网络的网络模型、学习算法、逼近理论,除介绍国内外其他学者的研究成果外,主要
《全能网页设计师精炼手册》内容简介:本书通过对网页设计的核心基础进行讲解,使读者全面了解和掌握作为一个网页设计师应掌握的排
《人工神经网络理论.设计及应用》系统地论述了人工神经网络的主要理论和设计基础,给出了大量应用实例,旨在使读者了解神经网络的
Excel函数与图表应用技巧500例-(附赠多媒体光盘一张) 本书特色 《Excel函数与图表应用技巧500例(附光盘实用技巧快学速查手册)》由梁为民主编,本书...
《帝鉴图说:全本插图版》内容简介:《帝鉴图说》是明代大臣张居正编给小万历皇帝看的一部图画书。书名“帝鉴”,取自唐太宗“以史
观念是一切的开始,本书汇集了那些正在影响和创造着未来时尚潮流的观念。20世纪是一个充满创新的时代,其中许多创意给女性服饰带
《连锁经营管理实务》内容简介:本教材重构了“连锁经营与管理”课程体系,打破了章节界限,进行了课程整合,尤其注重理论知识与实
“不作恶”的Google何以身陷“三重门”?聪明的Google为何在中国变得不够聪明?强大的Google在与百度的交锋中为何会完败?作者简
Weallwantpeopletodostuff.Whetheryouwantyourcustomerstobuyfromyou,vendorstogiveyo...