第二章、 Linux 如何学习

最近更新日期:2009/08/06
目前Linux上头有两种主要的操作模式,分别是图形介面与文字介面,那么学习Linux要用X-Window(图形介面)好还是Command Line(文字介面)好?这两种学习心态有什么优缺点呢?此外,有没有良好的入门文件可供参考? Linux学习有困扰的时候应该要如何发问?要到哪里去搜寻网路资源?还有,怎样进行有智慧的提问?嗯! 在这一章里面,就让我们好好谈一谈!


Linux当前的应用角色


第一章Linux是什么当中,我们谈到了Linux相关的历史, 与简单的介绍了一下Linux这个『Kernel』与Linux distributions等等。 而在开始进入Linux的基础学习之前,我们有必要了解一下应该要如何有效的学习Linux! 但在谈到Linux如何学习之前,我们得就Linux目前的一般应用来说明一下,因为每种应用你所需要的Linux技能都不相同! 了解Linux的应用后,你才好理解你需要的是什么样的学习方式!

由於Linux kernel实在是非常的小巧精致,可以在很多强调省电以及较低硬件资源的环境底下执行; 此外,由於Linux distributions整合了非常多非常棒的软件(不论是专利软件或自由软件), 因此也相当适合目前个人电脑的使用呢!当前的Linux常见的应用可约略分为企业应用与个人应用两方面来说:


企业环境的利用


企业对於数位化的目标在於提供消费者或员工一些产品方面的资讯 (例如网页介绍),以及整合整个企业内部的数据统一性 (例如统一的帐号管理/文件管理系统等)。另外,某些企业例如金融业等,则强调在数据库、安全强化等重大关键应用。 学术单位则很需要强大的运算能力等。所以企业环境运用Linux作些什么呢?


  • 网路服务器:

这是Linux当前最热门的应用了! 承袭了Unix高稳定性的良好传统,Linux上面的网路功能特别的稳定与强大! 此外,由於GNU计画与Linux的GPL授权模式,让很多优秀的软件都在Linux上面发展, 且这些在Linux上面的服务器软件几乎都是自由软件!因此,做为一部网路伺服器,例如WWW, Mail Server, File Server等等,Linux绝对是上上之选!当然,这也是Linux的强项! 目前很多硬体厂商甚至搭配自家的硬件来销售Linux呢!例如底下的连结看看先:



  • 关键任务的应用(金融数据库、大型企业网管环境):

由於个人电脑的效能大幅提升且价格便宜,所以金融业与大型企业的环境为了要精实自己机房的机器设备, 因此很多企业渐渐的走向Intel相容的x86主机环境。而这些企业所使用的软件大多使用Unix操作系统平台的软件, 总不能连过去发展的软件都一口气全部换掉吧!所以罗, 这个时候符合Unix操作系统标准并且可以在x86上运作的Linux就渐渐崭露头角了!^_^

目前很多金融业界都已经使用Linux做为他们的关键任务应用。所谓的关键任务就是该企业最重要的业务啦! 举例来说,金融业最重要的就是那些投资者、帐户的数据了,这些数据大多使用数据库系统来作为存取介面, 这些数据很重要吧!很多金融业将这么重要的任务交给了Linux了!你说Linux厉不厉害啊?(注1)


  • 学术机构的高效能运算任务:

学术机构的研究常常需要自行开发软件,所以对於可作为开发环境的操作系统需求非常的迫切!举例来说, 非常多技职体系的科技大学就很需要这方面的环境,好进行一些毕业专题的制作呢! 又例如工程界流体力学的数值模式运算、娱乐事业的特效功能处理、软件开发者的工作平台等等。 由於Linux的创造者本身就是个电脑性能癖,所以Linux有强大的运算能力;并且Linux具有支援度相当广泛的GCC编译软件, 因此Linux在这方面的优势可是相当明显的!

举个鸟哥自己的案例好了,鸟哥之前待的研究室有跑一套空气品质模式的数值模拟软件。 这套软件原本只能在Sun的SPARC机器上面跑。后来该软件转向Linux作业系统平台发展, 鸟哥也将自己实验室的数值模式程式由Sun的Solaris平台移植到Linux上面呢! 据美国环保署内部人员的测试,发现Linux平台的整体硬件费用不但比较便宜(x86系统嘛!)而且速度还比较快呢!

另外,为了加强整体系统的效能,丛集电脑系统(Cluster)的平行运算能力在近年来一直被拿出来讨论(注2)。 所谓的平行运算指的是『将原本的工作分成多份,然后交给多部主机去运算,最终再将结果收集起来』的一种方式。 由於透过高速网路使用到多部主机,将能够让原本需要很长运算时间的工作,大幅的降低等待的时间! 例如中央气象局的气象预报就很需要这样的系统来帮忙!而Linux操作系统则是这种架构下相当重要的一个环境平台呢!

Tips:
目前鸟哥所在的昆山科技大学资讯传播系,我们系上就有一套由12部双核心个人电脑组成的丛集电脑架构; 这一整组配备组起来差不多30万左右,不过却可以让我们的数值模式大幅降低等待时间!这12部主机装的就是Linux啦!
鸟哥的图示

个人环境的使用


你知道你平时接触的电子用品中,哪些咚咚里面有Linux系统存在呢?其实相当的多呢!我们就来谈一谈吧!


  • 桌面计算机:

所谓的桌面计算机,其实就是你我在办公室使用的计算机啦。一般我们称之为Desktop的系统。那么这个 Desktop 的系统平时都在做什么呢?大概都是这些工作吧:

  • 上网浏览+即时通讯(MSN, Skype, Yahoo...);
  • 文书处理;
  • 网路介面之公文处理系统;
  • 办公室软件(Office Software)处理数据;
  • 收发电子邮件;

想进行这些电脑工作时,你的Desktop环境需要什么咚咚?很简单,『就是需要窗口』! 因为上网浏览、文书编排的所见即所得介面,以及电子公文系统等等, 如果没有窗口介面的辅助,那么将对使用者造成很大的困扰。而众所皆知的, Linux早期都是由工程师所发展的,对於窗口介面并没有很需要,所以造成Linux不太亲和的印象。

好在,为了要强化桌面计算机的使用率,Linux与X Window System结合了! 要注意的是,X Window System仅只是Linux上面的一套软件, 而不是核心喔!所以即使X Window挂了,对Linux也可能不会有直接的影响呢! 更多关於 X window system 的详细信息我们留待第二十四章再来介绍。

近年来在各大社群的团结合作之下,Linux的窗口系统上面能够跑的软件实在是多的吓人!而且也能够应付的了企业的办公环境! 例如美观的KDE与GNOME窗口介面,搭配可相容微软Office的Open Office软件, Open Office包含了文书处理、电子试算表、简报软件等等,功能齐全啊!然后配合功能强大速度又快的Firefox浏览器, 以及可下载信件的雷鸟(ThunderBird)软件(类似微软的Outlook Express),还有可连上多种即时通讯的Pidgin! Linux能够做到企业所需要的各项功能啦!


  • 手持系统(PDA、手机):

别跟我说在台湾你没有用过手机!你知道吗,很多的手机、PDA、导航系统都可能使用的是Linux操作系统喔! 而为了加强Linux操作系统在手机上面的统一标准,很多国际厂商合作了一个LiMo的计画(Linux Mobile phone),也有Linux的手机论坛,你可以参考一下底下的连结:

除此之外,还有社群以及Google这个高超的家伙也在玩Linux手机喔!例如底下的连结说明:

了解了吧?在你天天碰的手机里头可能就含有Linux操作系统呢!很有趣的发现吧! ^_^


  • 嵌入式系统:

第零章当中我们谈到过硬件系统, 而要让硬件系统顺利的运作就得要撰写合适的操作系统才行。那硬件系统除了我们常看到的计算机之外, 其实家电产品、PDA、手机、数位相机以及其他微型的计算机配备也是硬件系统啦! 这些计算机配备也都是需要操作系统来控制的!而操作系统是直接嵌入於产品当中的,理论上你不应该会更动到这个操作系统, 所以就称为嵌入式系统啦!

包括路由器、防火墙、手机、PDA、IP分享器、交换器、家电用品的微机控制器等等,都可以是Linux操作系统喔! 酷学园内的Hoyo大大就曾经介绍过如何在嵌入式设备上面载入Linux! 目前火红的netbook中,很多也是使用Linux哩!

虽然嵌入式设备很多,大家也想要转而使用Linux操作系统,不过在台湾,这方面的人才还是太少了! 要玩嵌入式系统必须要很熟悉Linux Kernel与驱动程序的结合才行!这方面的学习可就不是那么简单喔! ^_^

总之,网路服务器、工作站计算机、桌面计算机等等,就是Linux目前最常被应用的环境了。 而您如果想要针对桌面计算机,或者是网路服务器主机来学习的话,对於Linux, 您应该如何进行学习的课题呢?底下我们就来谈一谈。


鸟哥的Linux苦难经验全都录


为什么鸟哥要先介绍Linux的应用,并且还要写这一章『如何学习』呢?原因就是.....鸟哥曾经受过伤害啊! 瞎密?什么伤害呢?是要看外科还是精神科?都不是啦!因为鸟哥玩Linux初期曾经犯了『天下新手都可能容易犯的错』~@_@ 所以这里才先要跟大家耳提面命一番嘛!


鸟哥的Linux学习之路


  • 接触Linux的原因

大约在1999年左右,鸟哥因为学业上的需要,『被迫』得去学习Unix系统,那个时候我们使用的Unix系统是Sun 的SPARC+Solaris操作系统,当时的Sun Unix可不是一般人玩的起的,鸟哥也是一般人,所以当然也就玩不起Sun Unix罗! 然而学业上所需要完成的计画案还是需要进行的,那怎么办呢?这个时候就得要想一些替代方案啦!

咦!听说有另外一种可以在PC上头跑的Unix-Like系统,叫做Linux的,他的介面、功能以及基本的档案架构都跟Unix差不多, 甚至连系统稳定性也可以说是一模一样,而且对於硬件配备的要求并不高。嗯!既然玩不起几十万起跳的Unix系统, 那么使用一些即将淘汰的计算机配备来架设一部Linux主机吧!

在经过了一些时候的努力之后,呵呵!竟然真的给鸟哥架起来了(当时的版本是Red Hat 6.1)!哇!好高兴! 那么就赶快先来熟悉他,然后等到有了一定的经验值『升级』成老手级之后, 再来玩Unix吧, 以免玩坏了几十万的大电脑!嗯!这似乎是不错的方式,所以就开始了鸟哥的Linux学习之路啦!


  • 错误的学习方针阶段

由於鸟哥之前连Unix是啥都没听过,当然就更别提Linux这套操作系统,更可怕的是,听说Linux还需要使用到指令列模式! 刚开始碰还真的有点紧张。还好,鸟哥玩计算机的历史可以追溯之前的DOS年代,所以对於指令列模式多多少少还有点概念, 这过去的经验或许应该可以撑上一阵子吧?但是没想到Linux的指令真是『博大精深』呐!早期的DOS概念简直就是不够用啊~ 因此,为了偷懒,一开始鸟哥就舍弃指令列模式,直接在X-Window上面玩起来了!

在还没有安装Linux之前,鸟哥就买了两三本书,每本都看了N遍,发现到每一本书的前半段, 在Linux的基础方面的介绍谈的不多,了不起就是以一些工具教你如何设定一些很重要的参数文件, 但偏偏没有告诉你这些工具到底做了什么事情或修改了哪些文件?不过书的后半段却放上了很多的架站文件, 然而却都有点『点到为止』,所以当时总觉得Linux很有点朦朦胧胧的感觉, 而且在当时最严重的现象是『只要一出现问题,身为使用者的鸟哥完全无法解决, 所以只好选择重新安装,重新设定与书本教的内容完全一模一样的环境!』不过,即使如此, 很多时候仍然解决不了发生问题的窘境!

Tips:
那个时候真的很好笑,由於鸟哥并非资讯科系出身,所以身旁并没有懂电脑/作业系统的朋友,也就不知道怎么发问! 曾经为了要安装光驱里面的数据,放进光驱后,利用X Window的自动挂载将光盘挂载起来, 用完之后却发现无法退出光驱,最终竟然用回纹针将光盘强制退片~唔!这样光盘就无法再使用~@_@只好又重新启动....
鸟哥的图示

在当时,由於知道Linux可以用来做为很多功能的服务器,而鸟哥的研究室当时又需要一部电子邮件服务器, 所以鸟哥就很高兴的藉由书上的说明,配合Red Hat 6.1提供的一些工具程式,例如:Linuxconf, netcfg等等的工具来架设。 然而由於工具程式的整合度并不见得很好,所以常常修改一个小地方会搞上一整天!

好不容易使用了所有的知道的工具来架设好了鸟哥的电子邮件服务器,哈哈!真高兴, 请注意呦!这个时候鸟哥的Linux主机上面开了多少的ports/services其实当时的鸟哥并不清楚, 当时认为『俺的机器就只有我认识的一些朋友知道而已, 所以反正机器能跑就好了,其他的设定似乎也就不这么重要』。


  • 恶梦的开始.....

然而事实上,这种学习心态却造成了后来鸟哥恶梦的开端!怎么说呢?虽然Linux号称需要的硬件等级不高, 不过X-Window却是很耗系统资源的一项软件,因为只要涉及到图形介面的话,需要亲和力嘛!就需要多一点RAM啦、 多一些硬盘空间啦、显示卡与CPU要好一点啦等等的,且早期的图形介面整合度不是很高,所以造成X-Window死掉的机会是很高的。

在鸟哥当时安装的Linux主机当中,使用的是旧旧的电脑,系统的配备并不高,在跑了X-Window之后, 剩下可以使用的实体内存其实已经不多了,再跑其他的服务,例如mail server,实际上很有点吃力! 所以当时的一些同仁常常抱怨我们的机器怎么老是服务不良?怪怪!这个Linux怎么跟『号称稳定』的名号不符? 而在鸟哥登入系统检查之后,才发现,哇!X-Window又挂了?当时还不清楚原来可以使用ps及kill等指令将X-Window杀掉即可让 Linux恢复正常,竟然是用reset的方式来重新启动Linux,现在想起来,当时真糗....

后来再重新安装一次,并选择了文字介面登入系统,呵呵!果然系统是稳定多了!服务上面似乎也就安定了许多。 不过,你以为恶梦这样就解决了吗?当然不是!在鸟哥的机器服务了一阵子之后,我老板竟然接到上层单位的来信, 信中说明『贵单位的主机可能有尝试入侵国外主机之嫌,敬请妥善改善!』 哇!这不就是警告信吗?还好不是律师存证信函~当时至少还知道有所谓的系统登录文件可以分析确切日期有谁在线上, 没想到一登入之后才发现,搞了老半天,原来我们的机器被入侵了!而身为管理者的鸟哥竟然还茫然不知~这真是一大败笔....

Tips:
瞎密?由图形介面转到文字介面竟然用『重新安装』来处理?不要怀疑,当初没有学好Linux的时候, 就是以为需要重新安装,尤其Windows的经验告诉我们,这样做『才是对的!』@_@
鸟哥的图示

在赶快重新安装,并且重新参考很多文件,架设好了防火墙之后,以为终於从此就可以高枕无忧了! 唉~结果还是不尽然的,因为我们的电子邮件服务器早就被当成垃圾转信站,造成区域网路内网路流量的大量提高, 导致常常会无法连上网际网路....


  • 一个贵人的出现

在经过了一年多以及经历那么多事件后,鸟哥还是没有觉悟ㄟ!真糟糕! 后来因为某些小事情无法解决而上网搜寻,竟然找到Study Area(酷学园), 并主动发出email给站长网中人(netman)先生,网中人完全没有就我的问题来回答,竟然是大发雷霆的臭骂鸟哥一顿~ 唔!怎么会这样~鸟哥从小到大念书几乎没有被念过~竟然读到这么大了还被人家骂!真可悲~ 於是乎痛定思痛,遵循网中人大哥的教诲,从他的网站(http://www.study-area.org)的内容出发,并将鸟哥原本的网站全部砍掉重练!

花了两三个月在网中人的网站上学习到Linux最基础的文件架构、指令模式与脚本(Shell and shell scripts)、 软件管理方式和资源与帐号管理等等,而在将这些基础的架构理解之后,再回头看一下各式各样的server启动服务与相关的技巧, 发现『哇!原来如此呀!怎么这么简单的东西当初搞了我几天几夜睡不好!』 尤其最重要的登录资讯的追踪,帮鸟哥避免了很多不必要的系统伤害行为。

此外,而为了方便鸟哥本身的管理,於是开始了一些脚本(shell scripts)的编写,让日常的管理变的更轻松而有效率! 当然,这些工作几乎都是在文字介面底下完成的,图形介面之下的工作毕竟还是有限的。


  • 撰写文件的有趣经验

后来鸟哥为了想要赶快毕业,但希望能够让我在实验室的努力不被学弟妹所搞烂,所以开始撰写一些FAQ的文件。 但是没想到越写越发现自己懂得竟然是那么少,於是乎就越写越多,数据也越查阅多,渐渐的就有『鸟哥的Linux私房菜』网站的出现! 而在写了这个网站之后发现到更多的朋友其实与鸟哥有相同的经验,他们也在讨论区上面提供非常多有用的意见, 於是网站就越来越热闹了!

从撰写文件的经验里面也接触到很多业界的朋友,才发现到一部Linux主机其实是做不了什么大事的! 重点是『我们要让Linux解决什么问题』,而不是单纯的只是去学习架站而已! 尤其酷学园的ZMAN对鸟哥网站关於服务器方面的数据影响很大!我们不能够让Linux死板板的定位在那边, 还有更多可用的功能可以让我们去思考呢!


  • 鸟哥的忠言,希望不会逆耳

经过上面鸟哥学习之路的经验分享之后,我想,您应该也慢慢的了解鸟哥想要提出这本经验谈的书籍最主要的目的了, 那就是想『让想要学习Linux的玩家可以快速且以较为正确的心态来进入Linux的世界!』 而不要像鸟哥在Linux的环境中打转了一年多之后才来正确的建立概念。希望我这老家伙的苦口婆心不要让您误会啊!

但是玩Linux并不一定要很辛苦的!因为『你玩Linux的目的跟我又不一样』! 鸟哥是为了要学习Linux上面的功能,好应用在未来学术研究领域上,所以才这样接触他~ 那难道你不能只为了要使用Linux的桌上办公环境吗?是的!所以鸟哥想来谈一谈Linux的学习者心态!


学习心态的分别


  • 架不架站有所谓:

大家都知道Linux最强项的地方在於网路,而Windows是赢在使用者介面较为亲善。 然而很多使用者还是常常会比较Linux与Windows这两套相当流行的操作系统,初次接触Linux的人比到最后的结果都是 『Linux怎么都要使用文字介面来架站,怎么这么麻烦,还是Windows比较好用』, 事实上这么比较实在是有点不公平且没有意义, 为什么呢?基本上,Windows是很普及的一个操作系统,这点我们都无法否认,但是,一般使用Windows的使用者用Windows来做什么?

  • 上网、即时通讯、打屁聊天打发时间;
  • 做做文书工作,处理电子试算表;
  • 玩Game及其他休闲娱乐;

当然啦,Windows的工作环境还有很多可以发展的空间,不过这里我们主要以一般使用者的角度来看。 OK!说了上面这几个工作,请问一下,『一般使用者谁有在使用Windows玩架站!』? 很少对不对!是的!真的是很少人在玩Windows的架站!那么如何可以说Linux无法普及是文字介面惹的祸呢? 鸟哥相信,如果是一般使用者,应该不至於想要使用Linux来架设网站,所以美美的X-Window对於一般使用者已经相当的好用了, 实在没有必要来学习架站的原理与过程,还有防火墙的注意事项等等的。

话再说回来,那么你干嘛要使用Linux架站呢?『因为Linux的网路功能比较强呀!』 说的没错,但是,相对的,比较强的项目可能也具有比较『危险』的指数,当你一开始学习Linux就只想满脑子的玩架站, 却又不好好的弄懂一点Linux与网路基础的话,Windows底下了不起是被攻击到您的Windows死掉, 但是在Linux底下,却有可能让你吃上官司的!像上面提到的鸟哥的惨痛教训!


  • 只是图形介面,可以吗?

而如果你已经习惯以图形化介面来管理你的Linux主机时,请特别留意,因为Linux的软件是由多个团队研发出来的, 图形介面也仅是一个团队的研发成果,你认为,一个团队的东西可以将所有团队的内容都完整无缺的表现出来吗? 如果你依赖图形久了,呵呵!那如果你的系统出问题,看来就只能求助於外面的工程师了,如此一来,有学跟没有学有何不同?

曾经有个朋友问我说『唉!Linux怎么这么麻烦?架设一个DNS真是不容易呀!不像Windows,简单的很, 按几个按钮就搞定了!』这个时候鸟哥就回答了一句话『不会呀!如果你只是想要安装DNS的话, 网路上面一大堆按部就班的设定方式教学,照著做,一样可以在十分钟之内就完成一个DNS主机的设定呀!』 他想一想,确实有道理!同时鸟哥又反问的一件事:『你以为学Windows就不需要了解DNS的概念吗? 你有尝试过使用Windows架设DNS却无法让他实地跑的问题吗?果真如此的话,这个时候你怎么解决?』 他愣住了!因为在Windows上面他确实也没有办法解决!所以说,不论是学哪一套系统, 『基础的理论都是不变的』,也只有了解了基础的咚咚之后,其他的技能才能够『触类旁通』呀!

网路上一些老手不太喜欢搞图形介面,是因为觉得图形介面预设的设定常常不合他们的意, 尤其是图形化介面软件为了方便使用者,常常自己加入一些设定,但是这些设定却往往是因地制宜的, 所以反而常常会导致架设的网站无法正常工作!这点在网路新闻群组上面讨论的已经相当清楚了! 与其如此,何不一开始就玩文字介面,去弄懂他呢?


  • 学习Linux还是学习Distributions:

此外,很多玩过Linux的朋友大概都会碰到这样的一个问题,就是Linux distributions事实上是非常多的! 而每个distribution所提供的软件内容虽然大同小异,然而其整合的工具却都不一样,同时, 每种软件在不同的distribution上面摆放的目录位置虽然也是大同小异,然而某些设定档就是摆在不同的目录下, 这个时候您怎么找到该信息?难道非得来一套distribution就学他的主要内容吗?这么一来, 市面上少说也有数十套Linux distributions,每一套都学?如果您时间多到如此地步, 那鸟哥也不知道该说什么好了!如果是我的话,那么我会干脆直接学习一些Linux的基本技巧, 可以让我很轻易的就找到不同版本之间的差异性,而且学习之路也会变的更宽广呢!

鸟哥的观念不见得一定适合你,不过就只是以一个过来人的身份给个小建议, 要么就不要拿Linux来架站,跟Windows一样,玩玩X-Window就很开心了,要嘛真的得花一点时间来玩一玩比较深入的东西, 中国话不是说过吗:『要怎么收获就怎么栽』虽然努力不一定有成果,但最起码,有成果的时候,成果肯定是自己的!


X window的学习


如果你只是想要拿Linux来取代原本的Windows桌面(Desktop)的话,那么你几乎不需要通过『严格的学习』啦! 目前的Linux distribution绝大部分预设就是以Desktop的角度来安装所需要的软件,也就是说,你只要将Linux安装好, 接下来就能够进入Linux玩弄啦!根本就不需要什么学习的哩!你只需要购买一本介绍Linux桌面设定的书籍, 里面有说明输入法、印表机设定、网际网路设定的书籍就很够用了!鸟哥建议的distributions包括有:

另外还有一些网路上面的桌面调教文章也可以参考的!包括有:

如果想知道更多关於图形使用者介面能够使用的软件资讯,可以参考底下的连结(感谢昆山计中提供的连结资讯):

更多的可用软件,可以参考教育部自由软体谘询中心网页的介绍:

如果你不需要很特别的专业软件的支援,那么一般的办公环境中,上面的这些软件通通免费! 而且相信已经足以应付你日常所需的工作环境啦!不过,千万记得,玩X window就好,不要搞架站的东西! 不论是Windows/Linux/Mac/Unix还是什么的,只要是玩到架站,他就不是这么安全的东西! 所以,很多东西都需要学习啦!底下我们就来谈谈,如果有心想要朝Linux操作系统学习的话,最好可以具备什么心态呢?


有心朝Linux作业系统学习者的学习态度


为什么大家老是建议学习Linux最好能够先舍弃X Window的环境呢? 这是因为X window了不起也只是Linux内的『一套软件』而不是『Linux核心』。 此外,目前发展出来的X-Window对於系统的管理上还是有无法掌握的地方,举个例子来说,如果 Linux本身捉不到网路卡的时候,请问如何以X Window来捉这个硬件并且驱动他呢?

还有,如果需要以Tarball(原始码)的方式来安装软件并加以设定的时候,请以X Window 来架设他!这可能吗?当然可能,但是这是在考验『X Window开发商』的技术能力, 对於了解Linux架构与核心并没有多大的帮助的!所以说,如果只是想要『会使用Linux』的角度来看, 那么确实使用X Window也就足够了,反正搞不定的话,花钱请专家来搞定即可;但是如果想要更深入 Linux的话,那么指令列模式才是不二的学习方式!

以服务器或者是嵌入式系统的应用来说,X Window是非必备的软件,因为服务器是要提供用户端来连线的, 并不是要让使用者直接在这部服务器前面按键盘或滑鼠来操作的!所以图形介面当然就不是这么重要了! 更多的时候甚至大家会希望你不要启动X window在伺服器主机上,这是因为X Window通常会吃掉很多系统资源的缘故!

再举个例子来说,假如你是个软件服务的工程师,你的客户人在台北,而你人在远方的台南。某一天客户来电说他的Linux服务器出了问题, 要你马上解决他,请问:要您亲自上台北去修理?还是他搬机器下来让你修理?或者是直接请他开个帐号给你进去设定即可? 想当然尔,就会选择开帐号给你进入设定即可罗!因为这是最简单而且迅速的方法!这个方法通常使用文字介面会较为单纯, 使用图形介面则非常麻烦啦!所以啦!这时候就得要学学文字介面来操作Linux比较好啦!

另外,在服务器的应用上,文件的安全性、人员帐号的管理、软件的安装/修改/设定、 登录档的分析以及自动化工作排程与程式的撰写等等,都是需要学习的, 而且这些东西都还未涉及服务器软件呢!对吧!这些东西真的很重要,所以,建议你得要这样学习才好:


从头学习Linux基础


其实,不论学什么系统,『从头学起』是很重要的!还记得你刚刚接触微软的Windows都在干什么? 还不就是由档案总管学起,然后慢慢的玩到控制台、玩到桌面管理, 然后还去学办公室软件,我想,你总该不会直接就跳过这一段学习的历程吧?那么 Linux的学习其实也差不多,就是要从头慢慢的学起啦!不能够还不会走路之前就想要学飞了吧!^_^!

常常有些朋友会写信来问鸟哥一些问题,不过,信件中大多数的问题都是很基础的! 例如:『为什么我的使用者个人网页显示我没有权限进入?』、 『为什么我下达一个指令的时候,系统告诉我找不到该指令?』、 『我要如何限制使用者的权限』等等的问题,这些问题其实都不是很难的,只要了解了 Linux的基础之后,应该就可以很轻易的解决掉这方面的问题呢! 所以请耐心的,慢慢的,将后面的所有章节内容都看完。自然你就知道如何解决了!

此外,网路基础与安全也很重要,例如TCP/IP的基础知识,网路路由的相关概念等等。 很多的朋友一开始问的问题就是『为什么我的邮件服务器主机无法收到信件?』 这种问题相当的困扰,因为发生的原因太多了,而朋友们常常一接触Linux就是希望 『架站!』根本没有想到要先了解一下Linux的基础!这是相当伤脑筋的! 尤其近来计算机黑客(Cracker)相当多,(真奇怪,闲闲没事干的朋友还真是不少....) ,一个不小心您的主机就被当成黑客跳板了! 甚至发生被警告的事件也层出不穷!这些都是没能好好的注意一下网路基础的原因呀!

所以,鸟哥希望大家能够更了解Linux,好让他可以为你做更多的事情喔! 而且这些基础知识是学习更深入的技巧的必备条件呀!因此建议:

  1. 计算机概论与硬件相关知识:
    因为既然想要走Linux这门路,资讯相关的基础技能也不能没有啊! 所以先理解一下基础的硬件知识,不用一定要全懂啦!又不是真的要你去组计算机~^_^, 但是至少要『听过、有概念』即可;

  2. 先从Linux的安装与指令学起:
    没有Linux怎么学习Linux呢?所以好好的安装起一套你需要的Linux吧!虽然说Linux distributions很多, 不过基本上架构都是大同小异的,差别在於介面的亲和力与软件的选择不同罢了! 选择一套你喜欢的就好了,倒是没有哪一套特别好说~

  3. Linux操作系统的基础技能:
    这些包含了『使用者、群组的概念』、『权限的观念』,『程序的定义』等等,尤其是权限的概念, 由於不同的权限设定会妨碍你的使用者的便利性,但是太过於便利又会导致入侵的可能! 所以这里需要了解一下你的系统呦!

  4. 务必学会vi文书编辑器:
    Linux的文书编辑器多到会让你数到生气!不过,vi却是强烈建议要先学习的! 这是因为vi会被很多软件所呼叫,加上所有的Unix like系统上面都有vi,所以你一定要学会才好!

  5. Shell与Shell Script的学习:
    其实鸟哥上面一直谈到的『文字介面』说穿了就是一个名为shell的软件啦!既然要玩文字介面,当然就是要会使用shell的意思。 但是shell上面的数据太多了,包括『正规表示法』、『管线命令』与『数据流重导向』等等,真的需要了解比较好呦! 此外,为了帮助你未来的管理服务器的便利性,shell scripts也是挺重要的!要学要学!

  6. 一定要会软件管理员:
    因为玩Linux常常会面临得要自己安装驱动程式或者是安装额外软件的时候,尤其是嵌入式设备或者是学术研究单位等。 这个时候Tarball/RPM/DPKG等软件管理员的安装方式的了解,对你来说就重要到不行了!

  7. 网路基础的建立:
    如果上面你都通过了,那么网路的基础就是下一阶段要接触的咚咚,这部份包含了『IP概念』『路由概念』等等;

  8. 如果连网路基础都通过了,那么网站的架设对你来说,简直就是『太简单啦!』

在一些基础知识上,可能的话,当然得去书店找书来读啊! 如果您想要由网路上面阅读的话,那么这里推荐一下由Netman大哥主笔的Study-Area里面的基础文章,相当的实用!


选择一本易读的工具书


一本好的工具书是需要的,不论是未来作为查询之用,还是在正确的学习方法上。 可惜的是,目前坊间的书大多强调速成的Linux教育,或者是强调Linux的网路功能, 却欠缺了大部分的Linux基础管理~鸟哥在这里还是要再次的强调,Linux的学习历程并不容易, 他需要比较长的时间来适应、学习与熟悉,但是只要能够学会这些简单的技巧, 这些技巧却可以帮助您在各个不同的OS之间遨游!

您既然看到这里了,应该是已经取得了鸟哥的 Linux 私房菜 -- 基础学习篇了吧! ^_^ 。 希望这本书可以帮助您缩短基础学习的历程,也希望能够带给您一个有效的学习观念! 而在这本书看完之后,或许还可以参考一下Netman推荐的相关网路书籍:

不过,要强调的是,每个人的阅读习惯都不太一样,所以,除了大家推荐的书籍之外, 您必须要亲眼看过该本书籍,确定您可以吸收的了书上的内容,再下去购买喔!


实作再实作


要增加自己的体力,就是只有运动;要增加自己的知识,就只有读书;当然,要增加自己对於Linux的认识, 大概就只有实作经验了!所以,赶快找一部计算机,赶快安装一个Linux distribution,然后快点进入Linux的世界里面晃一晃! 相信对於你自己的Linux能力必然大有斩获!除了自己的实作经验之外,也可以参考网路上一些善心人士整理的实作经验分享喔! 例如最有名的Study-Area(http://www.study-area.org)等网站。

此外,人脑不像计算机的硬盘一样,除非硬盘坏掉了或者是数据被你抹掉了, 否则储存的数据将永远而且立刻的记忆在硬盘中!在人类记忆的曲线中, 你必须要『不断的重复练习』才会将一件事情记得比较熟!同样的,学习Linux也一样, 如果你无法经常摸索的话,那么,抱歉的是,学了后面的, 前面的忘光光!学了等於没学,这也是为什么鸟哥当初要写『鸟哥的私房菜』这个网站的主要原因, 因为,我的忘性似乎比一般人还要好~~呵呵!所以,除了要实作之外,还得要常摸!才会熟悉Linux而且不会怕他呢!

好了,底下列出几个学习网站来提供大家做为参考实作的依据:

Tips:
由於不同的网站当初撰写的时候所用的Linux软件或版本与目前的主流并不相同,因此参考他人的实作经验时, 必须要特别留意对方的版本,否则反而可能造成你的困扰喔!
鸟哥的图示

发生问题怎么处理啊?建议流程是这样..


我们是『人』不是『神』,所以在学习的过程中发生问题是很常见的啦!重点是,我们该如何处理在自身所发生的Linux问题呢? 在这里鸟哥的建议是这样的流程:

  1. 在自己的主机/网路数据库上查询How-To或FAQ

    其实,在Linux主机及网路上面已经有相当多的FAQ整理出来了!所以,当你发生任何问题的时候,除了自己检查, 或者到上述的实作网站上面查询一下是否有设定错误的问题之外,最重要的当然就是到各大FAQ的网站上查询罗! 以下列出一些有用的FAQ与How-To网站给您参考一下:


    上面比较有趣的是那个TLDP(The Linux Documentation Project), 他几乎列出了所有Linux上面可以看到的文献数据,各种How-To的作法等等,虽然是英文的,不过,很有参考价值!

    除了这些基本的FAQ之外,其实,还有更重要的问题查询方法,那就是利用酷狗(Google)帮您去搜寻答案呢! 在鸟哥学习Linux的过程中,如果有什么奇怪的问题发生时,第一个想到的, 就是去http://www.google.com.tw搜寻是否有相关的议题。 举例来说,我想要找出Linux底下的NAT,只要在上述的网站内,输入Linux跟NAT, 立刻就有一堆文献跑出来了!真的相当的优秀好用喔!您也可以透过酷狗来找鸟哥网站上的资料呢!


  2. 注意讯息输出,自行解决疑难杂症:

    一般而言,Linux在下达指令的过程当中,或者是log file里头就可以自己查得错误资讯了,举个例子来说,当你下达:
    [root@linux ~]# ls -l /vbird
    
    由於系统并没有 /vbird 这个目录,所以会在萤幕前面显示:
    ls: /vbird: No such file or directory
    
    这个错误讯息够明确了吧!系统很完整的告诉您『查无该资料』! 呵呵!所以罗,请注意,发生错误的时候,请先自行以萤幕前面的资讯来进行 debug(除错)的动作,然后,如果是网路服务的问题时,请到/var/log/这个目录里头去查阅一下 log file(登录档),这样可以几乎解决大部分的问题了!

  3. 搜寻过后,注意网路礼节,讨论区大胆的发言吧:

    一般来说,如果发生错误现象,一定会有一些讯息对吧!那么当您要请教别人之前,就得要将这些讯息整理整理, 否则网路上人家也无法告诉您解决的方法啊!这一点很重要的喔!

    万一真的经过了自己的查询,却找不到相关的资讯,那么就发问吧!不过,在发问之前建议您最好先看一下『 提问的智慧 http://phorum.vbird.org/viewtopic.php?t=96』 这一篇讨论!然后,你可以到底下几个讨论区发问看看:


    不过,基本上去每一个讨论区回答问题的熟手,其实都差不多是那几个, 所以,您的问题『不要重复发表在各个主要的讨论区!』 举例来说,鸟园与酷学园讨论区上的朋友重复性很高,如果您两边都发问, 可能会得到反效果,因为大家都觉得,另外一边已经回答您的问题了呢~~

  4. Netman大大给的建议:

    此外,Netman 兄提供的一些学习的基本方针,提供给大家参考:

    • 在Windows里面,程式有问题时,如果可能的话先将所有其它程式保存并结束,然后尝试按救命三键 (Ctrl+Alt+Delete),将有问题的程式(不要选错了程式哦)『结束工作』,看看能不能恢复系统。不要动不动就直接关机或reset
    • 有系统地设计文件目录,不要随便到处保存文件以至以后不知道放哪里了, 或找到文件也不知道为何物。
    • 养成一个做记录的习惯。尤其是发现问题的时候, 把错误信息和引发状况以及解决方法记录清楚,同时最后归类及定期整理。别以为您还年轻,等你再弄多几年计算机了, 您将会非常庆幸您有此一习惯。
    • 如果看在网路上看到任何好文章,可以为自己留一份copy,同时定好题目,归类存档。(鸟哥注:需要注意智慧财产权!)
    • 作为一个使用者,人要迁就机器;做为一个开发者,要机器迁就人。
    • 学写 script 的确没设定 server 那么好玩,不过以我自己的感觉是:关键是会得『偷』, 偷了会得改,改了会得变,变则通矣。
    • 在Windows里面,设定不好设备,您可以骂它;在Linux里面,如果设定好设备了,您得要感激它!

鸟哥的建议(重点在Solution的学习):


除了上面的学习建议之外,还有其他的建议吗?确实是有的!其实, 无论作什么事情,对人类而言,两个重要的因素是造成我们学习的原动力:

  • 成就感
  • 兴趣

很多人问过我,鸟哥是怎么学习Linux的?由上面鸟哥的悲惨Linux学习之路你会发现, 原来我本人对於计算机就蛮有兴趣的,加上工作的需要,而鸟哥又从中得到了相当多的成就感, 所以罗,就一发不可收拾的爱上Linux罗!因此,鸟哥个人认为,学习Linux如果玩不出兴趣, 他对你也不是什么重要的生财工具,那么就不要再玩下去了! 因为很累人ㄋㄟ~而如果你真的想要玩这么一套优良的操作系统, 除了前面提到的一些建议之外,说真的,得要培养出兴趣与成就感才行! 那么如何培养出兴趣与成就感呢?可能有几个方向可以提供给你参考:

  • 建立兴趣
    Linux上面可以玩的东西真的太多了,你可以选择一个有趣的课题来深入的玩一玩!不论是Shell还是图形介面等等, 只要能够玩出兴趣,那么再怎么苦你都会不觉得喔!

  • 成就感
    成就感是怎么来的?说实在话,就是『被认同』来的!怎么被认同呢?写心得分享啊!当你写了心得分享,并且公告在 BBS 上面,自然有朋友会到你的网页去瞧一瞧,当大家觉得你的网页内容很棒的时候, 哈哈!你肯定会加油继续的分享下去而无法自拔的!那就是我啦...... ^_^!

    就鸟哥的经验来说,你『学会一样东西』与 『要教人家会一样东西』思考的纹路是不太一样的! 学会一样东西可能学一学会了就算了!但是要『教会』别人,那可就不是闹著玩的! 得要思考相当多的理论性与实务性方面的咚咚,这个时候,你所能学到的东西就更深入了! 鸟哥常常说,我这个网站对我在Linux的了解上面真的的帮助很大!

  • 协助回答问题
    另一个创造成就感与满足感的方法就是『助人为快乐之本!』当你在 BBS 上面告诉一些新手,回答他们的问题,你可以获得的可能只是一句『谢谢!感恩呐!』 但是那句话真的会让人很有快乐的气氛!很多的老手都是因为有这样的满足感, 才会不断的协助新来的朋友的呢!此外,回答别人问题的时候,就如同上面的说明一般, 你会更深入的去了解每个项目,哈哈!又多学会了好多东西呢!

  • 参与讨论
    参与大家的技术讨论一直是一件提升自己能力的快速道路!因为有这些技术讨论, 你提出了意见,不论讨论的结果你的意见是对是错,对你而言,都是一次次的知识成长!这很重要喔! 目前台湾地区办活动的能力是数一数二的Linux社群『酷学园(Study Area, SA)』,每个月不定期的在北/中/南举办自由软件相关活动, 有兴趣的朋友可以看看:
    http://phorum.study-area.org/index.php/board,22.0.html

此外,除了这些鸟哥的经验之外,还有在 BBS 上面有一封对於Linux新手相当有帮助的文件资料,大家可以多看一看:

除了这些基本的初学者建议外,其实,对於未来的学习,这里建议大家要『眼光看远!』一般来说,公司行号会发生问题时, 他们绝不会只要求各位『单独解决一部主机的问题』而已,他们需要的是整体环境的总体解决『Total Solution』。 而我们目前学习的Linux其实仅是在一部主机上面进行各项设定而已, 还没有到达解决整体公司所有问题的状态。当然啦,得要先学会Linux相关技巧后, 才有办法将这些技巧用之於其他的solution上面!

所以,大家在学习Linux的时候,千万不要有『门户之见』,认为MS的东西就比较不好~ 否则,未来在职场上,竞争力会比人家弱的!有办法的话,多接触,不排斥任何学习的机会!都会带给自己很多的成长! 而且要谨记:『不同的环境下,解决问题的方法有很多种,只要行的通,就是好方法!


重点回顾


  • Linux在企业应用方面,著重於『网路服务器』、『关键任务的应用(金融数据库、大型企业网管环境)』及『高效能运算』等任务;
  • Linux在个人环境的使用上,著重於:桌面计算机、手持系统(PDA、手机)、嵌入式设备(如家电用品等);
  • Linux distributions有针对桌面计算机所开发的,例如Ubuntu, OpenSuSE及Fedora等等,为学习X Window的好工具;
  • 有心朝Linux学习者,应该多接触文字介面(shell)的环境,包括正规表示法、管线命令与资料流重导向,最好都要学习! 最好连shell script都要有能力自行撰写;
  • 『实作』是学习Linux的最佳方案,空读书,遇到问题也不见得能够自己处理的!
  • 学习Linux时,建立兴趣、建立成就感是很重要的,另外,协助回答问题、参与社群活动也是增加热情的方式!
  • Linux文件计画的网站在:http://www.tldp.org

本章习题


  ( 要看答案请将滑鼠移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
实作题部分:
  • 我的 Linux 系统上面老是出现问题,他有一个错误讯息为『fatal: SASL per-connection security setup』请帮我找出可能的原因为何?
    先跑到 http://www.google.com.tw 里面去,输入上列的错误讯息,就可以找到很多文件,根据文件去判断吧!
  • Windows的操作系统当中,老是自动出现一个名为internet optimizer的软件,我想要知道他是什么,可以怎么找?
    利用 http://www.google.com.tw 输入 inetnet optimizer 后, 就可以找到相关的资讯。基本上,这是一个木马程式啦!赶紧移除吧!
  • 想一想再回答,为何您想要学习Linux?有没有持续学习的动力?您想要Linux帮您达成什么样的工作目标?
问答题部分:
  • 我的Linux发生问题,我老是找不到正确的答案,想要去http://phorum.study-area.org提问,应该要先做哪些动作才发问?
    1. 先将您 Linux 上面的问题作一个清楚的描述,例如,做了什么动作,结果发生了什么讯息与结果。
    2. 先到 http://phorum.study-area.org 内的『搜寻』查询有无相关的问题
    3. 再到 http://www.google.com.tw 查询一下有无相关的资讯
    4. 将您的问题描述写下,并且写下您的判断,以及查询过资料的结果。
    5. 等待回覆~
  • 你觉得学习Linux最重要的一环是什么?
    其实是自己的学习心态~最重要的地方在於能够『刻苦耐劳~』 ^_^
  • 什么是TLDP?全名为何?网站在哪里?
    TLDP是 The Linux Documentation Project 的缩写,内容提到的是 Linux 操作系统的各个 How-To 以及相关的说明文件如 man page 等等。网站在 http://www.tldp.org 喔!

参考资料与延伸阅读



2002/07/08:第一次完成或者是上次更新...忘记了~ @_@
2003/01/28:重新修订,加入 X-Window 的简易说明
2005/06/03:将旧的资料移至 此处。同时更新网页资料!
2005/06/08:加入一些练习题~之前的写的不好~已经抽换掉了~
2008/07/26:将原本旧的FC4的版本移动到此处
2008/07/28:将本章与『新手建议』做个连结,加强Linux应用的说明!
2009/08/06:调整一些显示的方式,调整一下课后练习的部分,将题目分开处理。