选择显示字体大小

谈谈从windows转向unix的一些困惑

相信很多朋友windows已经用得相当熟悉了,由于种种原因,想试试unix。无奈windows 的思想根深蒂固,这给学习unix造成很多困惑,经常四处碰壁。于是抱怨unix太难学,抛在一边眼不见为净,继续用着windows。当然如果你只是普通用户,听听歌玩玩游戏灌灌水,那大可不必装什么unix,因为你根本没必要去跟unix瞎折腾。windows那么方便,用着多舒服,何必自找麻烦,去弄那难配置又“莫名其妙”的unix?说到这里,很多人可以不用看这篇文章了。这篇文章是为想学unix的跟我一样菜的新手写的,目的是为了在学习过程中少走一些弯路。就从我个人的经历来说吧!

最初听说unix,大概是在大一的时候。当时对这个系统超级崇拜,认为能驾驭这个系统的一定是绝顶大牛。某天偶然听说一个叫做linux的系统,据说跟unix很像,而且还有一个叫做redhat的东西。因为我有刻录机,于是在校网的某处下了三个iso,刻成了盘,但一直不敢试,因为根本不知道怎么把它“放”到硬盘上去。也就是说,它有没有分区?有分区的话怎么弄?因为一直担心把windows损坏,所以这几张盘就被我搁到了一边,这一搁就是一年。

大二了,windows已经玩得相当熟了,这时对分区之类的也算挺了解了吧,于是又从抽屉的角落里找到那几张盘,打算试试。具体怎么样我也记不清了,反正是安装成功了,不过刷新率非常低,眼睛根本受不了,所以没多久又被我删了,还是继续我的windows……说出来不怕笑话,到这时我还不知道 linux有好多发行版本,以为redhat“就是”linux

大二的暑假,windows我已经玩得不想再玩了,而且随着对unix的渐渐了解,我开始对这东西有了点好感。于是在网上搜了一通,由于当初对 linux的感觉相当糟糕,所以我没把目光放在linux上,而是放到了bsd上。bsd有三个分支——freebsd.netbsd和openbsd。当时看.netbsd和openbsd感觉不大舒服(呵呵,其实看着linux这几个字也不怎么舒服,这也是我当时不选linux的原因之一,不过现在不会了),于是自然而然地选择了freebsd。

然而,对于我这个有着很深的windows思维的人来说,想一下子适应freebsd真的很不容易。还是回到分区。freebsd的“分区”是怎么样的?这让我怵了好久,直到从图书馆借到《freebsd使用大全》的时候才有点眉目。不过,当时并不知道这本书其实不大适合初学者。但那时在家里只能看这本书了,花了十几天吧,把这本书看了个大概。

回到学校后就开始了学freebsd,但也是断断续续,没有当初学windows那么大的好奇心。不过,虽然进展缓慢,收获多多少少还是有一些的。在这当中逛了好多论坛(chinaunix,freebsdchina等),看了好多文章,说实话感觉还真的挺不错。现在就稍微总结一下吧,以下仅以 freebsd为例,因为我到现在为止,经过一些比较,还是认为freebsd最适合我的性格:) 嗯,不再瞎扯了,切入正题,呵呵。

首先,我必须让你摆脱一些误解。或许你会有这样的不屑:unix那黑头土脸的能算得上系统?能正常工作?能提供ftp和web等服务?能受得了大负荷?ft,我才不相信,我才不用那破东西!如果你这么想,我可以很认真地告诉你,你错了!知道么,世界使用量第一的web服务器apache最初是为 unix开发的,超级数据库oracle最初也是为unix开发的,高端的服务器用的是什么操作系统?是unix!而不是你想象的 windows2003!

当然,我用过2003,也用它架过相当多的服务,我知道2003的性能不错。但请相信,世界上这么多大型站点使用的都是unix,你说他们的管理员难道就都那么笨?如果windows2003性能真的比unix好,他们会不用这么好的东西?事实是,他们选择了unix。不相信?好,你可以去这里看看: http://www.netcraft.com,随便输入几个大型站点,如www.google.comwww.yahoo.comwww.baidu.com,看看os部分写的是什么?或者,你再看看这个网址:http: //uptime.netcraft.com/up/today/top.avg.html,看看世界上运行时间最长的机器用的是什么系统?如果你还是执意认为windows2003牛,那么ok,你可以把这篇“无聊”的文章抛在一边了:)

如果你继续看下来了,那我继续说,呵呵。我们知道,windows上的服务器很多都是以gui页面和服务的方式存在的,但在unix中,它们基本上是在命令行下以daemon的形式存在。你可能很困惑,命令行下也能运行服务?嗯,没错,正是。daemon在unix中的地位,有点像服务在 windows中的地位,但又不尽然。现在你可以把daemon就当成服务看待。

那么,unix下的文件是怎么样的?unix跟windows不同,它把所有的文件都当成一回事,不像windows那样以后缀名来区分不同类型的文件。可能你会很困惑,如果这样的话,我怎么打开不同的文件?事实上,在unix系统中,文件只是存储上硬盘上的单纯的字节。unix下区分不同文件的方法是看这些字节的前几个字符。当然,unix本身可不管你是什么文件,它只当你是一些字节。

区分这些文件的工作由应用程序来负责,比如你有一个文件名为“diogin”的文件,你想“打开”它。怎么打开?我不知道它的文件格式!麻烦大了吧?不大。用file命令一看,这个文件是什么类型马上出来了,虽然不一定准,但绝大多数情况下是没错的。好了,现在你知道它是个可执行文件,在shell下敲入./diogin后,程序执行了,打印出了“hello, world!”,呵呵……就这么简单。可是问题又来了,什么是shell?还有,unix没有像windows那样的桌面吗?

shell,简单地说,就是让用户与操作系统内核沟通的一个媒介,你在windows下用过命令行吧,你可以把shell想象成命令行,但shell可比命令行强大多了,功能上根本不是一个数量级,这一点在你深入理解shell后肯定会感觉到。那桌面呢?这个可能是最让人困惑的问题了,当时我就一直不理解这个x跟桌面到底是怎么回事,甚至一度抱怨windows怎么这么霸道,把我的思想全禁锢住了。首先必须明确,x是图形界面的基础,x不是桌面的简称!x 提供了一些图形调用接口,至于怎么用这些接口,怎么显示你想要的图形,是你的事情,它可不管。那么,你应该用什么东西来控制自己想要显示的图形?

答案是窗口管理器,典型的如fvwm。有了这两个东西,应用程序就可以以特定的图形窗口方式显示了。现在你可能又会有问题了,不是说x是cs方式的架构吗?这个架构是怎么回事?在我们通常的理解中,server一般是有着高性能的机器,而client是普通的客户机。但这个理解却不适合x,x中的 server,指的是有键盘鼠标有显示器的机器,而client则是指一些在x上运行的程序!这些程序,完全可以在另一台机器上运行,通过网络,向x服务器发送命令,x服务器收到这些命令后为这些程序显示图形。只要双方遵循x协议,不管你的客户程序在什么系统上运行,在哪运行,都无所谓。

呃,说了半天,什么是桌面?桌面是在x和窗口管理器上集成了相当多的x应用软件的一整套系统的合称,它包括了底层的x,中间层的窗口管理器和上层的x应用程序。很简单明了吧?事实上unix系统的运行根本不需要x,只当你想要图形页面的时候才需要安装,它只是unix系统上运行的一个软件而已。那 windows的桌面呢?windows的桌面是跟windows内核紧密结合在一起的,区分不开,你就把它跟系统当成一整套的东西吧,因为结合得太紧密了,我也分不开,呵呵。

当你开始使用unix系统的时候,你会遇到很多惊讶的事情,最让你惊讶的,可能就是重新编译内核。天哪,这是什么东西?刚从windows转过来的用户可能会吓出一身冷汗。其实不用怕,编译内核是学习unix系统必须经过的一关,而且也不像想象中那么神秘。简单地说,就是改变系统最本质的部分,让它适合你的机器和你的需要,换句话说,你可以用重新编译内核来完全定制你的系统。

最高级的系统都是能让自己定制的,我不需要我用不着的东西。很好,那开始编译吧!怎么入手?以freebsd操作系统为例,安装的时候你选择安装系统内核源码(呵呵,没错,是系统内核源码,这个东西是最有价值含量的,但现在你可以完全免费得到它,而不是花几千元去买一个完全保密的东西:)),这通常会安装在/usr/src/sys目录下,然后根据你的cpu架构(普通pc都是i386架构),选择不同的目录进入,里面会有内核配置文件。freebsd的内核配置文件为/usr/src/sys/i386/conf/generic,即通用内核配置文件,适合大多数机器使用的内核配置文件。

说到这里你可能明白了吧,默认安装的时候使用的就是按这个配置文件编译出来的内核,很明显,为了让大多数不同的电脑能用,里面肯定包含了很多你机器上没有的东西。现在你的任务就是把这些东西全都去掉,同时加进去你想要的东西。用任何一个文本编辑器打开它,怎么编辑我就不说了,你可以查看手册,里面有详细的说明的。编译的过程,会在某个目录下产生新的内核源码,你进入那个目录后就可以开始编译并安装新系统了。我的机器,删除没用的东西后的内核非常精简, 256m的内存启动后完全free的内存有231m,也就是说在启动过程中被“经历”过的内存区域只有25m,而且这不是活动内存,活动内存只有 2650k!呵呵。跟windows的上百兆内存占用相比……

要想正常搞定新内核是有点挑战的,你需要对硬件相当熟悉。好了,接下来我讲讲文件安装吧,这也是在使用unix的过程中我感到挺困惑的一个问题。我们都知道,在windows系统中,安装一个软件很简单,下载文件压缩包,解压,双击setup.exe开始安装,选择一下路径就ok了,很简单吧!安装好后,文件通常会写注册表,说实话这是很恶心的一件事情,当你重装过系统后就知道了,你需要重新安装一次这些软件,很麻烦吧?

于是在windows下产生一些新名词,典型的如“绿色软件”,意思是说不会写注册表,直接解压后就能用的软件。当这些思想深深地圈住你的时候,你接触了 unix,你也用这套思想给搬过来了,于是你去下了个软件包,解压,咦,安装文件呢?找不到安装文件怎么安装?呵呵……我还是来简要说明一下unix下的文件安装吧,拿freebsd举个例子,在这里我就先不说freebsd的ports软件安装机制和package软件安装机制了,这些是在你想学 freebsd后才需要掌握的东西。首先,你下载了一个软件包,这个软件包里面可能是源码,也可能是二进制软件。

如果是源码,你解压后,它会自动生成一个目录。比如我假设这个软件包是httpd-2.0.55.tar.gz,你用tar zxvf httpd-2.0.55.tar.gz命令将它解压,在当前目录下得到httpd-2.0.55目录。cd httpd-2.0.55,进入这个目录,里面就是源码了,一般情况下会有一个makefile的文件,这个是用来编译软件用的。现在只要做的,只是先做一下配置,./configure --help,会显示出配置帮助,你可以根据自己的需要来定制,配置好后敲入make命令,make程序会自动从这些源码编译出二进制软件,这个二进制软件跟上面我说的二进制软件基本一样,区别只在于一些不同机器上编译的一些细节,还有就是后者打过包而已。

好了,现在你敲入make install来安装这个软件。那么,这个命令做了些什么东西呢?很简单,它只是把编译出来的软件复制到它应该去的地方,其它什么都没做!就这样么?它不写“注册表”么?对呀,写什么啊,unix的软件是靠它自己的配置文件来控制的!如果你想知道它详细的动作,你可以去看看makefile文件里的 install部分,看它是怎么写的,你就知道当你敲入这个命令后系统都做了些什么东西了。

一个典型的unix软件,可以看作组件、二进制程序和配置文件组成,而这些文件都是独立的(当然除了某些必要的依赖软件在这之前必须安装外),当你知道这个软件在另一个系统上是二进制兼容的时候,你把这个软件所在的目录完全拷贝到那个系统上,这个软件可以立即正常工作!多自然的事情,还写什么注册表,塞什么“开始”菜单啊,unix就是这么井然有序!那么卸载呢?就是把这个文件夹删除!不会留下垃圾么?留什么垃圾啊,在windows下的“绿色软件”不就是直接删除么?呵呵,可以这样说,unix下的软件,都是“绿色软件”。

罗嗦了这么多,还是有两个方面得讲讲的,就是unix的目录结构和进程。拿freebsd为例,安装的时候会让你创建“挂载点”。可能你又有困惑了吧?可以这样理解:windows下不是有c:,d:等盘符么,unix下的“挂载点”就相当于这个“盘符”,下面挂着文件系统,不同的文件系统可以有不同的格式。好了,你现在创建了/、swap、/var、/tmp、/home和/usr这几个“挂载点”,你用windows下的思考方式,将它们相像成 c盘、页面文件、d盘等等。其实没什么大碍,这样类比会让你比较好接受。好了,你进入了系统,ls /一下,发现了好多东西,你可能又惊讶了:怎么这么乱啊?

当你熟悉了之后,你就不会这么说了——如果你一开始学的就是unix,你会说乱么?事实上,一点也不乱,而且非常有秩序——这些可是经过了几十年定格下来的目录结构!除了/var,/tmp,/home和/usr,其它都是在/目录下的文件或目录,而且对一个系统来说,这些东西基本上不会变化。swap目录是交换分区,相当于windows下的页面文件,/tmp目录是临时“垃圾场”,当然里面的东西可不是“垃圾”,都是软件运行产生的临时文件。 /home是用户的家目录所在地,每个用户(除了root)在登录后都被定位在家目录。/usr是使用频率最高的一个目录,因为绝大部分本地软件都安装在这里(/usr/local)。当然,你可以再自己建立新的“挂载点”,如/ftp,来提供ftp服务,呵呵。

嗯,再谈谈进程,这东西也曾让我困惑了一段时间。windows2003下,我们可以把进程减小到开机12个左右,普通的应用基本上不超出30 个进程。但当你进入unix后,看着几十个上百个进程,是不是吓了一跳?其实这跟unix当初的设计有关。举个例子,apache在windows下正常工作只显示两个进程,一个是主进程,另一个是服务进程。而在unix下,则视连接情况有不同的进程数。如果当前有50个连接,则会有51个进程,其中一个是主进程。也就是说,apache为每个连接启动一个进程(假设使用的是prefork方式的多道处理机制)。这样一来,进程数一下子就上去了,我们可以把它看成windows下的线程(只是简单的类比而已,事实上不是两回事)。具体情况我就不多说了,打这么多字累死我了,_-_

最后顺便讲讲freebsd的安装吧!安装的大致过程,在freebsd的手册里已经有详细的讲解。需要注意的是,必须弄明白什么是主分区、什么是扩展分区和逻辑分区。对于玩熟了windows的人来说,这一步没什么问题。好,接下来我假设你已经有windows系统在硬盘上了,而且你是把整个硬盘都给了windows。现在你要划出一部分空间出来装freebsd。如果你的分区情况是:c盘为系统盘,占一个主分区;d、e、f盘为逻辑分区,在一个扩展分区上。注意,这个扩展分区也是主分区!接下来怎么办呢?这里必须明确:freebsd必须安装在主分区!所以你要从d,e,f这三个盘里分出空闲的空间,从哪里分?

当然是f盘了,用什么分?请先准备一个软件:partition manager。这是一个分区软件,可以很容易地分区。怎么用这个软件我就不说了,你不会的话先研究一下它的说明,相信你能搞定(我给点思路,不是用删除,而是用压缩第二个主分区的方法来挤掉f盘,这样才会缩小第二个主分区,否则那部分空间还是第二个主分区的,等于白干)。于是,你把f盘腾了出来,得到了一个空闲空间。好了,现在准备工作做好了,插入盘开始安装。选分区的时候你就可以把freebsd放到那块空闲的硬盘区域上了。系统装好后,去借几本书开始认真学吧!只是freebsd方面的书实在太少,能在学校图书馆借到的就三本:《freebsd使用大全》、《freebsd技术内幕》和《freebsd手册》。当然如果你能把这三本书都看透,水平肯定不低了,呵呵。我就不说了,因为我太菜……

嗯,一时也想不到还要什么要说了,就这样吧,有问题google,上unix方面的论坛是王道,呵呵。

(  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons