推荐几本 Unix/Linux 经典书

几天前答应过一位新 VPS 客户,推荐一点 Linux 书,今天静下来写文才发现推荐书其实不是这么容易,至少应该知道一点读书人的背景,是入门、进阶还是高级,阅读习惯啊、方式啊;有人喜欢看例子书,边看边操作学得快;有的人喜欢先读原理,后操作。

现在每年增加的信息量比过去几百年还要多,不过好书还是那么少,经过历史考验的经典书就更少了,每个领域的经典书就那么几本,作为初学者应该首先看完该领域的经典书,然后再看其他的流行好书。

选择经典书是因为,我们实在没有时间花在烂书上,好书能更快更好的帮助我们理解内容,好书是一种享受,你不会觉得读书是一种辛苦。选择英文书是因为,这些经典书的英文都写得朴实、简单,不超过大学四级的阅读水平,长时间侵淫英文书可以为自己以后学习和工作打好基础。在工作中,最新最好最权威的资料都是英文的,翻译过来的二手资料不放心,做技术这行迟早要用英语混日子~

下面是 vpsee 看过的一些好书,有些书至今还放在桌头翻阅,这些经典不管怎么过分推荐和转载都不过分。

Linux 入门

Running LinuxLinux in a Nutshell 都是很棒的 Linux 入门书,如果你是计算机专业出身,只需要这两本书就可以了,这两本书都包括一些初级系统管理内容,Linux in a Nutshell 稍微难一点,建议阅读顺序是先 Running Linux 后 Linux in a Nutshell.

系统管理和网络

UNIX System Administration Handbook 可能是系统管理方面最权威的的一本大部头百科全书式著作,第一版本是1989年发行的,以后一直是 Unix 系统管理的方面的经典,其作者在2002年发布了对应的 Linux Administration Handbook 第一版,然后又成了 Linux 系统管理的必读,终于在2010年的时候作者把这两本书合为一本 UNIX and Linux System Administration Handbook.

Essential System Administration 是另一个 Unix/Linux 系统管理的经典书,可以替代 UNIX and Linux System Administration Handbook,不过建议两本都看看。

TCP/IP Illustrated, Volume 1: The Protocols 是理解 TCP/IP 协议的必读经典,书的内容不涉及具体的网络管理命令,也不讨论如何架设各种服务器,主要讨论 TCP/IP 各层协议是如何工作的,不管你是 System Administrator, Network Administrator, DevOps 还是 System Programmer 这本书都必读,就算今天用 Django, Ruby on Rails 之类的框架编程也应该了解一下底层 HTTP 协议是如何工作的,网络包是如何一层一层的封装、解封的。TCP/IP Illustrated 三部曲的另外两本也很经典,不过太窄太具体,除非你是 TCP/IP 协议设计者或网络栈码农,看 TCP/IP Illustrated, Volume 2: The Implementation 的用处不是很大。

系统编程

The UNIX Programming Environment 是两位 UNIX 大师 Brian W. Kernighan 和 Rob Pike 的合著,UNIX/Linux 编程入门的最好读物,字里行间里浸透了 UNIX 的哲学和设计思想。

The C Programming Language 可能有人会问为啥学 Unix/Linux 要懂 C 语言,C 是 Unix/Linux 的核心,想继续深入理解 Unix/Linux 必须懂点 C 语言,不然下面一些书没法继续读,C 语言还是一种优美、高效的语言,每个程序员都应该会(个人观点)。

Advanced Programming in the Unix Environment 是 Unix/Linux 编程的经典必读书,Unix 大师级作者 Richard Stevens 的巨著,事实上 Richard Stevens 的每本书都是巨著。

Unix Network Programming 是 Richard Stevens 另一巨著,这本经典 Unix 网络编程书可看作上面那本的补充。

编程还应该包括 shell 编程,这里没有单独拿出来推荐是因为因为上面推荐的入门和系统管理书里面都或多或少包括了一些 shell 编程基础知识。

操作系统原理和内核

Operating Systems: Design and Implementation 是操作系统原理的经典书,讲系统原理的还有另一本经典恐龙书 Operating System Concepts,我个人更喜欢前一本一些,理论加实践,书的作者在大学教书的时候没能找到满意的操作系统来教学自己写了一个 Minix,Linus Torvalds 发现 Minix 太简单不实用自己写了一个 Linux,貌似牛人都有共同的特点,不满意就自己造一个~,修改 Minix 内核是很有趣的事情,换工作后一直没机会再玩 Minix.

Linux Device Drivers 是内核编程的入门读物,难得这本经典书还是免费的。

Understanding the Linux Kernel 是 Linux 内核方面的经典,看这本书之前最好看过一些上面讲操作系统原理的书,不要指望看一遍就把这本书都搞懂,理解内核难点的地方在于内核之间的子系统是独立又是交叉的,又缺少实际可运行可修改的例子,不像 web 编程,改几行代码就可以立刻看到效果,所以内核学习是个痛苦的过程,这本书有助于建立一幅完整的 Linux 内核图景。

评论 (3 Comments)

  1. 嗯。准备买一本Running Linux

  2. Linus 编写 Linux 的时候也受了 Operating Systems: Design and Implementation 很大的影响,但随后和此书作者在邮件列表大战一场,真是狗血剧情啊……

  3. Operating Systems: Design and Implementation 这本书国内好像买不到啊!

发表评论