標籤:

Linux應該如何學習,感覺如果沒有系統可供自己維護的話,學習很吃力,大家是怎麼系統學習的呢?

linux 學習


一.為什麼要學linux?

  當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好!

  二.起步

  你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix

  如何選擇版本:北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。

  對於初學linux的人來說,我建議是使用redhat,原因如下:

  1)現在很多書都是以redhat為例講的,為了與書本協調一致

  2)周圍的人都用redhat,交流比較方便

  3)redhat應用範圍廣,有典型性和代表性

  4)它易於使用和安裝,我們沒有必要把時間浪費在「裝系統」上而應集中精力學習最有用的東西。

  【注】現在覺得RH很死板,AS,ES等用在伺服器上或許不錯,Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮:)

  如果你並不打算深入學習linux,而是有諸如適應北京市政府辦公平台遷移到linux上這種需要,那麼中軟,紅旗等中文linux是不錯的選擇

  我強烈建議:自己親自動手把linux裝到你的硬碟上,你必須學會獨立安裝linux系統的技能,對於現在的版本來說,其實跟裝WinXP一樣簡單

  從此現在開始,請不要以windows的工作方式來考慮問題,應該嘗試挖掘linux身上的「天才unix」的氣質。

  三.進階

  掌握至少50個以上的常用命令

  理解shell管道"|",文件流重定向">"及追加">&>"等

  熟悉Gnome/KDE等X-windows桌面環境操作

  掌握.http://tgz.rpm.biz等軟體包的常用安裝方法

  學習添加外設,安裝設備驅動程序(比如modem)

  熟悉Grub/Lilo引導器及簡單的修復操作

  熟悉系統固有目錄的名稱及公用

  學會用mount命令訪問其他文件系統

  了解vi,gcc,gdb等常用編輯器,編譯器,調試器

  學習linux環境下的簡單組網

  建議:買一本不需要太厚的linux教材,大致可以滿足要求(現在的書越來越多了,還帶很多圖,我當時可沒這麼多書)

  四.高級應用

  澄清一些概念:linux的普通操作與真正的系統管理不能相提並論,後者需要很多知識

  1.英語

  即使你不學linux,我也強烈建議你學好英文[U.S.english]。因為實質上計算機語言就是英文和字元,所謂的多國語言只是外部包裝。你必須能無障礙的閱讀大量的英文技術文檔在搜索引擎找到的英文網站和網頁中熟練的檢索最好能有用英文直接交流的能力,擺脫了這個障礙,你的學習和理解速度就能快很多,你就有機會拉開和別人的差距。

  2.shell[sed/awk]

  shell是命令解釋器,是內核與用戶界面交流通道,shell寫的小腳本有點類似於win下的.bat但shell比.bat強大的多,shell不只是解釋命令,更是一種編程語言,有時候幾百行的c用shell幾十行就能代替完成工作,因為shell的工作方式建立在系統已有的眾多應用程序之上

  這也是CS中的一個重要思想。此外,shell可以實現工作自動化,這個概念也比較重要sed,awk用來處理文本,歷來很常用。

  3.Perl/PHP

  漂亮的腳本, CGI的首選,比ASP好,應用面很廣

  4.CC++

  C、C++是linux/unix的核心語言,系統代碼都是C寫的

  5.ASM

  系統底層及內核,硬體,設備驅動程序,嵌入式開發都需要。//走核心路線的話,cc++,asm最重要

  6.Java,Python,Tcl,XML

  五、系統管理篇

  在熟悉linux的基礎上還需要掌握至少一種unix。我首推Solaris,其次是FreeBSD比如運營級系統一般是Solaris+Oracle/DB2之類的學習apache、ssh、sendmail/Qmail、proftp/vsftp、Samba、Squid、MySQL/PostgreSQL/Oracle、Bind等各種應用伺服器的構架及電子商務的應用熟悉TCP/IP協議族,學習諸如apache+php+proftp+mysql+quota的實現以及大型區域網,分散式集群等各種企業級應用解決方案熟悉多用戶管理,資料庫管理,文件系統,邏輯存儲管理,日誌分析,備份與災難數據修復系統補丁,內核升級,以及在此基礎上的防火牆構架等以保障系統安全在內的各種系統管理技能。

  我覺得,如果在此基礎上再掌握路由/交換設備便是一個不錯的系統管理員

  各種基於linux的解決方案可參考相關書籍和文獻,必要時用google或各大linux站點站內搜索引擎尋找最新文檔,以避免錯誤和漏洞有幾本技術大全和技術內幕我認為都是這方面不錯的書

  六、深入學習linux

  我個人理解的讀linux內核需要的基礎:在此之前,希望先把應用層的東西學一下,那樣會比較好理解

  1.C

  如果學過潭浩強的大學教科書(除了編幾個數學模型好像什麼也做不了的那種),建議再看一下《The C Programming Language》Second Edition這本聖經(如果想學緩衝區溢出,這點C的功力可能是不夠的,還有&,&,&,反正經典書看多了是沒有壞處的)

  2.asm (ATT語法,保護模式)

  保護模式下的比較複雜,基本上每本講內核的書都會有介紹有80x86 Intel語法的基礎就行,

  有興趣可以看看Intel的官方網站

  3.數據結構(離散數學)

  計算機專業的核心課程,重要性我就不說了

  4.操作系統原理

  看懂這個再去讀linux吧

  5.微機原理/組成原理(數字電路)

  底層直接和硬體打交道,所以這個也要

  6.了解linux/unix

  我想至少你要會操作吧,了解unix的API

  7.軟體工程/編譯原理


把這本書先看完和練習完了唄:Linux系統管理技術手冊(第2版)/奈米斯 (Nemeth)-圖書

另外,要學習Linux,一台機器用來練習就足夠了。當然,越多越好。


1.首先你得感興趣,我學linux了解了很多linux周邊的東西,比如linux的開發歷史,還有linux所涉及的開源文化和geeker文化,熱血沸騰,這技術好hack,好NB啊,然後我就有了強烈的學習熱情。

2.安裝linux,比如哪個目錄掛載在哪個盤符下,某個掛載需要的空間大小是多少等等,當然一開始是不會領悟到分配掛載的作用的,我也是後來領會到的:),其實我開始使用vmare,只會傻瓜式的安裝,後來隨著裝的軟體變多數據變大,掛載大小不合理了也就開始研究怎麼分配掛載大小。

3.學習各種命令,日常操作一定要強制使用命令行,斷絕gui操作,遇到參數不會的,可以使用-h或者--help或者man一下,有些常用的命令背下來,或者自己多練習幾遍,基本命令學習好了之後,可以學習比較專業的,比如查看機器性能的、網路管理的之類的,我不會建議你徹底拋棄wins安裝個ubuntu什麼的,因為我沒有專門去安裝ubuntu

4.命令掌握的很好的情況下,學習腳本,比如shell腳本,shell腳本不必專門去學習,我是邊學邊用的,shell學習好了之後,然後日常一些繁瑣的操作或者重複1次以上的操作可以選擇使用自己寫shell去實現(強烈拒絕重複性操作),這樣簡單的shell腳本也就學會了

5.嘗試去搭建各種服務,不要使用yum或者rpm,一定要源碼安裝,如果嫌麻煩可以寫成腳本,自己搭個apache,搭個nginx,搭個資料庫,裝個php,一個小的lamp出來了,(可以和4同時,部分先後),還有去裝各種軟體或者服務的時候,別只是用,盡量的去了解下他是什麼?簡單的原理,適用場景之類的東西

-----------------------------------

到以上,我感覺基本的技能是有了,可以小誇自己一下,我也會linux(時刻尋找滿足感和自信)

然後繼續深入學習shell,比如涉及到NB的命令,grep,find,awk,sed以及強大的管道,處理一些複雜的文件流。

也可以涉獵下python、perl、php中的一個或者幾個,可以利用每個語言的特長做一些運維的開發。

----------------------------------------

做運維要拒絕重複操作,要努力去開發一系列工具,解放你的時間,然後你可以去學習一些更牛的知識或者把某一個知識學精,然後繼續開發更牛的工具或者軟體,然後解放更多的時間 :-)


從興趣入手,比什麼都重要

可以先看看linux的黑歷史 笨笨兔的故事這本書實在是推薦

文筆幽默,介紹到位,實在是入門的好書。

看完這個就可以去看鳥哥的私房菜了 更加正統的學習書籍

我堅信好奇心是永遠的動力,興趣是最好的老師,goobingdu一下,你就什麼都知道了。

現代互聯網,限制你的知識的面的,永遠只是你的求知慾。


推薦閱讀:

TAG:Linux | Linux運維 |