精通Linux(第2版)

精通Linux(第2版)

读者对象

阅读要求

阅读方法

动手操作

本书结构

第2版的新内容

关于术语

第一版书评

1 概述

1.1 Linux 操作系统中的抽象级别和层次

1.2 硬件系统:理解主内存

1.3 内核

1.3.1 进程管理
1.3.2 内存管理
1.3.3 设备驱动程序和设备管理
1.3.4 系统调用和系统支持

1.4 用户空间

1.5 用户

1.6 前瞻

2 基础命令和目录结构

2.1 Bourne shell: /bin/sh

2.2 shell的使用

2.2.1 shell窗口
2.2.2 cat命令
2.2.3 标准输入输出

2.3 基础命令

2.3.1 ls命令
2.3.2 cp命令
2.3.3 mv命令
2.3.4 touch命令
2.3.5 rm命令
2.3.6 echo命令

2.4 浏览目录

2.4.1 cd命令
2.4.2 mkdir命令
2.4.3 rmdir命令
2.4.4 shell通配符

2.5 中间命令

2.5.1 grep命令
2.5.2 less命令
2.5.3 pwd命令
2.5.4 diff命令
2.5.5 file命令
2.5.6 find和locate命令
2.5.7 head和tail命令
2.5.8 sort命令

2.6 更改密码和shell

2.7 dot文件

2.8 环境变量和shell变量

2.9 命令路径

2.10 特殊字符

2.11 命令行编辑

2.12 文本编辑器

2.13 获取在线帮助

2.14 shell输入输出

2.14.1 标准错误输出
2.14.2 标准输入重定向

2.15 理解错误信息

2.15.1 解析Unix的错误信息
2.15.2 常见错误
Not a directory, Is a directory

2.16 查看和操纵进程

2.16.1 命令选项
2.16.2 终止进程
2.16.3 任务控制
2.16.4 后台进程
2.17 文件模式和权限
2.17.1 更改文件权限
2.17.2 符号链接
2.17.3 创建符号链接

2.18 归档和压缩文件

2.18.1 gzip命令
2.18.2 tar命令
2.18.3 压缩归档文件(.tar.gz)
2.18.4 zcat命令
2.18.5 其他的压缩命令

2.19 Linux目录结构基础

2.19.1 root目录下的其他目录
2.19.2 /usr目录
2.19.3 内核位置

2.20 以超级用户的身份运行命令

2.20.1 sudo命令
2.20.2 /etc/sudoers

2.21 前瞻

3 设备管理

3.1 设备文件

3.2 sysfs设备路径

3.3 dd命令和设备

3.4 设备名总结

3.4.1 硬盘:/dev/sd*
3.4.2 CD和DVD:/dev/sr*
3.4.3 PATA硬盘:/dev/hd*
3.4.4 终端设备/dev/tty/、/dev/pts/和/dev/tty
3.4.5 串行端口:/dev/ttyS*
3.4.6 并行端口:/dev/lp0和/dev/lp1
3.4.7 音频设备:/dev/snd/*、/dev/dsp、/dev/audio和其他
3.4.8 创建设备文件

3.5 udev

3.5.1 devtmpfs
3.5.2 udevd的操作和配置
3.5.3 udevadm
3.5.4 设备监控

3.6 详解SCSI和Linux内核

3.6.1 USB存储设备和SCSI
3.6.2 SCSI和ATA
3.6.3 通用SCSI设备
3.6.4 访问设备的多种方法

4 硬盘和文件系统

4.1 为磁盘设备分区

4.1.1 查看分区表
4.1.2 更改分区表
4.1.3 磁盘和分区的构造
4.1.4 固态硬盘

4.2 文件系统

4.2.1 文件系统类型
4.2.2 创建文件系统
4.2.3 挂载文件系统
4.2.4 文件系统UUID
4.2.5 磁盘缓冲、缓存和文件系统
4.2.6 文件系统挂载选项
4.2.7 重新挂载文件系统
4.2.8 /etc/fstab文件系统表
4.2.9 /etc/fstab的替代者
4.2.10 文件系统容量
4.2.11 检查和修复文件系统
4.2.12 特殊用途的文件系统

4.3 交换空间

4.3.1 使用磁盘分区作为交换空间
4.3.2 使用文件作为交换空间
4.3.3 你需要多大的交换空间

4.4 前瞻:磁盘和用户空间

4.5 深入传统文件系统

4.5.1 查看inode细节
4.5.2 在用户空间中使用文件系统
4.5.3 文件系统的演进

5 Linux内核的启动

5.1 启动消息

5.2 内核初始化和启动选项

5.3 内核参数

5.4 引导装载程序

5.4.1 引导装载程序任务
5.4.2 引导装载程序概述

5.5 GRUB简介

5.5.1 使用GRUB命令行浏览设备和分区
5.5.2 GRUB配置信息
5.5.3 安装GRUB

5.6 UEFI安全启动的问题

5.7 链式加载其他操作系统

5.8 引导装载程序细节

5.8.1 MBR启动
5.8.2 UEFI启动
5.8.3 GRUB工作原理

6 用户空间的启动

6.1 init介绍

6.2 System V 运行级别

6.3 识别你的init

6.4 systemd

6.4.1 单元和单元类型
6.4.2 systemd中的依赖关系
6.4.3 systemd配置
6.4.4 systemd操作
6.4.5 在systemd中添加单元
6.4.6 systemd进程跟踪和同步
6.4.7 systemd的按需和资源并行启动
6.4.8 systemd的System V兼容性
6.4.9 systemd辅助程序

6.5 Upstart

6.5.1 Upstart初始化过程
6.5.2 Upstart任务
6.5.3 Upstart配置
6.5.4 Upstart操作
6.5.5 Upstart日志
6.5.6 Upstart运行级别和System V兼容性

6.6 System V init

6.6.1 System V init启动命令顺序
6.6.2 System V init链接池
6.6.3 run-parts
6.6.4 System V init控制

6.7 关闭系统

6.8 initramfs

6.9 紧急启动和单用户模式

7 系统配置:日志、系统时间、批处理任务和用户

7.1 /etc目录结构

7.2 系统日志

7.2.1 系统日志
7.2.2 配置文件

7.3 用户管理文件

7.3.1 /etc/passwd文件
7.3.2 特殊用户
7.3.3 /etc/shadow文件
7.3.4 用户和密码管理
7.3.5 用户组

7.4 getty和login

7.5 设置时间

7.5.1 内核时间和时区
7.5.2 网络时间

7.6 使用cron来调度日常任务

7.6.1 安装crontab文件
7.6.2 系统crontab文件
7.6.3 cron的未来

7.7 使用at进行一次性任务调度

7.8 了解用户ID和用户切换

进程归属、有效UID、实际UID和已保存UID

7.9 用户标识和认证

为用户信息使用库

7.10 PAM

7.10.1 PAM配置
7.10.2 关于PAM的一些注解
7.10.3 PAM和密码

7.11 前瞻

8 进程与资源利用详解

8.1 进程跟踪

8.2 使用lsof查看打开的文件

8.2.1 lsof输出
8.2.2 lsof的使用

8.3 跟踪程序执行和系统调用

8.3.1 strace命令
8.3.2 ltrace命令

8.4 线程

8.4.1 单线程进程和多线程进程
8.4.2 查看线程

8.5 资源监控简介

8.6 测量CPU时间

8.7 调整进程优先级

8.8 平均负载

8.8.1 uptime的使用
8.8.2 高负载

8.9 内存

8.9.1 内存工作原理
8.9.2 内存页面错误
8.10 使用vmstat监控CPU和内存性能

8.11 I/O监控

8.11.1 使用iostat
8.11.2 使用iotop查看进程的I/O使用和监控

8.12 使用pidstat监控进程

8.13 更深入的主题

9 网络与配置

9.1 网络基础

数据包

9.2 网络层次

9.3 网际层

9.3.1 查看自己计算机的IP地址
9.3.2 子网
9.3.3 共用子网掩码与无类域内路由选择

9.4 路由和内核路由表

默认网关

9.5 基本ICMP和DNS工具

9.5.1 ping
9.5.2 traceroute
9.5.3 DNS与host

9.6 物理层与以太网

9.7 理解内核网络接口

9.8 配置网络接口

手动添加和删除路由

9.9 开机启动的网络配置

9.10 手动和开机启动的网络配置带来的问题

9.11 一些网络配置管理器

9.11.1 NetworkManager的操作
9.11.2 与NetworkManager交互
9.11.3 NetworkManager的配置

9.12 解析主机名

9.12.1 /etc/hosts
9.12.2 resolv.conf文件
9.12.3 缓存和零配置DNS
9.12.4 /etc/nsswitch.conf文件

9.13 Localhost

9.14 传输层:TCP、UDP和Service

9.14.1 TCP端口与连接
9.14.2 建立TCP连接
9.14.3 端口的数字和/etc/services
9.14.4 TCP的特点
9.14.5 UDP

9.15 普通本地网络

9.16 理解DHCP

9.16.1 Linux的DHCP客户端
9.16.2 Linux的DHCP服务器

9.17 将Linux配置成路由器

互联网的上行线

9.18 私有网络

9.19 网络地址转换(IP伪装)

9.20 路由器与Linux

9.21 防火墙

9.21.1 Linux防火墙基础
9.21.2 设置防火墙规则
9.21.3 防火墙策略

9.22 以太网、IP和ARP

9.23 无线以太网

9.23.1 iw
9.23.2 无线网络安全

9.24 小结

10 网络应用与服务

10.1 服务的基本概念

深入剖析

10.2 网络服务器

10.3 SSH

10.3.1 SSHD服务器
10.3.2 SSH客户端

10.4 守护进程inetd和xinetd

TCP封装器:tcpd、/etc/hosts.allow和/etc/hosts.deny

10.5 诊断工具

10.5.1 lsof

10.5.2 tcpdump

10.5.3 netcat

10.5.4 扫描端口

10.6 远程程序调用

10.7 网络安全

10.7.1 典型漏洞
10.7.2 安全资源

10.8 前瞻

10.9 套接字:进程与网络的通信方式

10.10 Unix域套接字

10.10.1 对开发者的好处
10.10.2 列出Unix域套接字

11 shell脚本

11.1 shell脚本基础

shell脚本的局限性

11.2 引号与字面量

11.2.1 字面量
11.2.2 单引号
11.2.3 双引号
11.2.4 单引号的字面义

11.3 特殊变量

11.3.1 单个参数:$1,$2,……
11.3.2 参数的数量:$
11.3.3 所有参数:$@
11.3.4 脚本名:$0
11.3.5 进程号:$$
11.3.6 退出码:$?

11.4 退出码

11.5 条件判断

11.5.1 防范空参数
11.5.2 使用其他命令来测试
11.5.3 elif
11.5.4 逻辑结构&&和||
11.5.5 测试条件
11.5.6 用case进行字符串匹配

11.6 循环

11.6.1 for循环

11.6.2 while循环

11.7 命令替换

11.8 管理临时文件

11.9 here文档

11.10 重要的shell脚本工具

11.10.1 basename
11.10.2 awk
11.10.3 sed
11.10.4 xargs
11.10.5 expr
11.10.6 exec

11.11 子shell

11.12 在脚本中包含其他文件

11.13 读取用户输入

11.14 什么时候(不)应该使用shell脚本

12 在网络上传输文件

12.1 快速复制

12.2 rsync

12.2.1 rsync基础
12.2.2 准确复制目录结构
12.2.3 以斜杠结尾
12.2.4 排除文件与目录
12.2.5 合并、检查及冗长模式
12.2.6 压缩
12.2.7 限制带宽
12.2.8 传文件到你的计算机
12.2.9 更多有关rsync的话题

12.3 文件共享

12.4 用Samba分享文件

12.4.1 配置服务器
12.4.2 服务器访问控制
12.4.3 密码
12.4.4 启动服务器
12.4.5 诊断和日志文件
12.4.6 配置文件共享
12.4.7 home目录
12.4.8 共享打印机
12.4.9 使用Samba客户端
12.4.10 作为客户去访问文件

12.5 NFS客户端

12.6 有关网络文件服务的选择与局限的更多内容

13 用户环境

13.1 创建启动文件的规则

13.2 何时需要修改启动文件

13.3 shell启动文件的元素

13.3.1 命令路径
13.3.2 帮助手册的路径
13.3.3 提示符
13.3.4 别名
13.3.5 权限掩码

13.4 启动文件的顺序及例子

13.4.1 bash shell
13.4.2 tcsh shell

13.5 用户默认设置

13.5.1 shell默认设置
13.5.2 编辑器
13.5.3 翻页器

13.6 启动文件的一些陷阱

13.7 前瞻

14 Linux桌面概览

14.1 桌面组件

14.1.1 窗口管理器
14.1.2 工具包
14.1.3 桌面环境
14.1.4 应用

14.2 近观X Window系统

14.2.1 显示管理器
14.2.2 网络透明性

14.3 探索X客户端

14.3.1 X事件
14.3.2 理解X输入以及偏好设定

14.4 X的未来

14.5 D-Bus

14.5.1 系统和会话实例
14.5.2 监视D-Bus消息

14.6 打印

14.6.1 CUPS
14.6.2 格式转换与打印过滤器

14.7 其他有关桌面的话题

15 开发工具

15.1 C编译器

15.1.1 多个源码文件
15.1.2 头(include)文件和目录
15.1.3 连接库
15.1.4 共享库

15.2 make

15.2.1 一个Makefile实例
15.2.2 内置规则
15.2.3 最终的程序构建
15.2.4 保持更新
15.2.5 命令行参数与选项
15.2.6 标准宏和变量
15.2.7 常规的目标
15.2.8 组织一个Makefile

15.3 调试器

15.4 Lex和Yacc

15.5 脚本语言

15.5.1 Python
15.5.2 Perl
15.5.3 其他脚本语言

15.6 Java

15.7 展望:编译包

16 从C代码编译出软件

16.1 软件的构建系统

16.2 解开C源码包

从哪里开始

16.3 GNU autoconf

16.3.1 一个autoconf的例子
16.3.2 使用打包工具来安装
16.3.3 configure脚本的选项
16.3.4 环境变量
16.3.5 autoconf的目标
16.3.6 autoconf的日志文件
16.3.7pkg-config

16.4 实践安装

在哪里安装

16.5 打补丁

16.6 编译和安装的问题排查

具体错误

16.7 前瞻

17 在基础上搭建

17.1 Web服务器与应用

17.2 数据库

数据库的种类

17.3 虚拟化

17.4 分布式计算与实时计算

17.5 嵌入式系统

17.6 结束语

思维导图

精通Linux(第2版)

防止博客图床图片失效,防止图片源站外链:

http://www.processon.com/chart_image/5e5b2b39e4b0cb56dab10e23.png)

思维导图在线编辑链接:

https://www.processon.com/view/5e5b2b39e4b0cb56dab10e20

posted @ 2020-04-28 12:32  哀莫  阅读(338)  评论(0编辑  收藏  举报

欢迎访问我的主页!