基于Linux的学习方法

基于Linux的学习方法

我是一名普通的计算机软件人员,接受过普通的计算机科学教育,有6年工作经验,由于工作原因接触过的系统包括DOS、Windows、Windows NT、Digital UNIX、VMS、Linux、IRIX,在一个比较封闭但是比较安静的环境里自学使用Linux两年多的时间,使用过程中逐步系统了自己的计算机观点,清楚了许多在多年以前老师没有讲清楚或是自己没有想清楚的东西,同样也试着把自己的一点经验和同事们进行探讨,具备一定的Linux支持的经验,自我感觉学习Linux的过程给了我一笔非常宝贵的财富,是一个非常明智的决定。


目的:


---- 一直有一种想法,就是把自己的学习经验和别人进行探讨,让别人不要重复自己的错误,在学习和使用Linux的过程中少走弯路,以一种比较轻松的态度来对待Linux系统,并且我也希望能够为新手提供指路,希望有一天我们的大学生中也能够出现几个象Linus一样的程序员,实际上,中国有足够的人是应该能够做到这点的,对于国家有这样的程序设计人员或是振臂一呼应者如云的工程管理人员是一件幸事。


---- GNU/Linux的学习实际上是一个不断实践的过程,根据自己的需要不断地选择系统中的软件根据其相关文档在系统中付诸实施的过程,制定一个自己满意的目标可能效果更好。参考的目标可能以学习为主更好,倘若你有一定的基础制定一个基于GNU/Linux系统解决方案也不错;参考的应用范围开始以作为服务器运行更好,而不是作为和Windows 95一样的作桌面系统,比较理想的环境就是有一台Windows95的机器作为客户端而把Linux作为服务器,我接触Linux很偶然完全是想看一看免费的UNIX的样子,学习Linux是的目标开始很简单,就是实现类似于Windows NT中的IIS的功能。


---- 我把GNU/Linux的学习分为以下三个部分,并根据自己的经验提出注意的事项。


---- 1、系统安装


---- 对于熟悉Windows环境的人来说GNU/Linux的安装是一个非常痛苦的过程,对于安装过程中遇到的问题足以让许多闻风而动的人放弃了GNU/Linux的使用。


---- 安装过程中比较典型的问题是硬件不支持,如声卡和显示卡,其中显示卡的问题一般是希望安装X-WINDOW环境而引起的,并且常常引起系统重启或安装失败。


---- 所以,我给大家的第一个提示就是可以考虑不安装X-WINDOW软件包;


---- 其次,如果你不是使用的Sound Blast系列的声卡,可以考虑不安装声卡;


---- 如果你的网络卡不识别可以考虑更换一块廉价的NE2000兼容网络卡,保证网络的正常工作对于调试客户/服务器方式的应用程序是必须的,网络服务启动成功但不能正常访问多是由于缺省的路由(default route)没有指定为网卡的地址引起。由于现在的硬件制造商还没有普遍提供Linux下的驱动程序,所以希望提供象Windows环境一样的硬件兼容的确有些困难。


---- 另外,建议做好可能要数次格式化硬盘的准备,实际上当你使用Linux系统一段时间后,就会发现以前频繁格式化硬盘实际上是错误的。


---- 当然,由一个具有Linux使用经验的人进行指导安装是最好的选择。同样,有一本关于Linux系统指南的手册是入门时不错的参考,不过不用太厚的著作因为许多的著作涉及的软件介绍实际多是对软件文档的复制,最好的文档实际就在你的/usr/doc目录下,当然其文档主要是英文,不过都不是太深奥,毕竟很多软件的作者并不是用英文作为母语,并且开始是可以从/usr/doc/HOWTO开始,如可读性极强的《DOS-TO-Linux HOWTO》《NET-3-HOWTO》等文档。


---- 在不熟悉UNIX命令的情况下,可以使用一个类似pctools的软件mc,通过他你可以完成许多的文件操作,如文件的浏览、编辑、删除等,当然熟悉UNIX的基本命令可能是开始时的主要工作,UNIX的命令有一个比较特殊的地方就是有太多的选择项,其实开始只要会它的基本功能就行。系统的安装和配置是一个不断积累经验的过程,急于求成可能效果不好,和Windows入门容易深造难刚好相反Linux是入门困难而深造容易。


---- 2、系统管理


---- 由于Linux是一个多用户多任务的操作系统,系统管理对于在Windows 95环境下的用户可能是一个陌生的事情,在熟悉了基本的文件操作命令之后就可以考虑进行系统管理,系统管理的工作主要分为用户管理、资源管理、软件安装、服务配置和网络。


---- 当你使用linuxconf进行系统管理时,你会发现他许多真正优秀的地方。系统管理是相通的,只要是多用户的系统都存在这样的问题,实现的方法也是大同小异,通过linuxconf进行管理实际是调用了许多的UNIX命令,就象mc一样。


---- Linux的通常使用的命令一般放在/usr/sbin、/usr/bin、/sbin、/bin目录下,可以抽点时间看看到底他们都包含了些什么东西,并且使用man 看一下他该怎么使用。


---- 资源管理的一个特色是文件系统的限额功能,这是UNIX系统普遍具有的功能而在微软的Windows NT 4没有实现的功能。软件安装实际就是使用RPM软件或是直接使用tar,其中RPM包格式的软件更容易安装和使用。


---- 我对服务的理解是系统的驻留程序,要配置Linux的各种服务需要了解涉及的程序和多半在/etc目录下配置文件的作用,/etc目录和Windows的注册表文件类似,包含了系统启动和相关软件的配置信息,在集中管理方面应该说Windows做得更好,不过/etc的文件多半是文本文件,你可以使用编辑器打开他们,其中很多文件里包含了详细的配置帮助,配置服务的过程有时可能就是去掉它的注释符号,实际上Linux下的服务和商用UNIX提供的服务很相似。和在Windows环境相比,最好的是一般修改一个服务后不需要重新启动系统,而只是重新启动该服务。


---- 网络是Linux给我最多收获的部分,由于Linux是一个互联网上诞生的系统,支持完整的TCP/IP网络协议族,其网络应用软件非常丰富,并且很多网络应用软件都系出名门且广泛使用,如BIND、apache、wu-ftp、sendmail、telnetd、NFS、NIS等,并且有非常完备的文档和例子支持,通过配置其网络服务你可以深入了解TCP/IP协议,构造一个非常不错的内部网环境,相关的文章比较多,在此便不再赘述。


---- 同样,支持Linux的大型关系数据库也不少,目前各大数据库厂商(Oracle、Sybase、Informix)为了对抗微软的操作系统垄断,均将产品向Linux移植,主要的目的是为大家提供使用和学习的机会,他们对一般对产品的限制是不能应用于商业领域,同时支持Linux的免费数据库系统也不少如PostgreSQL、MySQL等,由于SQL数据库涉及数据的并发控制、安全管理、备份等问题,掌握它能够让你在管理员的角度思考你的数据共享的问题,并且SQL作为一个标准其通用性较强,所以把Linux作为一个数据库服务器平台是很理想的。同时,将数据库和Web服务器结合起来,利用PHP3或是其他的CGI工具便能够实现一个基于Web的数据库环境,并且是能够被你自由控制的环境。


---- 3、程序设计


---- 目前GNU/Linux系统是一个为程序员提供的操作系统和编程环境,因为其操作系统核心源代码和应用软件的源代码都是公开的,并且你可以根据你的爱好选择编程语言,你可以通过大量的应用软件源代码理解进程、线程、文件、设备、网络、RPC、IPC等原来比较抽象的概念。


---- 和Windows环境下的可视开发环境相比,Linux下的编程可能会困难一些,但是如果只是完成特定的服务端应用,就比较简单和高效,离开了集成环境可能需要的是多开几个虚拟控制台,方便对库函数的参考。由于应用软件主要是C语言程序,有C语言基础是比较好的,并且应用软件的注释都比较好,可以比较方便地修改。当然,用JAVA也比较好,可以充分享受其跨平台的优势,还有就是可以使用以前只是听过而没有用过的Ada、Lisp等语言。


---- 基于GNU/Linux的程序设计可以让你充分感受选择的自由,没有必要大家都去研究核心程序,毕竟计算机是工具,能够为具体应用服务才是计算机软件人员的职责,仅有系统核心也是不够的。不过,在Linux下编写驱动程序不是象想象的那么困难,原因主要是我们的设计者为我们提供了详细的指南,感受最深刻的是在/usr/src/linux/drivers/net/skeleton.c程序,它描述了网卡驱动程序的框架,并且相关的文档非常多如KHG(Linux Kernel Hacking guide)等,相比Windows就更为开放和容易。


---- 我不是程序设计的高手,通过GNU/Linux的使用知道一些有用的方法,学会了欣赏别人的程序,如果让我做一个程序我的第一步可能就是找到相关的程序并查看他们的编程方法。同样,如果能够真正使用互联网,你可以发现更多的程序设计的参考。


---- 我把Linux的学习方法概括为“兴趣驱动、跑马观花,横向比较、纵向精通”。因为GNU/Linux是免费软件,希望通过它立即获得较大的经济效益比较困难,对于它的学习和使用作为一种兴趣比较好,当然汗水洒在田里总会有收获的,你的收获可能是在考虑问题时多了一种观点和参考。


---- 实际上Linux带给我们的最大好处是其上运行的丰富的GNU应用软件,没有丰富应用软件的操作系统是没有竞争力的,采用跑马观花的方法感受其应用软件的魅力,同样能够开阔你的视野,并且开放源代码的应用软件对于你进行应用软件的设计将是一个非常重要的参考;我们可能都有使用其他操作系统的经验,把GNU/Linux与你曾经使用过的系统进行比较是很有意义的,毕竟硬件系统类似那么其软件的功能也不会相差太远,不过在比较的过程中也不应求全责备,毕竟各有所长,所以把一般只需点击鼠标的过程转化为键盘输入应该可以接受;GNU/Linux是一个计算机软件的宝库,如果你希望深入的研究某一领域,它给了你最宝贵的自由和资源,有了总体的观点之后,精通过程将不会象想象的那么困难的。


---- 两年的实践给了我一种驾驭系统的轻松,因为我知道很多东西没有想象的那么难以接受,最重要的是"try again"。实际上,你能够真切地感受到各种系统是相通的,如同水是相通的一样;学习不应该是一种负担,而是根据自己的实际情况去解决实际的问题,兴趣是一种不可忽视的因素。我想象不出如果能够根据大学计算机专业的课程设置,同步提供Linux的实践,那么我们的大学生在毕业时会有怎样的技术水平!! 同样,我们的高校可能会有更多一些的可以为普通人接受的软件,而不是只是培养专家的科研成果,或是寥寥千套的获奖操作系统。没有理论的实践是盲目的,没有实践的理论是空洞的,而计算机软件是需要理论和实践紧密结合的。
引用:
对于这种经验,我们要多多学习呀!!

做加分处理!
全文已阅!~还可以!
不错
比我强的都是好的~!
很详细,有linux2005的介绍吗?
不错,拜读了,linux2005是共创的吧,其它专区有介绍
我顶~~~~~~~~~~~~~~`
毒!!!!
楼主用的系统还真是多。对我来说,LINUX是很新的。还没用过。不过感觉上还有一些问题。期待成熟一点的LINUX问世。