如何深刻了解Linux

歡迎加入運維開發技術分享QQ羣:365534424;數百位業內高手和同行在等你交流 有不少朋友問我,想深刻了解Linux操做系統卻找不到入手點 我給你們的建議是:linux

  1. 學會C,C語言和*UIX是一塊成長起來的,因此Linux操做系統的API都是用C語言描述的。
  2. 因此C語言是深刻學習Linux的一個必備技能,你們能夠看 譚浩強的那本綠皮書入門,雖然黑的人不少,但入門足矣。
  3. 而後就是一本必讀書目APUE(UNIX環境高級編程),英語好的同窗建議閱讀英文原版《Advanced Programming in the UNIX Environment》。
  4. 下一步就是多去閱讀優秀的Linux項目的 C代碼。

關於第4點,在知乎上答了一個問題,意外收穫不少贊,但願對你們有幫助nginx

碰巧讀過以前你們提到的一些開源項目 網絡編程:
  • redis是單線程異步網絡編程的範例
  • nginx是多進程網絡編程的巔峯,模塊化
  • memcached雖然是C++,可是C style的,多線程網絡編程的巔峯
數據結構&數據庫:
  • SQLite,數據理論的範例。注意要去讀非合併源文件版的(爲了方便編譯器優化,有個單文件版的)
大雜燴類型:
  • Coreutils - GNU core utilities,大多數Linux系統命令的實現
  • Python源代碼(CPython,注意不是Cython),多少次遇到百思不得其解的問題,我都是去看看Python是怎麼封裝成簡單可靠的接口的,好比我回答的Linux TCP connect with Select() fails at testserver,還有怎麼實現一個可靠的帶自定義超時的connect(),你均可以從Python源碼裏找到答案。
找虐:
  • The BIRD Internet Routing Daemon Project,宏玩得飛起
  • Kernel,很容易挫傷初學者積極性
  • glibc、ssh,這類程序都是上個世紀的大神們的做品,從編程風格和總體架構上都屬於晦澀難懂的,代碼風格也是現代編程所不推薦的,建議初學者遠離。
相關文章
相關標籤/搜索