[美] Brian Ward《精通Linux(第2版)》

[美] Brian Ward《精通Linux(第2版)》

作者:[美] Brian Ward

出版社:人民邮电出版社

出版年:2015-7

评分:8.6

ISBN:9787115394927

所属分类:网络科技

书刊介绍

内容简介

本书讲解了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

相关推荐

微信二维码