歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

從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.com,www.yahoo.com,www.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手冊》。當然如果你能把這三本書都看透,水平肯定不低了,呵呵。我就不說了,因為我太菜……

 

Copyright © Linux教程網 All Rights Reserved