精通 Linux 第2版 PDF 文档
本书讲解了 Linux 操作系统的工作机制以及运行 Linux 系统所需的常用工具和命令。根据系统启动的大体顺序,本书更深入地介绍从设备管理到网络配置的各个部分,最后演示了系统各部分的运行方式,并介绍了一些基本技巧和开发人员常用的工具。
本书适合对 Linux 感兴趣的初学者阅读。
之所以写这本书,是因为我觉得你应该对你使用的计算机有所了解。你应该可以让软件去做你想让它去做的事(当然要在它的能力范围之内)。要做到这一点,关键是必须理解软件能做什么,以及是怎么做的。这些正是本书要介绍的内容。这样你就不必对着计算机抓狂了。
如果你要学习这方面的知识,Linux 是一个很好的平台,因为它是一个透明的系统。特别是大多数系统配置都存放在文本文件中,让人一目了然。难点在于了解每个组件分别负责什么,以及它们如何协同工作。
目录
第 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 常见错误
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 和用户切换
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
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 脚本基础
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.7 pkg-config
16.4 实践安装
16.5 打补丁
16.6 编译和安装的问题排查
16.7 前瞻
第 17 章 在基础上搭建
17.1 Web 服务器与应用
17.2 数据库
17.3 虚拟化
17.4 分布式计算与实时计算
17.5 嵌入式系统
17.6 结束语
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/04/u135RaTuzxJuheYy.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论