为什么要学习 Linux?

有同学说他想学习 Linux,问我如何学习,我就问:为什么学习,有些说看别人学习,想玩玩;有些说 Linux 就业好,等等。想问问大家当初学习 Lin…
关注者
4,098
被浏览
2,016,257

302 个回答

http://www.libprima.net


以下内容转自 zhangzk.net/blog.html 。转载请注明出处。


自由谈 (2014 年 3 月 15 日,科英布拉)


起这么吓人的一个题目,其实只是想写一下 Linux。但我保证决不做标题党。 请注意,这是一篇充满正能量富有哲理的小清新鸡汤文,操作系统狂热分子请止步


用 Linux 五年多了,但此前我从来没有就此写过一句话。不过我倒是经常问别人:你用什么操作系统?尤其对刚认识的人。因为用 Linux 的人很可能跟我三观接近,比较容易成为朋友 (警告:逆命题不成立!)。一个无关痛痒的问题能提供如此重要的信息,何乐而不为之?


“三观” 这个词眼下很流行。这原本是一个严肃的概念,现在也不可避免地被解构了。我说的是它的本意。一个人的三观是什么决定的?无非是她/他经历的人与事。正常情况下,能影响到三观的经历只占极少数。对于跟我一般固执的人,这个比例就更低。如果连中午吃馒头还是米饭都管用,这三观也忒不值钱了。


那些重要的人恐怕在回忆录甚至遗书里才好写,重要的事倒是可以提前说道说道。对我而言,从 Windows 转向 Linux 可算是其中之一。


一个操作系统而已,似乎跟馒头和米饭没多大差别,有这么重要吗?


回答这个问题之前,我们先来看看 Linux 与 Windows 最本质的区别在哪里。有人会说前者免费,后者需要买 (或偷)。这只是对 “free software” 的曲解。在我看来,二者最重要的区别乃是它们对自己的用户所做的假设对于 Linux,这个假设是:


用户知道自己想要什么,也明白自己在做什么,并且会为自己的行为负责。


而 Windows 则恰好相反:


用户不知道自己想要什么,也不明白自己在做什么,更不打算为自己的行为负责。


说得更直接一些,前者假定用户是负责任的聪明人,后者反之。Linux 用户不必沾沾自喜,Windows 用户先把刀放下。这些只是假设,它们的 (不是我的) 假设。


这么滴吧,我讲个故事,一来呢,测验一下你的智商;二来呢,缓和一下尴尬的气氛。听好,可招笑了。说,要把大象装冰箱 … 呃,不,故事是这样的:


一位雕刻家爱上了自己创作的女神雕像。他每天对着雕像说话。最后,那座雕像真的变成了一位女神。


这个故事还有另一个版本,你肯定听过:


在一所小学里,心理学家随机选择 20% 的学生,告诉老师他们比别人更聪明。一年之后,这些学生的 IQ 测验果然 (在统计意义上) 更佳。


这个故事流传甚广,但很少有人给出参考文献。这是历史上真实存在的一个试验,1963 年由罗胜道与贾步升在美国加州南旧金山市橡树小学实施。罗是加州大学心理学家教授,而贾时任橡树小学校长。二人于 1968 年就此试验发表了《课堂上的毕马隆效应》,这里是 BibTeX:

@book{pygmalion,
    title={Pygmalion in the Classroom: Teacher Expectation and Pupils' Intellectual Development},
    author={Rosenthal, R. and Jacobson, L.},
    url={http://books.google.pt/books?id=9HbuAAAAMAAJ},
    lccn={lc68019667},
    year={1968},
    publisher={Holt, Rinehart and Winston}
}

毕马隆是希腊神话里的一位雕刻家,就是爱上自己作品的那位。这 (两) 个故事告诉我们:第一,只要功夫深,不怕女神不动心;第二,如果有心理学家来你们学校做试验,躲得越远越安全 —— 80% 和 20%,你觉得哪个几率更大一些?


细心的人可能注意到,上面的故事还告诉我们,他人的期望会在一定程度上影响我们的行为。这就是罗胜道与贾步升所说的 “毕马隆效应”。


Windows 如何影响用户的行为我不清楚,而 Linux 对用户的影响倒是十分有意思。既然假定 “用户知道自己想要什么,也明白自己在做什么,并且会为自己的行为负责”, 如果发生毕马隆效应,那么相当一部分用户会慢慢学会用自己的脑袋思考,按自己的意志行事,并为自己的行为负责。这就是自由,也是 “free software” 之 “free” 的本意。


说到自由,不能不提 John Stuart Mill (约翰·斯图亚特·穆勒) 的 On Liberty (《论自由》)。 我有一本严复先生译的《群己权界论》,买英文版赠的。由于是赠本,印刷装帧不免略显简陋。一次,我的一个同学拿起这本书看了两眼,问我,这是什么书,不是哪个邪教的教义吧?严复恐怕想不到,在他身后近百年,在他的国家二度成为共和国之后六十多年,一个受过良好教育的高级知识分子会把他的译著当做 “邪教教义”。


可能有人要问,所谓的 “按自己的意志行事” 不容易发展为自私自利吗?的确如此,如果没有后面那句 “并为自己的行为负责” 的话。这就是严复把 “On Liberty” 译为“群己权界论” 的原因。任何一个人,只要不是离群索居,她/他的自由就有一定的界限,而所谓 “为自己的行为负责” 至少包括遵守界限并承担越界的一切后果。自由绝不等于为所欲为。如果有人说 “free software” 就是用户可以为所欲为的软件,那还不如认为它是 “免费软件”。


前两天听到一个有意思的观点:全能型政府治理下的老百姓往往公德心不太好。比观点更有意思的是解释:如果家里来了一个保姆,请来之后才发现他什么都管,从头到脚为你立一堆规矩,更不幸的是这个保姆还辞不掉,那很多人可能会 “理性地” 选择与保姆对着干 —— 乱扔烟头、随地大小便、扰乱他干活。观点我同意,但解释我不敢苟同。在我看来,这种现象跟操作系统影响用户行为是一个道理,不过是毕马隆效应罢了。既然假定老百姓素质不高、无法自理,那么久而久之这可能会变成 (统计意义上的) 现实。与之相关的是陈港生的名言 “国人需要管”。这句话本身无可挑剔。“群己权界” 本来就暗示每个人都要为他人让渡自己的一部分自由;在社会上这需要通过管理来实现,所以 “每个社会人都需要管”,国人自然不例外。不过,如果陈先生的意思是 “国人比别人更需要管,因为国人比别人更不具备公民素质”,那可要小心了。一旦这种言论大行其道,其毕马隆效应将是非常可悲的。另外,不难注意到,这其实是一种种族歧视言论。在一个高级知识分子把《群己权界论》当邪教教义的社会里,即便有人堂而皇之散布这样的言论也不奇怪。当然,这都是诛心之论,陈先生是好的。


好像越扯越远了,说好的 Linux 呢?其实我对 Linux 的了解十分有限,从来是现学现用,谷哥就是我的老师。所以,我没有资格在技术层面上谈论 Linux。不过有几个非技术问题倒是可以探讨一下。


问题一:Linux 对用户友好吗?


回答:“Linux is user-friendly. It's just very selective about who its friends are.” 这句话没有出处,主语本来是 Unix,但 Linux 是 Unix 的一种 (吗),所以它对 Linux 也成立 (吧)。很多人把这句话当作笑话,但对照一下 Linux 对用户所做的假设,我们会发现这句话严肃至极,一点都不好笑。Linux 对用户很友好,但它对自己的用户是有假定的。如果你感觉不到他的友好,那说明你不满足假定。


问题二:听你一说,Linux 好像很高大上的感觉。如果我弃 Windows 从 Linux,用不了多久就会升职加薪当上总经理出任 CEO 迎娶白富美走向人生巅峰吧?想想还有点小激动呢!


回答:我不知道你是从哪里听出 Linux 高大上的。至于你的问题嘛,我还是再讲个故事吧:


一个女生要从三个追求者中选择一个作为自己的白马王子。三人通过重重考验,来到最后一关。女生要求他们亮出自己的笔记本电脑,结果发现第一个追求者用的是 Windows,第二个用的是 Linux,而剩下那个用的当然是 Mac 了。最后她选了胸大,哦不,最有钱的那一个。


对了,你不会天真到以为用 Mac 的就一定有钱吧?


问题三:上面那个故事里的女生到底应该选哪个?


回答:如果你对故事里给出的答案不满意,这个问题就难了。不过,如果这个女生想做女王大人,断不可选择第二个追求者。否则,根据毕马隆效应,白马王子可能会因抑郁而自尽。


问题四:到底 Windows 和 Linux 哪个好?我该用哪一个?


回答:Linux 和 Windows 哪个好?这个问题就跟纠缠豆腐脑该加糖还是加盐一样没有意义。操作系统只是一个工具,适合你的就是最好的。Linux 传教士们,省省吧!“自由即责任,世人多畏之。” 不论到什么时候,Linux 用户都将是相对少数,这是人性决定的。如果真的理解 Linux 的哲学,那你应该明白,每一个人都可以问 “我该用哪个”,但任何人都不应管 “她/他该用哪个”。Windows 支持者们,不要再说 “Linux 我试过,太难用,跟 Windows 差距太大”。这很可能是你的真实感受,但明智的做法是装作从来没试过,不要宣扬。原因很简单:“若无力驾驭,自由便是负担。”


问题五:你怎么不说 Mac?


回答:买不起。


问题六:说好的哲理呢?说好的正能量呢?说好的小清新呢?说好的鸡汤呢?我看你就是一个 “操作系统狂热分子” 吧?


回答:曾经是,但经过积极改造,现在已经重新做人,成为一个实用主义者了。只要满足以下三条,任何操作系统我都乐于接受:


1. 用户自主。用户决定系统如何工作,而不是反之。任何提示用户 “正在安装更新,请不要关机” 的行为都跟不以结婚为目的的恋爱是一个性质。用户是机器的主人,操作系统只是用户请来的助手;用户知道自己想要什么,明白自己在做什么,也会为自己的行为负责;操作系统尽量少说话,更不要下命令。用户自主还蕴含系统的可定制性:用户可以对系统做任何配置或改造。


2. 用户知情。如有必要,用户可以获知系统工作的任何细节,而不是仅仅被告知 “正在处理一些事情” —— 这比不以结婚为目的的恋爱还让人无法接受。


3. 系统高效。在此系统下用户可以很方便地获得各种工具,并且不同工具能很容易地组装在一起完成复杂的工作。机器更多是用来干活的,所以这一点很重要。


以此为标准,Linux 目前是个不错的选择,而 Windows 不满足任何一条。


怎么,你仍然认为我是操作系统狂热分子?对不起,真不是,我只是选择了自由。


Liberty means responsibility. That is why most men dread it.
 —  George Bernard Shaw
Unless a man has talents to make something of himself, freedom is an irksome burden.
 —  Eric Hoffer

假如你是一个汽车工程师,或者还在学习造汽车的技术,那如果业界有这么一款汽车,性能稳定,设计思想优秀,而且不断在改进,汽车内部一些模块的实现方式甚至成为了业界标准,不仅如此,这款汽车的内部所有详细的技术资料都可以免费获取,也正因为如此,市面上也萌生了超级多的 Linux 发动机构造详解,深入理解 Linux 悬挂系统,你觉得你需不需要学习这款汽车?

答案是当然得学,不学不行。

使用 linux,它免费,稳定,并且有大量优秀的开源软件可以使用,学习 linux,它继承了大部分 unix 的设计哲学,源码公开,社区健壮,教程数不胜数。

所以 linux 是计算机学习者和工程师必学/用的东西,谁都逃不开。

和 windows 不同,unix 把软件的复用性做的非常好,每一个工具,都只做一件事,但要把这件事做到极致。

排序的程序,就只排序,过滤的程序,就只过滤,统计行数字数的,就只统计行数字数,每个工具各司其职,当使用的时候,使用 pipe 管道将它们连接在一起,从而实现了复杂功能。

这里还是要重申一下Linux的江湖地位,也顺手统一回复一下评论的疑问,很多人想转行或者入门IT 运维,Linux作为云计算,是必须要掌握的技能,安利给大家一个可以轻松入门的课程,想提升的同学都可以先试听,比不知道怎么摸门道会省事不少。

windows 系统上,需要一个复杂庞大的应用实现的功能,在 linux 上是用一堆小工具通过 pipe 和 I/O redirection 组合实现的。

在 linux 系统中,你很清楚的知道每个文件都是做什么的,你知道临时文件存在 /tmp里,本地的 ip 映射存在 /etc/hosts 里,可执行应用存在 /usr/bin 里,library 存在 /usr/lib 里,安装和卸载大部分应用都可以直接用发行版提供的 package manager,如果不知道,google 一下,你就知道。

在您google回来之后更新一下题外话,最近有人私信问怎么入行或者转行Linux运维,想在云计算运维等方向长期发展,在这里推荐大家都可以了解学习Linux和红帽认证,掌握运维基本技能会对日后的职业发展会有一个更好的帮助。

Linux作为云计算、网络安全等热门行业的操作系统,属于必须要掌握的技能,不管在Linux学习中处于什么段位,都可以考一个红帽认证,对于新手想入行运维工程师等相关职位的同学,甚至可以考红帽认RHCSA或RHCE作为行业敲门砖,红帽认证是由红帽linux公司推出的,主要包括红帽认证技师(RHCSA),红帽认证工程师(RHCE)和红帽认证架构师(RHCA)。是以实际操作能力为基础的测试项目,主要考察考生在实际操作系统中的实践能力。

以下是推荐学习的干货:

在 2.6 版本之后的 linux ,提供了 “namespaces” 技术,这是一种可以把进程,文件系统,网络等资源通过 namespace 隔离开来的技术,它可以实现非常轻量的虚拟器(容器),而我们现在常常提到的 docker,就是基于此技术开发出来的。



在 linux 系统下,借助 seccomp(2) 系统调用,你可以更加容易的实现沙盒环境,使用沙盒环境,你可以开发一个类似 leetcode 的线上刷题网站,把用户写好的代码放在沙盒里运行,不仅能限制系统调用的使用,还能限制资源的使用量。

2.6 版本实现的 CFS 调度器,用每个进程应该使用多少百分比的 CPU 时间去调度,而不是根据优先级粗暴的分配一个时间片,实现了所谓的“完全公平”调度,而其基于红黑树 + 最左节点缓存的实现方式,也非常值得我们学习。

linux 有组织良好的 man page,如果想知道某个工具如何使用,某个系统调用是做什么的,某个库函数怎么用,只需要一个 man 命令即可,文档良好的组织大大缩短了你寻找文档的时间。

最后,引用一句 Harley Hahn's Guide to Unix and Linux 中的话:

Using Unix will change how you think, and for the better. I believe that if you learn how to read Shakespeare, listen to Mozart, or appreciate the paintings of Van Gogh, you will, in some sense, be a better person. The same is true for learning how to use Unix

使用 Unix 可以改变你的思考方式, 很可能是改进。我相信如果你阅读莎士比亚的戏剧,听莫扎特的音乐,听梵高的画作,会让你从某种意义上讲变成一个更好的人。学习 Unix 也同样如此。

学习提升入口: