![]() 作者:[中] 赵鑫磊/[加] Jie Zhang(张洁) 出版社: 人民邮电出版社 出版年: 2014-7 页数: 752 定价: 95.00元 装帧: 平装 ISBN: 9787115359360 内容简介 · · · · · ·本书内容源自淘宝技术大学的培训实战。由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和同样来自阿里巴巴集团的支付宝网络技术有限公司的高级专家Jie Zhang(张洁)共同著写。 两位作者用轻松、诙谐的语言讲解了高深的Linux特性。通俗易懂、深入浅出,从Linux设计思想的角度出发,授人以渔。同时,又密切结合应用案例,透彻展示出Linux的系统架构设计是如何在实际中贯穿的,从而让读者真正掌握Linux的强大之处。书中不含较为复杂的技术理论问题,一切从实际出发。 全书共分为三个部分:基础篇、进阶篇和扩展篇。通过对Linux的版本选择与安装、基本使用与系统结构、设计哲学与思想、脚本编程与软件开发、内核编译、网络与认证,以及多媒体等几个方面的精彩讲解,将Linux操作系统的灵魂与运用教授给读者。 作者简介 · · · · · ·赵鑫磊 阿里巴巴集团资深Linux系统专家。 自1998年开始使用Linux,曾参与国内著名的Linux社区发行版MagicLinux的开发工作,是一个土生土长的东北人。工作经历丰富,开过小网吧、大学讲过课、发过小广告(时在阿里妈妈)、干过铁路工(开发铁路车载电视系统)、当过副总裁,但始终没有放弃对Linux的探索与研究,并将这份经历凝聚在了本书之中。 电子邮箱:jagen.zhao@gmail.com 来往账号:飞芃 微信账号:567867 Jie Zhang(张洁) 阿里巴巴集团支付宝网络技术有限公司高级专家。 曾在美国、日本、加拿大和中国的多家高科技企业担任过技术总监等职。参与研发的Jack of Spades Combo卡于1999年3月获得北美权威的PC Magazine杂志的Editors' Choice奖,并赢得PC Computing... 目录 · · · · · ·第一部分 基础篇第1章 第一次亲密接触 2 1.1 让Linux入驻我们的电脑 2 1.1.1 我们用Linux的理由 3 1.1.2 选择哪个发行版 4 1.1.3 安装系统 6 · · · · · ·() 第一部分 基础篇 第1章 第一次亲密接触 2 1.1 让Linux入驻我们的电脑 2 1.1.1 我们用Linux的理由 3 1.1.2 选择哪个发行版 4 1.1.3 安装系统 6 1.1.4 登录系统 15 1.2 不一样的图形操作 15 1.2.1 没有图形的图形 15 1.2.2 架构设计 17 1.3 主流桌面环境 18 1.3.1 KDE初学者的首选 18 1.3.2 GNOME不可磨灭的经典 20 1.3.3 XFCE——轻量、简单、高效 21 1.3.4 LXDE——更轻,同样精悍 21 1.4 返璞归真的命令行 22 1.4.1 开始执行命令 22 1.4.2 文本和图形的切换 23 1.4.3 基础命令的操作 23 1.4.4 快捷键 26 1.4.5 错误信息 28 1.4.6 联机帮助——man很靠谱 30 1.4.7 致命的Linux命令 31 1.5 结束语 32 第2章 融于心而表于行 33 2.1 多用户多任务分时操作系统 33 2.2 用户的身份 35 2.2.1 澡堂子模型 35 2.2.2 理解用户角色 36 2.2.3 /etc/passwd文件查看用户 37 2.2.4 /etc/group文件查看组 38 2.2.5 管理用户和组 39 2.2.6 夺面双雄——利用sudo假借身份 41 2.2.7 我是谁? 44 2.3 文件和它与权限的关系 45 2.3.1 目录与文件 46 2.3.2 文件属性和权限 47 2.3.3 文件连接到底是什么 49 2.3.4 修改文件的属性和权限 51 2.3.5 深入文件权限 52 2.3.6 文件的基本操作 54 2.3.7 搜索文件 55 2.3.8 对文件打包压缩 57 2.4 程序的执行问题 58 2.4.1 执行程序的方法,以及多任务协调机制 58 2.4.2 计划任务 62 2.4.3 守护进程及其作用 64 2.4.4 全面了解程序信息 66 2.5 软件的安装方式 71 2.5.1 从源代码安装软件 71 2.5.2 利用软件管理工具rpm和dpkg 72 2.5.3 更酷的线上升级 73 2.6 磁盘的管理方式 76 2.6.1 Linux的文件系统——甩Windows几条街 76 2.6.2 磁盘的基本操作 78 2.6.3 /etc/fstab文件——决定分区的连接 83 2.6.4 弹性调整容量——逻辑卷 85 2.7 解决上网问题 90 2.7.1 了解IP地址 90 2.7.2 相关配置文件 91 2.7.3 安装网卡 92 2.7.4 手工设定IP地址 92 2.7.5 自动获取IP地址 93 2.7.6 固定IP上网方式 93 2.7.7 ADSL拨号上网方式 94 2.8 不能割舍的shell 96 2.8.1 勤勤恳恳的bash 96 2.8.2 环境变量 98 2.8.3 bash的配置文件 98 2.9 文本处理 101 2.9.1 查看文本内容 101 2.9.2 正则表达式 101 2.9.3 搜索文本的grep 104 2.9.4 排序和去重 105 2.9.5 文件对比命令——diff 105 2.10 结束语 107 第3章 一棵“树”的奥秘 108 3.1 Linux的文件组织结构 109 3.2 基本组织原则 110 3.3 根文件系统 111 3.3.1 原则与特性 111 3.3.2 必备的内容 112 3.3.3 可选的内容 113 3.4 子目录 113 3.4.1 /bin目录——shell命令 113 3.4.2 /boot目录——启动过程所需内容 115 3.4.3 /dev目录——设置文件 116 3.4.4 /etc目录——配置文件 116 3.4.5 /home目录——用户专有 118 3.4.6 /lib目录——共享库和内核模块 119 3.4.7 /media目录——可移动设备 119 3.4.8 /mnt目录——临时挂接 120 3.4.9 /opt目录——附加软件包 120 3.4.10 /root目录——root专有 120 3.4.11 /sbin目录——必备的系统软件 121 3.4.12 /srv目录——服务进程所需数据 121 3.4.13 /tmp目录——临时文件 122 3.5 /usr目录组织结构 122 3.5.1 /usr/bin目录 123 3.5.2 /usr/include目录 123 3.5.3 /usr/lib目录 123 3.5.4 /usr/local目录 123 3.5.5 /usr/sbin目录 124 3.5.6 /usr/share目录 124 3.5.7 /usr/share/man目录 125 3.5.8 /usr/share/misc目录 126 3.6 /var目录组织结构 127 3.6.1 /var/account目录 128 3.6.2 /var/cache目录 128 3.6.3 /var/lib目录 128 3.6.4 /var/lock目录 128 3.6.5 /var/log目录 129 3.6.6 /var/mail目录 129 3.6.7 /var/opt目录 129 3.6.8 /var/run目录 129 3.6.9 /var/spool目录 130 3.6.10 /var/tmp目录 130 3.7 结束语 130 第4章 “笨”出来的文化和哲学 131 4.1 Unix的文化和哲学 133 4.2 “四大笨”之一:万般皆文本 134 4.2.1 二进制的烦恼 135 4.2.2 文本的快乐 135 4.2.3 文本之于配置文件 136 4.2.4 文本之于程序组合 137 4.2.5 文本之于通信协议 138 4.2.6 硬件也文本 138 4.3 “四大笨”之二:四处用脚本 139 4.3.1 富饶的脚本语言 139 4.3.2 为什么不是C 140 4.3.3 脚本的不足和混合编程 141 4.3.4 强力胶水 141 4.3.5 极端的例子 143 4.3.6 软件的适度规模 143 4.4 “四大笨”之三:规律无处寻 144 4.4.1 机制与策略 145 4.4.2 接口与引擎 145 4.4.3 不用重新造轮子 146 4.4.4 内在的支持 146 4.4.5 沉默是金,吝啬是银 147 4.5 “四大笨”之四:配置乱生根 148 4.5.1 什么是不可配的 148 4.5.2 配置三元素 149 4.5.3 配置文件 150 4.5.4 环境变量 151 4.5.5 命令行选项 152 4.6 什么样的文化 154 4.6.1 “傻x”的精明 154 4.6.2 “简单”不简单 155 4.7 这一切的基础大师的阐释 156 第5章 shell脚本编程 159 5.1 第一个shell脚本程序 159 5.2 编程的基本要素 160 5.2.1 变量 162 5.2.2 运算 164 5.2.3 流程控制 165 5.2.4 自定义函数 169 5.3 输入和输出 172 5.3.1 基本的输出 172 5.3.2 命令行参数 172 5.3.3 使用read读取文本行 173 5.3.4 文件描述符 174 5.3.5 格式化输出 175 5.4 调试跟踪 175 5.4.1 空变量问题 175 5.4.2 缺引号问题 176 5.4.3 隔离问题 176 5.4.4 echo普通中见“伟大” 177 5.4.5 “-x”跟踪问题本领高 177 5.4.6 assert函数 177 5.4.7 Caller命令 178 5.4.8 trap命令 178 5.5 高级特性 180 5.5.1 波浪号“~” 180 5.5.2 通配符 180 5.5.3 元字符 181 5.5.4 转义符 182 5.5.5 命令替换 183 5.5.6 运算优先级 183 5.5.7 文件包含 184 5.5.8 eval语句 185 5.5.9 内建命令 186 5.6 shell脚本编程实战 187 5.6.1 守护进程的启动脚本 187 5.6.2 读取数据文件和平滑启动nginx 188 第6章 微型语言 194 6.1 什么是微型语言 194 6.2 软件管理的RPM 196 6.2.1 构建你的第一个RPM包 197 6.2.2 工作原理——分析Spec文件 199 6.2.3 依赖关系 203 6.2.4 个软件多个包 204 6.2.5 小结 206 6.3 制作联机帮助文档的Groff 206 6.3.1 Groff简介 207 6.3.2 Groff的工作方式 208 6.3.3 如何制作一份联机帮助文档 213 6.3.4 导出联机帮助文档 219 6.3.5 小结 220 6.4 把文本当数据库的awk 221 6.4.1 使用方法 221 6.4.2 基本概念 222 6.4.3 注释与空白 223 6.4.4 字符串 223 6.4.5 数值 225 6.4.6 变量 228 6.4.7 模式与行为 229 6.4.8 行为语句 231 6.4.9 小结 237 6.5 神奇的计算器dc和bc 238 6.5.1 历史渊源——最古老的Unix语言dc 238 6.5.2 dc简介 239 6.5.3 更为常用的bc 244 6.5.4 小结 250 6.6 不为人知的m4 250 6.6.1 m4的历史 251 6.6.2 m4的特性 252 6.6.3 从Hello World开始 253 6.6.4 工作方式 255 6.6.5 小结 257 6.7 结束语 258 第7章 编辑器的纷争 259 7.1 独步青云的vi 260 7.1.1 我为vi狂 260 7.1.2 vi的使用 261 7.1.3 vi的高级功能 264 7.1.4 跟我一起打造一个IDE 266 7.2 横刀立马的Emacs 274 7.2.1 Emacs的来历 274 7.2.2 Emacs的基本使用 275 7.2.3 使用Emacs必知必会 278 7.2.4 Lisp语言 279 7.2.5 处理中文问题 283 7.2.6 跟我一起打造一个IDE 283 7.3 结束语 285 第8章 我是Makefile 286 8.1 GNU make及其基本用法 288 8.2 基本概念 289 8.2.1 第一个Makefile例子 290 8.2.2 目标、条件和命令 291 8.2.3 依赖 292 8.2.4 工作方式 292 8.2.5 基本语法 293 8.3 认识规则 294 8.3.1 标准规则 294 8.3.2 隐式规则 294 8.3.3 变量 295 8.3.4 自动变量 297 8.3.5 模式规则 299 8.3.6 假目标 300 8.3.7 路径搜索 302 8.4 高级特性 303 8.4.1 文件包含 303 8.4.2 命令 305 8.4.3 深入变量 307 8.4.4 宏与函数 310 8.4.5 条件指令 311 8.5 Makefile实战 312 8.5.1 自动产生依赖 312 8.5.2 递归式的Makefile 315 8.5.3 自动产生Makefile 317 8.6 结束语 323 第二部分 进阶篇 第9章 特种文件系统 326 9.1 日志和ReiserFS 326 9.1.1 理解日志 327 9.1.2 ReiserFS——卓越的小文件性能与渺茫的未来 328 9.1.3 应用实战 331 9.1.4 小结 331 9.2 进程文件系统procfs 331 9.2.1 神秘的9号计划 332 9.2.2 /proc目录 333 9.2.3 procfs实战 335 9.2.4 小结 339 9.3 tmpfs——满足你对“时空”的双重渴望 339 9.3.1 背景 340 9.3.2 tmpfs文件系统 341 9.3.3 tmpfs实战 341 9.4 devfs和sysfs 345 9.4.1 devfs的由来 345 9.4.2 进入devfs 346 9.4.3 sysfs的由来 347 9.4.4 小结 348 9.5 其他特种文件系统 348 9.5.1 RelayFS 348 9.5.2 debugfs 349 9.6 结束语 349 第10章 生死与共的“兄弟” 351 10.1 死心眼儿的BIOS 352 10.2 小肚鸡肠的MBR(主引导记录) 353 10.2.1 MBR的结构 353 10.2.2 磁盘分区表 353 10.2.3 MBR的功能 355 10.3 和事佬GRUB(牛B的统一引导加载器) 355 10.3.1 Bootloader 355 10.3.2 GRUB的功能 356 10.3.3 GRUB的工作流程 357 10.4 唇齿相依的内核启动参数 358 10.4.1 什么是内核启动参数 358 10.4.2 内核启动参数的格式 359 10.4.3 常用的内核启动参数 359 10.5 自力更生的Linux内核 360 10.5.1 内核引导协议 360 10.5.2 内核为什么要压缩 360 10.5.3 startup_32 361 10.5.4 start_kernel 362 10.5.5 kernel_init 362 10.6 及时雨initramfs 363 10.6.1 寻找init的问题 363 10.6.2 较早的initrd 363 10.6.3 为什么选择initramfs 364 10.7 “生”、“死”永相伴的init进程 364 10.7.1 名不副实 364 10.7.2 运行级别 365 10.7.3 进入运行级别之前 368 10.7.4 进入运行级别 369 10.7.5 转换运行级别 371 10.8 幕后英雄们 371 10.8.1 终端 372 10.8.2 getty系列命令 372 10.8.3 Display Manager 373 10.8.4 伪终端 374 10.8.5 配置文件 374 10.9 结束语 375 第11章 独霸网络的“蜘蛛神功” 376 11.1 功夫理论:网络知识 376 11.2 “蜘蛛神功”第一层:网络工具 378 11.2.1 马步:ifconfig 378 11.2.2 掌法:route 380 11.2.3 腿功:netstat 381 11.2.4 眼力:DNS二把刀 383 11.2.5 身法:tcpdump 385 11.3 “蜘蛛神功”第二层:套接字 387 11.4 内功心法:TCP/IP协议栈初探 388 11.4.1 枯树盘根:系统调用 388 11.4.2 凝神静态:sockfs文件系统 390 11.4.3 气沉丹田:sk_buff 392 11.5 临战杂谈 397 11.5.1 对UDP的错误的认识 398 11.5.2 事半功倍,调节内核参数 399 第12章 一个网络一个世界 402 12.1 You’ve Got a Mail 402 12.1.1 Email服务模式 402 12.1.2 架设Postfix服务器 405 12.1.3 Email故事的结局 409 12.2 联接世界的Web应用 409 12.2.1 Web服务器 410 12.2.2 数据库 412 12.2.3 解释型语言 413 12.2.4 架设Web服务器 414 12.3 铜墙铁壁真功夫——Linux内核集成的IP信息包过滤系统 419 12.3.1 iptables 420 12.3.2 netfilter 423 12.3.3 实践出真知 426 12.3.4 小盒子的秘密 427 12.4 分享文件的乐趣 434 12.4.1 NFS 438 12.4.2 Samba 442 12.5 在虚拟与现实之间穿梭——实现安全的连接 446 12.5.1 VPN实现方式 447 12.5.2 IPSec VPN 448 12.5.3 SSL VPN 452 第13章 打通任督二脉 455 13.1 了解网络驱动 455 13.1.1 网络设备闲谈 455 13.1.2 ioctl这把刷子 456 13.1.3 设备驱动的秘密 459 13.2 无线风光在险峰 461 13.2.1 WLAN 461 13.2.2 Bluetooth 466 13.2.3 NFC——近距无线通信 469 13.2.4 谜底 474 13.3 奇迹是执着创造出来的 474 13.3.1 从2.4到2.6 474 13.3.2 从2.6到3.0 477 第14章 身在江湖 479 14.1 C2级安全认证 479 14.2 Linux的安全问题 480 14.2.1 黑客入侵 480 14.2.2 “病毒泛滥” 482 14.2.3 拒绝服务攻击 483 14.2.4 小结 484 14.3 PAM用户认证机制 485 14.3.1 什么是PAM(可拔插认证模块) 485 14.3.2 PAM的体系结构 485 14.3.3 配置PAM 487 14.3.4 密码映射 494 14.4 应用PAM API 495 14.4.1 开发概述 495 14.4.2 PAM事务 496 14.4.3 事务属性 498 14.4.4 用户认证 499 14.4.5 认证凭证 500 14.4.6 PAM会话 501 14.4.7 用户认证流程 502 14.4.8 模块开发 507 14.4.9 密码的保存 508 14.5 安全增强系统 509 14.5.1 主动访问控制DAC 509 14.5.2 强制访问控制MAC 510 14.5.3 SELinux——Linux的MAC实现 511 14.6 结束语 515 第15章 七种武器 516 15.1 长生剑:fork 516 15.1.1 从线程说起 516 15.1.2 古老而充满活力的进程 520 15.1.3 多进程程序开发 523 15.1.4 进程间通信的实现 531 15.2 离别钩:VFS 537 15.2.1 一切都是文件 538 15.2.2 一棵有生命的“树” 538 15.2.3 VFS简介 539 15.2.4 基本数据结构 540 15.2.5 sockfs 541 15.3 孔雀翎:mmap(内存映射) 543 15.3.1 理解mmap 543 15.3.2 虚拟内存技术 544 15.3.3 应用mmap 548 15.4 碧玉刀:epoll(增强I/O复用) 553 15.4.1 C10K问题 553 15.4.2 epoll的优点 554 15.4.3 epoll的工作模式 555 15.4.4 正确使用epoll 556 15.4.5 用epoll解决C100K问题 561 15.5 多情环:udev 564 15.5.1 设计理念 564 15.5.2 基本构成 565 15.5.3 配置文件 566 15.5.4 规则 566 15.6 霸王枪:LVS 567 15.6.1 负载均衡 567 15.6.2 一个中国人的勇气 569 15.6.3 LVS的特点 570 15.6.4 LVS的工作模式 571 15.6.5 LVS的负载均衡调度算法 576 15.7 拳头:module 578 15.7.1 内核中的Web服务 578 15.7.2 编写你的第一个module 579 15.7.3 module与普通程序的不同 582 15.7.4 module与用户通信 584 15.7.5 内核加载module的原理 590 15.8 结束语 592 第16章 谁都可以从头再来——从头开始编译一套Linux系统 593 16.1 初识工具链——准备环境的必备工具 594 16.1.1 编译器 594 16.1.2 连接器 594 16.1.3 程序库 595 16.1.4 工具链——破解奇特的四角恋 595 16.2 准备环境 596 16.2.1 宿主系统环境 597 16.2.2 生成工具链的binutils 598 16.2.3 生成工具链的gcc 599 16.2.4 生成工具链的glibc 600 16.2.5 解决工具链的一些问题 603 16.2.6 第二次生成工具链的binutils 604 16.2.7 第二次生成工具链的gcc 605 16.2.8 丰富工具链的功能 608 16.2.9 整理工具链 610 16.2.10 小结 610 16.3 生成目标系统的运行环境 611 16.3.1 准备工作 611 16.3.2 安装glibc 614 16.3.3 调整工具链 617 16.3.4 安装binutils 617 16.3.5 安装gcc 618 16.3.6 安装其他基础设施 620 16.3.7 系统启动脚本 622 16.3.8 结束语 623 16.4 定制Linux内核 623 16.4.1 内核的make参数 624 16.4.2 定制界面 625 16.4.3 编译与安装 626 16.5 独立运行 627 16.5.1 /etc/fstab文件 627 16.5.2 使用GRUB配置启动过程 627 16.6 结束语 628 第三部分 扩展篇 第17章 窈窕淑女君子好逑 630 17.1 女人心事难捉摸——Linux图形环境 630 17.1.1 X Window 630 17.1.2 桌面系统 638 17.1.3 XOrg 639 17.2 云想衣裳花想容——Qt与GTK 644 17.2.1 发展历史 644 17.2.2 GTK与Qt的比较 646 17.2.3 大家闺秀Qt 648 17.2.4 小鸟依人GTK 657 第18章 这里也是鼓乐笙箫 667 18.1 与多媒体的第一次握手 667 18.1.1 听声 668 18.1.2 看影 669 18.1.3 多媒体工作室 674 18.2 鼓——ffmpeg 676 18.2.1 羞辱柱与软件许可 676 18.2.2 多媒体的来龙去脉 678 18.2.3 家庭成员 684 18.3 乐——MPlayer与VLC 685 18.3.1 绿色的MPlayer 685 18.3.2 浪漫的VLC 687 18.4 笙——FrameBuffer 690 18.4.1 原理 691 18.4.2 设置FrameBuffer 691 18.4.3 文字倒置滚动 692 18.5 箫——V4L2与ALSA 697 18.5.1 V4L2 698 18.5.2 ALSA 703 18.6 结束语 707 第19章 团结就是力量 708 19.1 标准的前世今生 708 19.1.1 一场拆分引发的标准 708 19.1.2 站在POSIX肩膀上的LSB 709 19.1.3 工作组 711 19.1.4 标准化流程 712 19.2 认证 713 19.3 工具 714 19.3.1 LSB SDK 715 19.3.2 App Checker 716 19.3.3 Distribution Checker 718 19.3.4 LSB Navigator 720 19.3.5 lsb_release的规范定义和实现 720 19.4 LSB的前世今生 721 19.4.1 吃一堑,长一智 722 19.4.2 “哥只是个传说” 723 19.4.3 意气风发的LSB5.0 724 19.5 结束语 724 附录 我的Linux,我做主 725 · · · · · · () "Linux就是这个范儿"试读 · · · · · ·有个OS名叫Linux,它的故事耐人追寻。小小系统,众人追寻,相识相恋,从不伤心……赵鑫磊:Hi,Jie,有人找我出书了,不过我觉得我在网络这方面有些欠缺。我知道你在Linux平台上做过不少项目,特别是网络这方面。你能来帮我一下,我们一起来完成这本书好吗?Jie Zhang:真的吗?那太棒了,虽然现在有关Linux的书不少,但是我相信经过这么多年的风风雨雨我一定能写出另一种味道。.. |
这本书让我生气了,知道了。
能尽量客观的阐述
收到期待观看
深深吸引了我