去年開始,抱着學習的態度開始了我的Linux學習,到現在,差不多一年了,收獲很多,不敢說精通Linux,但是,還是對得起“略懂”這兩個字的。這一年里我看了很多書,細細數下,大概15本左右,其中包含了兩個方面,一個是Android,另一個就是Linux。當然,在學習之初,遇到了不少瓶頸,在這里,還要感謝師兄師姐的指導。寫這篇文章的目的有兩個:
1.分享自己的學習經驗
2.記錄下我的學習歷程
既然談到了學習,那一定需要從看書說起,下面我就羅列下我看過的關於Linux學習的書
1.《鳥哥的Linux私房菜-基礎學習篇》
首先聲明,我用的Linux系統是Ubuntu11.10;大學時沒接觸過Linux系統,所以不知道怎么開始學習是好,請教吧,師兄告訴我看這本書,現在回想起來,他的建議不錯,這本書很適合初學Linux系統的人。
我們大概都知道,或許是聽說過,Linux系統經典的地方是它的命令行操作方式,這本書的主要內容就是介紹Linux系統下的命令,教你怎么使用這個系統,並簡單的管理這個系統,這本書我記得后面幾章的內容是關於系統運維的,由於對這方面的管理,我還暫時不需要,所以最后幾章的內容並沒有涉獵。
2.《Linux Shell 腳本攻略》
這本書雖然放在第二的位置,但是確實是最近才看完的,讀這本書的緣由是項目的需要,不過,現在,對這本書我又有了新的想法。
Linux的思想是“一切皆文件”,所以,對於文件的處理是Linux最基本的功能,那么使用什么處理文件呢?使用什么效率高呢? 答案是:Shell腳本。所謂Shell腳本其實就是Linux命令的集合。這本書正是講解這種語言的,但是內容不是很簡單,需要知道一些簡單的命令和參數是做什么的,所以,讀這本書之前最好還是看看第一本書吧。
我們大概都已經知道,Linux對網絡的支持也是非常好的,它在內核中接入網絡,所以我們需要知道和運用一些Linux系統提供給我們的命令實現網絡的測試,運行狀況查看等操作,這本書又派上用場了,我記得這本書有一章的內容叫做“無網不利”,聽,這是對Linux系統多么貼切的描述。
3.《Unix環境高級編程》
相信知道這本書的人很多,這是講解Unix編程的經典書籍,由於Linux屬於類Unix系統,所以,學習Linux編程,這本書不可以少。
這本書的開篇首先講的是對文本文件的操作,對了,就是那幾個我們常常看見的函數--open,read,write,seek,close,這里,是不是又對應了“一切皆文件”這個說法。當然,這本書介紹的內容很多,其中有很多非常好的章節,比如:Linux進程間通信,Socket編程,Linux管道等等,這里,我就不詳細說了,想學習的朋友自己去看看這本書吧。
4.《Linux系統編程》
首先說,這本書不是很好找,是一本比較老的書,但是內容卻是非常好,也是學習Linux編程不可多得的一本好書。
從這本書的名字就能看出來,這本書所講的內容是“系統編程”,所以,這里涉及的內容是系統調用,是我們的用戶進程需要內核的幫助完成我們想要實現的功能,這本書我也是從頭看到尾,由於書並不是很厚,所以沒有花太久的時間,不過,需要理解的地方很多,有些地方比較難,所以,多看幾遍這本書肯定沒錯。
5.《Linux內核設計的藝術》
這里,我首先引用這本書封面上的一句話--“本書對操作系統內核的駕馭能力和深刻理解程度達到世界頂尖級水平,是一本能真正引導你深入理解Linux內核設計思想的經典著作。”
在學習Linux之初,我們可能會“百度一下”--怎么學習Linux?網上好多人會回答你--看源代碼。如果這時你真的照着做了,那么,你可能走上了一條學習Linux的不歸路。為什么呢?因為,Linux有好多個版本,我們看哪個版本?源代碼都在幾百萬行左右,怎么去看?所以,這是不切實際的。那么,為什么會有那么多的網友這樣說呢?下面我來分析下。
這本書到現在我看完了兩遍,當然,還是有很多地方理解的不夠透徹,不過,還是有一些自己的想法的。這本書選擇的版本是Linux0.11,書中配合插圖和文字去分析源代碼,起初,我只是看書上的“內容”,並沒有分析源代碼,不過,漸漸地,我發現一個問題,合上書之后,馬上就忘了我看了些什么。開始,我覺得這是對系統的不理解,對系統不熟。就這樣,帶着這些疑問,看完了第一遍。大概兩個星期之后我開始了第二遍的閱讀,這一次,我配合源代碼去閱讀這本書,再合上書之后,我非常欣慰,我記得那些東西是什么,現在,我才明白為什么。你想理解這個東西,想記得牢,就去分析源代碼吧。
現在,可以回答那個問題了。其實,大家所說的閱讀源代碼並不是讓你從頭看源代碼,我們應該做的是,想知道哪一部分是做什么的,是怎么實現的,為什么會是這樣,我們需要做的就是把這一部分的源代碼找出來,閱讀,分析。
6.《Linux內核設計與實現》
這本書所講的內容也是分析Linux內核的,內容比較深,博主現在對這本書的理解也是比較淺顯,so,還需努力。
這本書中前面幾章的內容很像我們的《操作系統》教科書,不過,內容要深入的多,我記得這本書對進程調度算法的講解非常好,非常深入,以至於第一遍閱讀時我沒有看懂,映像比較深的還有就是進程間的協調工作,就是IPC機制的實現,這里 ,我們知道通信的媒介是管道,可是,管道是什么?它是一種文件,沒錯,但是它是用什么實現的?這本書中也有非常細致的講解。所以,要想更深入的理解Linux系統,這本書還是閱讀下吧。
這篇文章寫了好長時間了,不過,並沒有完全寫下我的學習歷程,因為,還有很長的路要走。。。