基于linux的學(xué)習(xí)方法
——
不斷地選擇系統(tǒng)中的軟件根據(jù)其相關(guān)文檔在系統(tǒng)中付諸實(shí)施的過程,制定一個(gè)自己
滿意的目標(biāo)可能效果更好。參考的目標(biāo)可能以學(xué)習(xí)為主更好,倘若你有一定的基礎(chǔ)
制定一個(gè)基于GNU/Linux系統(tǒng)解決方案也不錯(cuò);參考的應(yīng)用范圍開始以作為服務(wù)器運(yùn)
行更好,而不是作為和Windows 95一樣的作桌面系統(tǒng),比較理想的環(huán)境就是有一臺(tái)
Windows95的機(jī)器作為客戶端而把Linux作為服務(wù)器,我接觸Linux很偶然完全是想看
一看免費(fèi)的UNIX的樣子,學(xué)習(xí)Linux是的目標(biāo)開始很簡單,就是實(shí)現(xiàn)類似于Windo
ws NT中的IIS的功能。
我把GNU/Linux的學(xué)習(xí)分為以下三個(gè)部分,并根據(jù)自己的經(jīng)驗(yàn)提出的事項(xiàng)。
1. 系統(tǒng)安裝
對(duì)于熟悉Windows環(huán)境的人來說GNU/Linux的安裝是一個(gè)非常痛苦
的過程,對(duì)于安裝過程中遇到的問題足以讓許多聞風(fēng)而動(dòng)的人放棄了GNU/Linux的使
用。安裝過程中比較典型的問題是硬件不支持,如聲卡和顯示卡,其中顯示卡的問
題一般是希望安裝X-WINDOW環(huán)境而引起的,并且常常引起系統(tǒng)重啟或安裝失敗。所
以,我給大家的第一個(gè)提示就是可以考慮不安裝X-WINDOW軟件包;:( 其次如果你不是
使用的Sound Blast系列的聲卡,可以考慮不安裝聲卡 ;also :( 如果你的網(wǎng)絡(luò)卡
不識(shí)別可以
考慮更換一塊廉價(jià)的NE2000兼容網(wǎng)絡(luò)卡,保證網(wǎng)絡(luò)的正常工作對(duì)于調(diào)試客戶/服務(wù)器
方式的應(yīng)用程序是必須的,網(wǎng)絡(luò)服務(wù)啟動(dòng)成功但不能正常訪問多是由于缺省的路由(
default route)沒有指定為網(wǎng)卡的地址引起。由于現(xiàn)在的硬件制造商還沒有普
遍提供Linux下的驅(qū)動(dòng)程序,所以希望提供象Windows環(huán)境一樣的硬件兼容的確有些
困難。另外, 建議做好可能要數(shù)次格式化硬盤的準(zhǔn)備,實(shí)際上當(dāng)你使用Linux系統(tǒng)一
段時(shí)間后,就會(huì)發(fā)現(xiàn)以前頻繁格式化硬盤實(shí)際上是錯(cuò)誤的。當(dāng)然,由一個(gè)具有Linux
使用經(jīng)驗(yàn)的人進(jìn)行指導(dǎo)安裝是最好的選擇。同樣,有一本關(guān)于Linux系統(tǒng)指南的手冊(cè)
是入門時(shí)不錯(cuò)的參考,不過不用太厚的著作因?yàn)樵S多的著作涉及的軟件介紹實(shí)際多
是對(duì)軟件文檔的復(fù)制,最好的文檔實(shí)際就在你的/usr/doc目錄下,當(dāng)然其文檔主要是
英文不過都不是太深?yuàn)W,畢竟很多軟件的作者并不是用英文作為母語,并且開始是可
以從/usr/doc/HOWTO開始,如可讀性極強(qiáng)的《DOS-TO-Linux HOWTO》《NET-3-HOWTO》
等文檔。在不熟悉UNIX命令的情況下,可以使用一個(gè)類似pctools的軟件mc,
通過他你可以完成許多的文件操作,如文件的瀏覽、編輯、刪除等,當(dāng)然熟悉
UNIX的基本命令可能是開始時(shí)的主要工作,UNIX的命令有一個(gè)比較特殊的地方就是
有太多的選擇項(xiàng),其實(shí)開始只要會(huì)它的基本功能就行。系統(tǒng)的安裝和配置是一個(gè)不
斷積累經(jīng)驗(yàn)的過程,急于求成可能效果不好,和Windows入門容易深造難剛好相反L
inux是入門困難而深造容易。
2、系統(tǒng)管理
由于Linux是一個(gè)多用戶多任務(wù)的操作系統(tǒng),系統(tǒng)管理對(duì)于在Windows 95環(huán)境
下的用戶可能是一個(gè)陌生的事情,在熟悉了基本的文件操作命令之后就可以考慮進(jìn)行
系統(tǒng)管理,系統(tǒng)管理的工作主要分為用戶管理、資源管理、軟件安裝、
服務(wù)配置和網(wǎng)絡(luò)。當(dāng)你使用linuxconf進(jìn)行系統(tǒng)管理時(shí),你會(huì)發(fā)現(xiàn)他許多真正優(yōu)秀
的地方。系統(tǒng)管理是相通的,只要是多用戶的系統(tǒng)都存在這樣的問題,實(shí)現(xiàn)的方法
也是大同小異,通過linuxconf進(jìn)行管理實(shí)際是調(diào)用了許多的UNIX命令,就象mc一
樣。Linux的通常使用的命令一般放在/usr/sbin、/usr/bin、/sbin、/bin目錄下,
可以抽點(diǎn)時(shí)間看看到底他們都包含了些什么東西,并且使用man 看一下他該怎么
使用。資源管理的一個(gè)特色是文件系統(tǒng)的限額功能,這是UNIX系統(tǒng)普遍具有的功能
而在微軟的Windows NT 4沒有實(shí)現(xiàn)的功能。軟件安裝實(shí)際就是使用RPM軟件或是直
接使用tar,其中RPM包格式的軟件更容易安裝和使用。我對(duì)服務(wù)的理解是系統(tǒng)的駐
留程序,要配置Linux的各種服務(wù)需要了解涉及的程序和多半在/etc目錄下配置文件
的作用,/etc目錄和Windows的注冊(cè)表文件類似,包含了系統(tǒng)啟動(dòng)和相關(guān)軟件的配置
信息,在集中管理方面應(yīng)該說Windows做得更好,不過/etc的文件多半是文本文件,
你可以使用編輯器打開他們,其中很多文件里包含了詳細(xì)的配置幫助,配置服務(wù)的
過程有時(shí)可能就是去掉它的注釋符號(hào),實(shí)際上Linux下的服務(wù)和商用UNIX提供的服務(wù)
很相似。和在Windows環(huán)境相比,最好的是一般修改一個(gè)服務(wù)后不需要重新啟動(dòng)系統(tǒng)
,而只是重新啟動(dòng)該服務(wù)。網(wǎng)絡(luò)是Linux給我最多收獲的部分,由于Linux是一個(gè)互
聯(lián)網(wǎng)上誕生的系統(tǒng),支持完整的TCP/IP網(wǎng)絡(luò)協(xié)議族,其網(wǎng)絡(luò)應(yīng)用軟件非常豐富,并
且很多網(wǎng)絡(luò)應(yīng)用軟件都系出名門且廣泛使用,如BIND、apache、wu-ftp、sendmail
、telnetd、NFS、NIS等,并且有非常完備的文檔和例子支持,通過配置其網(wǎng)絡(luò)服
務(wù)你可以深入了解TCP/IP協(xié)議,構(gòu)造一個(gè)非常不錯(cuò)的內(nèi)部網(wǎng)環(huán)境,相關(guān)的文章比較
多,在此便不再贅述。同樣,支持Linux的大型關(guān)系數(shù)據(jù)庫也不少,目前各大數(shù)據(jù)庫
廠商Oracle、Sybase、Informix)為了對(duì)抗微軟的操作系統(tǒng)壟斷,均將產(chǎn)
品向Linux移,主要的目的是為大家提供使用和學(xué)習(xí)的機(jī)會(huì),他們對(duì)一般對(duì)產(chǎn)品
的限制是不能應(yīng)用于商業(yè)領(lǐng)域,同時(shí)支持Linux的免費(fèi)數(shù)據(jù)庫系統(tǒng)也不少如PostgreSQL、
MySQL等,由于SQL數(shù)據(jù)庫涉及數(shù)據(jù)的并發(fā)控制、安全管理、備份等問題,掌
握它能夠讓你在管理員的角度思考你的數(shù)據(jù)共享的問題,并且SQL作為一個(gè)標(biāo)準(zhǔn)其通
用性較強(qiáng),所以把Linux作為一個(gè)數(shù)據(jù)庫服務(wù)器平臺(tái)是很理想的。同時(shí),將數(shù)據(jù)庫和
Web服務(wù)器結(jié)合起來,利用PHP3或是其他的CGI工具便能夠?qū)崿F(xiàn)一個(gè)基于Web的數(shù)據(jù)
庫環(huán)境,并且是能夠被你自由控制的環(huán)境。
3、程序設(shè)計(jì)
目前GNU/Linux系統(tǒng)是一個(gè)為程序員提供的操作系統(tǒng)和編程環(huán)境,
因?yàn)槠洳僮飨到y(tǒng)核心源代碼和應(yīng)用軟件的源代碼都是公開的,并且你可以根據(jù)你的
愛好選擇編程語言,你可以通過大量的應(yīng)用軟件源代碼理解進(jìn)程、線程、文件、設(shè)
備、網(wǎng)絡(luò)、RPC、IPC等原來比較抽象的概念。和Windows環(huán)境下的可視開發(fā)環(huán)境相
比,Linux下的編程可能會(huì)困難一些,但是如果只是完成特定的服務(wù)端應(yīng)用,就比
較簡單和高效,你開了集成環(huán)境可能需要的是多開幾個(gè)虛擬控制臺(tái),方便對(duì)庫函
數(shù)的參考。由于應(yīng)用軟件主要是C語言程序,有C語言基礎(chǔ)是比較好的,并且應(yīng)用軟
件的注釋都比較好,可以比較方便地修改。當(dāng)然,用JAVA也比較好,可以充分享受
其跨平臺(tái)的優(yōu)勢(shì),還有就是可以使用以前只是聽過而沒有用過的Ada、Lisp等語言。
基于GNU/Linux的程序設(shè)計(jì)可以讓你充分感受選擇的自由,沒有必要大家都
去研究核心程序,畢竟計(jì)算機(jī)是工具,能夠?yàn)榫唧w應(yīng)用服務(wù)才是計(jì)算機(jī)軟件人員的
職責(zé),僅有系統(tǒng)核心也是不夠的。不過,在Linux下編寫驅(qū)動(dòng)程序不是象想象的那么
困難,原因主要是我們的設(shè)計(jì)者為我們提供了詳細(xì)的指南,感受最深刻的是在
/usr/src/linux/drivers/net/skeleton.c程序,它描述了網(wǎng)卡驅(qū)動(dòng)程
序的框架,并且相關(guān)的文檔非常多如KHG等,相比Windows就更為開放和容易。我不
是程序設(shè)計(jì)的高手,通過GNU/Linux的使用知道一些有用的方法,學(xué)會(huì)了欣賞別人的
程序,如果讓我做一個(gè)程序我的第一步可能就是找到相關(guān)的程序并查看他們的編程
方法。同樣,如果能夠真正使用互聯(lián)網(wǎng),你可以發(fā)現(xiàn)更多的程序設(shè)計(jì)的參考。
兩年的實(shí)踐給了我一種駕馭系統(tǒng)的輕松,因?yàn)槲抑篮芏鄸|西沒
有想象的那么難以接受,最重要的是"try again"。實(shí)際上,你能夠真切地感受到各
種系統(tǒng)是相通的,如同水是相通的一樣;學(xué)習(xí)不應(yīng)該是一種負(fù)擔(dān),而是根據(jù)自己的
實(shí)際情況去解決實(shí)際的問題,興趣是一種不可忽視的因素。我想象不出如果能夠根
據(jù)大學(xué)計(jì)算機(jī)專業(yè)的課程設(shè)置,同步提供Linux的實(shí)踐,那么我們的大學(xué)生在畢業(yè)時(shí)
會(huì)有怎樣的技術(shù)水平?同樣,我們的高??赡軙?huì)有更多一些的可以為普通人接受的
軟件,而不是只是培養(yǎng)專家的科研成果,或是寥寥千套的獲獎(jiǎng)操作系統(tǒng)。沒有理論
的實(shí)踐是盲目的,沒有實(shí)踐的理論是空洞的,而計(jì)算機(jī)軟件是需要理論和實(shí)踐緊密
結(jié)合的。
評(píng)論