[套装书]Linux哲学+Linux实战(2册)

作者
[美] 戴维·博特(David Both)[美]戴维·克林顿(David Clinton)
丛书名
Linux/Unix技术丛书
出版社
机械工业出版社
ISBN
9781909171430
简要
简介
内容简介书籍计算机书籍 ---------------------------Linux哲学--------------------------- 本书揭示并说明了命令行的强大功能和灵活性,以及支持这些特质的设计和使用的理念。了解如何从Linux命令行中提取尽可能多的信息,可以帮助你成为更好的系统管理员。理解为什么Linux和Unix世界中的许多事情都是按现在这样完成的,以及如何将Linux哲学应用于系统管理。 ---------------------------Linux实战--------------------------- 本书基于实践项目详细讲解相关的Linux理论、原理、方法和命令,具体内容包括Linux虚拟化技术以及基本Linux工作环境的构建方法、远程连接、归档管理、自动化管理、应急工具、Web服务器、网络文件共享、强化认证过程、保护网络连接、系统监视、在私有网络上共享数据、解决系统性能问题、排除网络故障、排除外围设备故障、DevOps工具等。
目录



---------------------------Linux哲学---------------------------


译者序
作者简介
技术审阅者简介
致谢
第一部分 导论
第1章 Linux哲学简介3
1.1 我是系统管理员吗4
1.2 哲学的结构6
1.3 谁应该读这本书7
1.3.1 但我不满足这些要求8
1.3.2 谁不适合读这本书8
1.4 Linux的真相9
1.5 限制性操作系统9
1.6 Linux是开放和免费的9
1.7 真正的知识10
1.8 启示10
第2章 准备11
2.1 实验11
2.2 系统要求12
2.2.1 如何访问命令行13
2.2.2 创建student用户13
2.2.3 准备U盘14
2.3 实验不起作用怎么办15
第二部分 基础
第3章 数据流20
3.1 文本流——通用接口20
3.2 STDIO文件句柄21
3.3 生成数据流21
3.4 使用“yes”来检验一个理论23
3.5 探索U盘25
3.6 随机流29
3.7 小结30
第4章 转换数据流31
4.1 数据流作为原材料31
4.2 管道梦32
4.3 建立管线33
4.4 重定向34
4.5 管线的挑战37
4.5.1 问题37
4.5.2 解决方案38
4.5.3 关于解决方案的思考41
4.6 小结41
第5章 一切都是文件42
5.1 什么是文件42
5.2 设备文件43
5.3 udev简化43
5.4 设备数据流45
5.5 设备文件分类46
5.6 有趣的设备文件47
5.7 随机数、零等设备50
5.8 备份主引导记录53
5.9 一切都是文件的应用56
5.10 小结56
第6章 使用Linux FHS57
6.1 定义57
6.2 标准58
6.3 使用定义明确的文件系统结构59
6.4 Linux统一结构60
6.5 特殊文件系统61
6.5.1 /proc文件系统61
6.5.2 /sys文件系统66
6.5.3 SELinux69
6.6 解决问题71
6.6.1 不正确地使用文件系统72
6.6.2 电子邮件收件箱72
6.6.3 坚持标准72
6.6.4 这个文件在哪里73
6.7 小结74
第三部分 功能
第7章 拥抱CLI77
7.1 定义命令行77
7.2 CLI术语78
7.2.1 命令提示符78
7.2.2 命令行78
7.2.3 命令行界面78
7.2.4 终端78
7.2.5 控制台79
7.2.6 虚拟控制台80
7.2.7 终端仿真器81
7.2.8 伪终端83
7.2.9 会话83
7.2.10 shell83
7.2.11 SSH85
7.2.12 screen85
7.3 GUI和CLI87
7.3.1 非限制性接口88
7.3.2 邮件列表88
7.4 解决方案原则90
7.5 用大数据阻止他们90
7.6 CLI的威力92
第8章 当一名懒惰的系统管理员93
8.1 准备工作93
8.2 真正的生产力93
8.3 预防性维护94
8.4 最小化打字量95
8.4.1 别名95
8.4.2 其他打字捷径96
8.5 文件命名96
8.6 Bash效率97
8.6.1 自动补全功能97
8.6.2 命令行调用和编辑98
8.6.3 历史记录99
8.6.4 使用历史记录100
8.7 日志是你的朋友103
8.7.1 SAR104
8.7.2 邮件日志106
8.7.3 消息106
8.7.4 dmesg 107
8.7.5 安全108
8.7.6 跟踪日志文件110
8.7.7 systemd日志111
8.7.8 logwatch115
8.8 成功地当一名懒惰的系统管理员117
第9章 自动化一切118
9.1 为什么我使用脚本118
9.2 我是如何达到的119
9.3 编写重复性任务脚本119
9.3.1 让它更容易120
9.3.2 从理想到必要120
9.4 更新121
9.5 其他自动化水平131
9.6 使用cron进行定时自动化操作133
9.6.1 crontab133
9.6.2 cron.d135
9.6.3 anacron136
9.6.4 关于作业安排的提示138
9.6.5 关于cron的想法138
9.6.6 cron资源138
9.7 其他可能自动化的任务139
9.8 深化哲学140
第10章 始终使用shell脚本141
10.1 定义141
10.2 系统管理员语境142
10.2.1 需求143
10.2.2 开发速度143
10.2.3 性能速度144
10.2.4 变量145
10.2.5 测试145
10.2.6 开放和开源145
10.3 把shell脚本作为原型146
10.4 处理146
10.4.1 快捷而不完善146
10.4.2 规划和远见147
10.5 小结156
第11章 尽早测试,经常测试157
11.1 流程158
11.1.1 创建测试计划158
11.1.2 在一开始就开始测试159
11.1.3 最终测试160
11.1.4 生产测试160
11.2 模糊测试161
11.3 自动化测试161
11.4 尝试一下162
11.4.1 MOTD脚本的需求163
11.4.2 MOTD脚本测试计划163
11.4.3 开发脚本164
11.4.4 添加健全性检查167
11.4.5 版本号168
11.5 修复脚本177
11.6 小结178
第12章 使用常识命名179
12.1 脚本和程序名称179
12.2 变量181
12.2.1 命名变量181
12.2.2 把一切变成变量182
12.3 子程序184
12.4 主机185
12.5 机构命名185
12.6 小结186
第13章 以公开格式存储数据187
13.1 封闭是不可理解的187
13.2 开放是可知的188
13.3 纯ASCII文本188
13.3.1 系统配置文件189
13.3.2 全局Bash配置193
13.3.3 用户配置文件195
13.3.4 ASCII的可贵之处197
13.4 小结198
第14章 对数据使用分离的文件系统199
14.1 为什么我们需要分离的文件系统199
14.1.1 硬盘崩溃200
14.1.2 文件系统填满200
14.2 挽救便携式计算机200
14.3 数据安全202
14.4 建议203
14.4.1 /boot204
14.4.2 /home204
14.4.3 /usr205
14.4.4 /opt206
14.4.5 /var206
14.4.6 /tmp206
14.4.7 其他分支207
14.5 一开始就分离文件系统207
14.6 稍后添加分离的文件系统207
14.7 小结212
第15章 使程序可移植213
15.1 从英特尔PC到大型机213
15.2 体系结构214
15.3 可移植性限制215
15.3.1 许可215
15.3.2 技术215
15.3.3 LibreOffice216
15.4 shell脚本216
15.5 互联网和可移植性218
15.6 创建网页218
15.6.1 静态内容219
15.6.2 作为新工作的动态网页220
15.6.3 CGI——开放并可移植223
15.6.4 WordPress224
15.7 小结225
第16章 使用开源软件226
16.1 开源的定义226
16.2 开源定义(注释)227
16.3 为什么这很重要229
16.4 创造术语229
16.5 许可我们自己的代码229
16.6 机构代码共享230
16.6.1 孤岛很差劲231
16.6.2 开放式机构和代码共享231
16.6.3 要避免的事情232
16.7 代码可用性232
16.7.1 我如何分享代码232
16.7.2 代码共享注意事项233
16.8 小结235
第四部分 成为禅师
第17章 追求优雅239
17.1 硬件优雅239
17.1.1 PCB240
17.1.2 主板240
17.1.3 计算机240
17.1.4 数据中心241
17.1.5 电源和接地241
17.2 软件优雅242
17.3 修复我的网站245
17.4 删除废物246
17.4.1 旧的或未使用的程序246
17.4.2 脚本中的旧代码249
17.4.3 旧文件250
17.5 小结255
第18章 追求简单257
18.1 数字中的复杂性257
18.2 简单性的基础知识258
18.3 永无止境的简化过程259
18.4 简单的程序做一件事259
18.5 简单程序很小261
18.6 简单与哲学262
18.6.1 简化我自己的程序263
18.6.2 简化他人的程序263
18.6.3 未注释的代码263
18.7 硬件267
18.8 Linux和硬件268
18.9 窘境268
18.10 小结269
第19章 使用你喜爱的编辑器270
19.1 不仅仅是编辑器271
19.2 Linux启动271
19.2.1 为什么我更喜欢SystemV271
19.2.2 为什么我更喜欢systemd272
19.2.3 真正的问题272
19.3 桌面环境272
19.4 用sudo还是不用sudo273
19.4.1 绕过sudo274
19.4.2 sudo的有效用途275
19.5 小结276
第20章 记录一切277
20.1 红男爵278
20.2 我的文档理念278
20.2.1 帮助选项279
20.2.2 自由地注释代码280
20.2.3 我编写代码文档的流程282
20.3 手册页282
20.4 系统文档282
20.5 为现有代码编写文档285
20.6 保持文档更新285
20.7 小结286
第21章 备份一切,经常备份287
21.1 数据丢失287
21.2 依靠备份救援289
21.2.1 问题289
21.2.2 恢复294
21.3 按我的方式做294
21.3.1 备份选项295
21.3.2 异地备份300
21.4 灾难恢复服务301
21.5 其他选择301
21.6 如何“经常”备份301
21.7 小结302
第22章 追随你的好奇心303
22.1 查理303
22.2 好奇心把我引入了Linux304
22.3 好奇心解决问题307
22.4 追随自己的好奇心320
22.4.1 成为作者320
22.4.2 失败是一种机会321
22.4.3 去做就对了321
22.5 小结322
第23章 没什么应当323
23.1 始终存在各种可能性323
23.2 释放力量324
23.3 解决问题325
23.3.1 批判性思维326
23.3.2 解决问题的推理327
23.4 自知之明330
23.5 多样性的含义331
23.6 量化考核狂热331
23.7 优秀的管理人员332
23.8 协作333
23.8.1 孤岛城市334
23.8.2 简单的方法334
23.9 小结335
第24章 指导年轻的系统管理员336
24.1 雇用合适的人337
24.2 指导337
24.3 解决问题的艺术339
24.4 示例343
24.5 迭代344
24.6 小结345
第25章 支持你最喜欢的开源项目346
25.1 项目选择346
25.2 编写代码347
25.3 测试347
25.4 提交错误报告348
25.5 文档348
25.6 协助349
25.7 教学349
25.8 写作350
25.9 捐赠351
25.10 小结351
第26章 现实部分352
26.1 人352
26.2 指手画脚的管理者353
26.3 过犹不及354
26.4 技术支持烦恼354
26.5 你应当按我的方式做355
26.6 可以拒绝356
26.7 科学方法356
26.8 了解过去357
26.9 结语357
参考文献358



---------------------------Linux实战---------------------------


译者序
前言
第1章 欢迎使用Linux1
1.1 是什么让Linux与其他操作系统不同2
1.2 基本的实践技能3
1.2.1 Linux文件系统4
1.2.2 探索:Linux导航工具5
1.2.3 完成任务:Linux文件管理工具9
1.2.4 键盘技巧13
1.2.5 伪文件系统13
1.2.6 向他们展示谁才是老大:sudo14
1.3 获取帮助15
1.3.1 man文件15
1.3.2 info命令16
1.3.3 互联网17
1.4 小结18
第2章 Linux虚拟化:构建Linux工作环境21
2.1 什么是虚拟化22
2.2 使用VirtualBox25
2.2.1 使用Linux包管理器25
2.2.2 定义虚拟机32
2.2.3 安装操作系统35
2.2.4 克隆和共享VirtualBox虚拟机38
2.3 使用Linux容器40
2.3.1 LXC入门40
2.3.2 创建第一个容器41
2.4 小结44
第3章 远程连接:安全访问联网的计算机48
3.1 加密的重要性48
3.2 OpenSSH入门49
3.3 使用SSH登录一台远程服务器52
3.4 免密码SSH访问53
3.4.1 生成新的密钥对54
3.4.2 在网络上复制公钥55
3.4.3 使用多个加密密钥57
3.5 使用SCP安全地拷贝文件57
3.6 使用SSH连接上的远程图形程序58
3.7 Linux进程管理59
3.7.1 用ps命令查看进程60
3.7.2 使用systemd62
3.8 小结63
第4章 归档管理:备份或拷贝整个文件系统66
4.1 为什么要归档66
4.1.1 压缩67
4.1.2 归档文件:一些重要注意事项68
4.2 将什么归档69
4.3 备份到何处71
4.4 使用tar命令归档文件和文件系统71
4.4.1 几个简单的归档和压缩示例72
4.4.2 流式传输文件系统的归档文件73
4.4.3 使用find命令聚合文件75
4.4.4 保护权限与所有权并展开归档文件76
4.5 使用dd命令归档分区80
4.5.1 dd操作80
4.5.2 使用dd擦除硬盘81
4.6 使用rsync命令同步归档文件81
4.7 规划注意事项83
4.8 小结84
第5章 自动化管理:自动异地备份的配置87
5.1 用Bash编写脚本88
5.1.1 备份系统文件的脚本示例88
5.1.2 用于更改文件名的示例脚本92
5.2 将数据备份至AWS S393
5.2.1 安装AWS命令行接口94
5.2.2 配置你的AWS账户94
5.2.3 建立你的第一个bucket96
5.3 使用cron调度定期备份96
5.4 使用anacron预定非正常备份99
5.5 利用系统计时器设定常规备份100
5.6 小结102
第6章 应急工具:构建一个系统恢复设备105
6.1 在恢复/救援模式下工作106
6.1.1 GRUB引导加载程序107
6.1.2 在Ubuntu环境下使用恢复模式108
6.1.3 在CentOS下使用救援模式108
6.1.4 找到命令行救援工具109
6.2 创建一个原生系统引导恢复设备110
6.2.1 系统救援映像110
6.2.2 将原生系统引导映像写入USB驱动112
6.3 让你的原生系统引导设备运行115
6.3.1 检测系统存储区115
6.3.2 受损的分区117
6.3.3 从损坏的文件系统中恢复文件119
6.4 密码恢复:使用chroot安装文件系统120
6.5 小结122
第7章 Web服务器:建立MediaWiki服务器125
7.1 建立LAMP服务器126
7.2 手动设置Apache Web服务器127
7.2.1 在Ubuntu上安装Apache Web服务器127
7.2.2 填充你的网站文档root128
7.3 安装SQL数据库129
7.3.1 强化SQL131
7.3.2 SQL管理131
7.4 安装PHP134
7.4.1 在Ubuntu中安装PHP134
7.4.2 测试你的PHP安装134
7.5 安装和配置MediaWiki135
7.5.1 缺少扩展的故障排除136
7.5.2 将MediaWiki连接到数据库138
7.6 在CentOS上安装Apache Web服务器140
7.6.1 了解网络端口141
7.6.2 网络流量控制142
7.6.3 在CentOS上安装MariaDB142
7.6.4 在CentOS上安装PHP143
7.7 小结145
第8章 网络文件共享:构建Nextcloud文件共享服务器148
8.1 企业文件共享和Nextcloud149
8.2 使用snaps安装Nextcloud149
8.3 手动安装Nextcloud152
8.3.1 硬件预备知识152
8.3.2 建立LAMP服务器153
8.3.3 配置Apache154
8.3.4 下载和解压缩Nextcloud156
8.4 Nextcloud管理158
8.5 将AWS S3作为Nextcloud的主存储介质161
8.6 小结163
第9章 保护Web服务器166
9.1 显而易见的事情167
9.2 控制网络访问168
9.2.1 配置防火墙168
9.2.2 使用非标准端口175
9.3 加密传输中的数据177
9.3.1 准备你的网站域178
9.3.2 用Let抯 Encrypt生成证书179
9.4 强化认证过程180
9.4.1 使用SELinux控制文件系统对象181
9.4.2 安装并激活SELinux182
9.4.3 应用SELinux策略184
9.4.4 系统组与最少特权原则185
9.4.5 隔离容器中的进程187
9.4.6 扫描危险的用户ID值187
9.5 审计系统资源188
9.5.1 扫描打开的端口188
9.5.2 扫描激活的服务189
9.5.3 搜索已安装的软件190
9.6 小结190
第10章 保护网络连接:创建VPN或DMZ194
10.1 构建OpenVPN隧道195
10.1.1 配置OpenVPN服务器196
10.1.2 配置OpenVPN客户端202
10.1.3 测试你的VPN203
10.2 构建抗入侵网络205
10.2.1 非军事区205
10.2.2 使用iptables207
10.2.3 使用iptables创建DMZ208
10.2.4 使用shorewall创建DMZ210
10.3 为基础设施测试构建虚拟网络213
10.4 小结215
第11章 系统监控:使用日志文件218
11.1 使用系统日志219
11.1.1 使用journald记录日志220
11.1.2 使用syslogd记录日志222
11.2 管理日志文件224
11.2.1 journald 方法224
11.2.2 syslogd方法224
11.3 处理大文件226
11.3.1 使用grep226
11.3.2 使用awk227
11.3.3 使用sed228
11.4 使用入侵检测进行监控229
11.4.1 搭建邮件服务器229
11.4.2 安装Tripwire230
11.4.3 配置Tripwire232
11.4.4 生成Tripwire测试报告235
11.5 小结235
第12章 在私有网络上共享数据239
12.1 通过网络文件系统共享文件240
12.1.1 设置NFS服务器241
12.1.2 建立客户端242
12.1.3 在引导时挂载NFS共享243
12.1.4 NFS安全性245
12.2 使用Samba与Windows用户共享文件247
12.2.1 测试你的Samba配置248
12.2.2 从Windows访问Samba服务器249
12.3 使用符号链接与自己共享文件250
12.4 小结251
第13章 解决系统性能问题255
13.1 CPU负载问题256
13.1.1 测量CPU负载256
13.1.2 管理CPU负载257
13.1.3 制造麻烦(模拟CPU负载)260
13.2 内存问题260
13.2.1 评估内存状态260
13.2.2 评估交换状态261
13.3 存储可用性问题261
13.3.1 索引节点的限制262
13.3.2 解决方案264
13.4 网络负载问题265
13.4.1 测量带宽265
13.4.2 解决方案266
13.4.3 与tc形成网络流量267
13.5 监控工具268
13.5.1 收集监测数据268
13.5.2 将数据进行可视化269
13.6 小结270
第14章 排除网络故障274
14.1 理解TCP/IP寻址275
14.1.1 什么是NAT寻址275
14.1.2 使用NAT寻址275
14.2 建立网络连接278
14.3 排除传出连通性故障278
14.3.1 跟踪网络状态280
14.3.2 分配IP地址281
14.3.3 配置DNS服务284
14.3.4 管道286
14.4 排除传入连通性故障286
14.4.1 内部连通性扫描:netstat 287
14.4.2 外部连通性扫描:netcat287
14.5 小结288
第15章 排除外围设备故障292
15.1 识别连接的设备292
15.2 用Linux内核模块管理外设294
15.2.1 查找内核模块295
15.2.2 手动加载内核模块297
15.3 引导时手动管理内核参数298
15.3.1 引导时传递参数298
15.3.2 通过文件系统传递参数299
15.4 管理打印机300
15.4.1 lp基础301
15.4.2 使用CUPS管理打印机301
15.5 小结303
第16章 DevOps工具:使用Ansible部署一个脚本化的服务器环境305
16.1 部署协调器可以为你做什么306
16.2 Ansible:安装和设置308
16.2.1 设置对宿主机的无密码访问309
16.2.2 组织Ansible的宿主机309
16.2.3 测试连接性310
16.3 认证311
16.4 Ansible playbook312
16.4.1 编写一个简单的playbook313
16.4.2 创建多层、角色驱动的playbook314
16.4.3 用Ansible管理密码316
16.5 小结317
总结320
附录 每章命令行回顾324




有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4