内容简介
本书是Linux领域的经典实战指南,由资深Linux专家Brian Ward撰写,全面覆盖Linux系统管理、服务器配置、脚本编程等核心技能。作者以清晰易懂的方式解读Linux内核工作原理,从进程管理、内存管理到文件系统,帮助读者建立系统级认知。
第二版在保留原版精华基础上,新增了对现代Linux发行版(如Ubuntu、CentOS)的适配内容,重点讲解了systemd初始化系统、网络配置工具netplan、容器技术(Docker/LXC)等新特性。书中包含大量真实案例和命令行实践,覆盖从桌面应用到服务器运维的完整场景。
本书适合有一定计算机基础的开发者、系统管理员和高级用户,可帮助读者真正理解Linux设计哲学,提升问题排查与系统优化能力。通过系统学习,读者将掌握安全加固、性能调优、自动化部署等企业级运维技能。
目录
读者对象
阅读要求
阅读方法
动手操作
本书结构
第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.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.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.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.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.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.3 以斜杠结尾
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.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.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 结束语
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。