第 1 章 学习之初

第 1 章 学习之初

作者:李世明

前腾讯高级运维工程师

本章主要介绍什么是Linux以及如何学习Linux。关于Linux的历史,阿铭介绍的并不多,如果你非常感兴趣,可以去网上找一些资料来看。在这一章里,阿铭提供的学习方法也许不一定适合你,请根据自己的实际情况加以调整。总之,我们的目的只有一个——快速、高效地学习Linux。

Linux其实是一个操作系统平台。我们平时常用的操作系统叫作Windows。当然,也有不少朋友使用苹果计算机,苹果计算机所用的系统叫作macOS。也许你还听说过一种系统叫作Unix,这是比Linux还要古老的一种系统,多用在服务器领域,它和Linux最大的不同在于它收费,而Linux免费。Linux也用在服务器领域,大家熟知的阿里、腾讯、百度、美团、Google、Facebook等一线互联网大公司的服务器99%的操作系统都是Linux。大家用的Android手机其实也是Linux操作系统。

说到Linux的历史,故事就多了,只不过阿铭觉得讲太多你也记不住,甚至会产生放弃学习Linux的念头,所以这里只简要介绍一下Linux的由来。

在Linux诞生之前,一直是Unix的天下。但要想使用Unix就必须先购买授权,这在当时是非常昂贵的,很少有人能承担得起。在这样的背景下,很多计算机爱好者非常渴望有一个便宜或者免费的操作系统用来学习、研究。1983年,计算机界的牛人Richard Stallman发起了一个计划,目的就是要构建一套完全自由的操作系统,这个计划就是著名的GNU计划。所谓完全自由,就是要求加入GNU计划的所有软件都必须自由使用、自由更改、自由发布。也就是说,发布软件必须要发布它的源代码,这个源代码可以供别人自由使用,可以被随便更改,但是必须要发布更改后的代码。当然,光说不行,必须要有明文规定许可协议来制约大家如何自由使用,这套规定就是著名的GPL协议。

GNU计划发起后,有很多支持者,所以在这期间产生了许多非常棒的软件,比如vi、Emacs、GCC等。但遗憾的是,一直没有一个比较棒的操作系统出现。直到1991年,芬兰大学生林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)基于兴趣开发了一个类Unix操作系统,该系统一经发布,便受到了广大爱好者的追捧,它就是Linux。1994年,Linux加入GNU计划并采用GPL协议发布。自此,GNU/Linux真正实现了构建一套完全自由的操作系统的设想。

对于Linux这个英文单词,中国人的发音各式各样,有的读作['lɪnɪks](“李尼克斯”),有的读作['linju:ks](“李纽克斯”),有的读作['lɪnəks](“李呢克斯”)。官方给出的标准发音为['li:nэks],写成中文就是“李呢克斯”。如果你之前的发音并非标准发音,那么阿铭希望你日后纠正一下。

在Linux加入GNU计划之前,就已经有不少组织把Linux包装发行了,其中比较出名的有Debian(1993)和Slackware(1993)。而Linux加入GNU之后也有一部分发布版本产生,比如Red Hat(1994)就是在这时候诞生的。大家熟知的Ubuntu(2004)出现得比较晚,它其实是在Debian的基础上发展起来的,也就是说,Ubuntu只是Debian的一个分支。当然,Slackware也有一个比较出名的分支,那就是SUSE(1994)。

可以这样说,目前大家熟悉的所有Linux发行版都是基于上面的几个发行版发布的。这几年比较流行的Android操作系统也是一种Linux发行版。说到Red Hat,我想大家会想到其他两个发行版,那就是Fedora和CentOS,下面阿铭就来说一说它们和Red Hat有什么关系。

Red Hat是Linux非常出名的一大分支,有很多发行版是基于这个分支的。我想大家也听说过国内的一款Linux发行版Red Flag(1999),它就是基于Red Hat发行的,只不过这个版本并不是很流行,用的人不多。2002年,Red Hat推出了面向企业的新的发行版Red Hat Enterprise(后面简称RHEL),而之前的Red Hat不再发行,但它并没有消失,而是由另一个发行版延续,这就是著名的Fedora。其实这个发行版对于RHEL来说就是个开发实验版本,因为RHEL上的很多新技术要先在Fedora上测试,如果稳定,再移植到RHEL上。总的来说,Fedora这个发行版也是十分稳定和优秀的,所以拥有很多爱好者。

接下来,阿铭要介绍一下CentOS这个发行版,它诞生于2003年。如果RHEL和CentOS这两个发行版你都使用过,那肯定会说它们俩简直太像了。没错,CentOS和RHEL几乎长得一模一样,这是为什么呢?大家都知道,Red Hat是基于GNU的,那么它就得遵循GPL协议。RHEL发布后要发布所有源代码,所以CentOS就是拿RHEL的源代码编译而来的,只是有些地方稍微改动了一下。2014年2月,CentOS被Red Hat收入囊中,因为CentOS这个发行版已经广泛流行,这无疑引起了Red Hat官方的重视。

刚才已经介绍过Linux发行版的几大知名分支,那我们要学习的肯定是其中的一种。因为知名,所以用得多;因为用得多,所以值得我们去学习。在学习Linux之前,阿铭要问你一个问题:“我们学习Linux的目的是什么?”阿铭觉得有八成的人会回答:“为了找一份与Linux相关的工作。”如果是这样,那么问题又来了:“你知道大多数企业用哪个发行版的Linux搭建服务器吗?”虽然我们没有官方统计的数据作为依据,但是阿铭工作了这么多年,凭经验来分析,国内大多数企业使用RHEL/CentOS作为服务器操作系统。

RHEL是Red Hat公司推出的一款针对企业的发行版Linux,可以免费下载使用。但是要想获得官方授权,就必须要购买授权协议(也就是所谓的服务),而这个服务费并不便宜。如果我们只是用它来学习,那就无所谓了。只不过会有一个小小的问题:RHEL在没有获得授权的情况下不能使用yum工具(9.2节会详细介绍这个工具,它非常有用),而CentOS有免费的yum工具可以使用。

阿铭推荐大家以后使用CentOS发行版来学习Linux,具体理由如下。

  • 国内大多数企业使用RHEL搭建服务器。
  • 目前使用CentOS的企业越来越多。
  • CentOS和RHEL几乎一样,而且CentOS有免费的yum工具可以使用。
  • CentOS目前已经加入Red Hat公司,且依然完全免费。
  • 本书所有案例均使用CentOS发行版完成。

阿铭并非强制你日后一定要使用CentOS,其实所有版本的Linux都大同小异,只要学会了其中一个,学其他发行版自然是水到渠成的事。

不管是在生活还是工作中,每个人都会逐渐养成一些小习惯。坏习惯一旦形成就很难改正,所以阿铭在这里先给出一些建议,请大家务必引起重视。

操作系统必须要有图形界面,但早期的Linux并不完全支持图形界面,操作起来也没有Windows系统流畅,这也是Windows系统比Linux系统流行的原因之一。在图形界面下进行操作,既直观又简洁,但Linux的图形界面存在许多小问题,所以未被大多数PC机用户认可。

个人计算机的操作系统大多为Windows,其次为macOS,服务器要托管在IDC机房,通过远程去管理。开启图形界面不仅耗费资源,而且远程管理时还会有网络带宽的额外开销,因此Linux在服务器领域比较流行。

目前,也有不少朋友喜欢使用Linux的图形界面及支持图形界面的远程连接工具来管理Linux。鉴于以上使用图形界面的几个弊端,阿铭建议你轻易不要使用Linux的图形界面。

命令行是Linux系统正常运行的核心,也是专业Linux系统工程师必须掌握的技能,所以我们要习惯使用命令行。

在介绍这一节内容之前,阿铭要问你一个问题:“你有没有误删某个重要文件的经历?”我想大多数读者朋友会回答“有”。任何人都会有疏忽的时候,作为一名Linux系统管理员,每天都要和服务器打交道,养成严谨认真的习惯是必要的。

举例来说,服务器上的数据非常重要,如果你每天都备份,那么之后一旦数据损坏,你还可以使用备份的数据。阿铭曾经在多年前犯过这样的错误:没有为数据库上的数据制订备份计划。结果有一天,服务器磁盘损坏,数据不能恢复,以致丢失了大量的客户信息,造成了非常严重的后果。常言道:“吃一堑,长一智。”阿铭在这里提醒读者朋友们,请务必养成备份数据的好习惯。

备份数据固然重要,但也经不起一次次的操作失误。在学习Linux命令行的过程中,你输入命令的速度会越来越快,效率也会越来越高。但与此同时,你也有可能输入了错误的命令而不自知。比如,你要删除某个目录,却把要删除目录的名字写错了,那结果可想而知。所以,阿铭建议你输入命令的速度不要太快,看准了再按回车。另外,对于重要的配置文件,在修改前一定要进行备份,这样一旦出现问题,便可以将文件快速还原。

你有没有这样的习惯?

  • 各个网站的账号和密码都一样;
  • 密码中包含自己的名字或者生日日期;
  • 密码设置得非常简单,采用纯数字形式或者包含一些常用词汇(如love、good等);
  • 将密码存在一个文档里,并保存到U盘随身携带;
  • 密码使用了好多年,一直没有更改过。

以上所有的习惯,不管你符合几条,都说明你的安全意识还不够,需要加强。

我们要登录服务器,必然要使用登录密码,那么这个密码如何设置、如何保存都是有讲究的。首先,密码设置得要复杂,至少要8个字符,包含数字和大小写字母,而且不能有规律性。然后,密码中不能包含你的名字或者生日日期。其次,你不能在所有的网站上都使用同一个账号和密码。近几年,有多起账号泄露事件,如果你在各大网站设置的密码都一样,那么一旦在某一网站上的密码泄露了,就相当于所有的密码都泄露了。再次,密码最好不要长期沿用,建议每隔1~3个月修改一次。最后,阿铭必须提醒你,密码不能保存在一个文档里,更不能把存有密码的文档存到可移动存储设备里。因为可移动存储设备有可能遗失,遗失之后,设置的密码也就遗失了。

说完了密码,阿铭接着来说一说在日常办公室中的安全习惯。你办公时用的计算机有设置密码吗?当你离开工位时,计算机有没有锁屏呢?阿铭觉得大公司应该都有规定:员工的计算机一定要设置好密码,并且员工在离开工位时要把计算机锁屏。这是为了防止一些重要信息被他人获取。你也许会说同事之间都相互信任,没有关系,但万一有人图谋不轨呢?任何意外都有可能发生。最后阿铭送你一句话:“小心驶得万年船。”

关于保存密码,阿铭在这里给大家分享一个小经验。阿铭在各大平台(淘宝、京东、阿里云、印象笔记、QQ、微信、支付宝等)的密码是不一样的,而且密码复杂度也是非常高的。但是这么多密码如何记住?这就需要借助一款工具KeePass来记忆了。KeePass是一款开源免费的软件,历史悠久,所以大家不用担心它的安全性。作为服务器管理员的你来说,更应该注意公司服务器权限的安全性!

好习惯养成了,剩下的就是如何学习了。好的学习方法和学习技巧可以大大提高学习效率。每个人都经历过中考和高考,阿铭相信你已经找到了一套最适合自己的学习方法。

既然你选择了这本书作为启蒙指南,那阿铭就有责任带着大家入门。只要你一步一步跟着阿铭的步伐,相信成功定是指日可待!

有的朋友读书喜欢一蹴而就,恨不得几天就读完,这样即使读完了整本书,也学不到什么。咱们这本书不能和故事书相比,故事书可以一口气看完,但是技术方面的书,光看一遍可不行,我们的目的是要学会和掌握技能。

阿铭建议你每章内容都花2~3天的时间来学习。虽然每一章的内容不多,但其中的小案例需要多练习才能够真正掌握。正所谓“熟能生巧”,这就好比学唱一首歌,如果听一遍你只能知道它是否好听,听两三遍你也许能熟悉它的旋律、记住它的歌名,但如果要学会唱,恐怕至少需要听十几遍吧。

“好记性不如烂笔头”,这是我们上学时老师经常跟我们说的一句话。我们的大脑不是计算机,不能让信息永久保存,所以需要大家善于记笔记,把一些觉得不太容易记住的内容记在小本子上,方便日后复习。

在学习中,我们要善于总结文档,即使工作之后也不要放弃,工作的过程也是学习的过程。遇到问题时,通过查资料或者请教他人顺利解决了问题,那么有必要记下解决这类问题的方法,以便日后举一反三。阿铭就在2009年建立了一个论坛用于记录日常工作中遇到的问题、学习笔记等各类文档,感兴趣或有需要的读者可通过搜索“猿课”去参考。日子久了,文档积累得越来越多,多年后再回头看看自己早期记录的文档,何尝不是一件奇妙的事情!我建议大家申请一个免费的博客来记录自己的学习历程。

记完笔记并不等于掌握了知识,要想完全掌握,就必须经常复习。比如说,你的11位手机号能记住吗?你的QQ号也很长,能记住吗?银行账号呢?身份证号呢?阿铭不知道这些号码你是否能全部记住,但阿铭可以。身份证号码18位,够长吧,相信99%的朋友不能一下子就记住,那为什么我们能记住呢?因为我们在反复使用它。再比如,小时候老师教我们写汉字,对于复杂的汉字,写一两遍是记不住的,只有多写几遍才能完全记住。同样的道理,Linux的命令虽然多,但如果每天都用的话,不出一周,你一定可以记住它们。

在本书中,阿铭会针对性地给出几个小案例,你不必掌握它们,因为就算你背熟书中的所有案例,也不代表你就多么厉害了,阿铭只要求你学会一种技能——举一反三。

记得高三时,数学老师给我们买了好几套模拟题,这些题和高考题很像,因为它们考查的知识点是一致的。我们做这些模拟题的目的并不是把题和答案记住,而是要掌握这道题考查的知识点。只要掌握了知识点,再难的题我们也都可以迎刃而解。

同样,阿铭在书中给出这些小案例也是为了告诉大家某个命令或者某个选项的用法及作用,所以你需要掌握的并不是小案例本身,而是小案例背后的知识。这要求你得学会自己创造案例,多做几个相似的小案例,做到举一反三,之后便能轻松地掌握相关的知识点。

(1) 请查一查Linux的发展历史,并列举几种有代表性的Linux发行版。

(2) 请简述GNU和GPL两个概念。

(3) 列举几种基于GPL协议发行的软件。

(4) 列举几个比较流行的Linux版本,并说一说它们的特点。

需要说明的是,如果需要全书的习题答案,可以找阿铭获取,阿铭的微信是81677956。