linux 的靈活性也會使得你有 n 多種方法解決問題,從而事半功倍,你就會有一切盡在掌握的感覺。只可惜,大部分同學都停留在了山腳下。
在整個 linux 的學習過程中,要爬的坡有六個,分別是:
一旦找到某個命令列工具,替代輸入框的是各種各樣的啟動引數。這些引數怎麼填,一般可以通過 -h 檢視 help,挨個兒看過去,就能找到相應的配置項;還可以通過 man 命令,檢視文件。無論是什麼命令列工具,最終的配置一般會落到乙個檔案上,只要找到了那個檔案,檔案中會有注釋,也可以挨個兒看下去,基本就知道如何配置了。
大部分命令的行為模式都很像,你幾乎不需要搜尋就能完成大部分操作了。
如果說使用命令列的人是吃饅頭的,那寫**操作命令行的人就是做饅頭的。看著簡簡單單的乙個饅頭,可能要經過 n 個工序才能蒸出來。同樣,你會發現,你平時用的乙個簡單的命令列,卻需要 n 個系統呼叫組合才能完成。其中每個系統呼叫都要進行深入地學習、讀文件、做實驗。
你本來不理解程序樹,呼叫了 fork,就明白了;你本來不理解程序同步機制,呼叫了訊號量,也明白了;你本來分不清楚網路應用層和傳輸層的分界線,呼叫了 socket,都明白了。
當你已經會使用**操作 linux 的時候,你已經很希望揭開這層面紗,看看系統呼叫背後到底做了什麼。
linux 核心機制也非常複雜,而且其中相互關聯。比如說,程序執行要分配記憶體,記憶體對映涉及檔案的關聯,檔案的讀寫需要經過塊裝置,從檔案中載入**才能執行起來程序。這些知識點要反覆對照,才能理清。
這塊內容的輔助學習,我推薦一本《深入理解 linux 核心》。這本書言簡意賅地講述了主要的核心機制。看完這本書,你會對 linux 核心有總體的了解。不過這本書的核心版本有點老,不過對於了解原理來講,沒有任何問題。
一開始閱讀**不要糾結一城一池的得失,不要每一行都一定要搞清楚它是幹嘛的,而要聚焦於核心邏輯和使用場景。
一旦爬上這個坡,對於作業系統的原理,你應該就掌握得比較清楚了。就像蒸饅頭的人已經將麵粉加工流程爛熟於心。這個時候,你就可以有針對性地去做課題,把所學和你現在做的東西結合起來重點突破。例如你是研究虛擬化的,就重點看 kvm 的部分;如果你是研究網路的,就重點看核心協議棧的部分。
這裡也推薦一本書,《linux 核心源**情景分析》。這本書最大的優點是結合場景進行分析,看得見、摸得著,非常直觀,唯一的缺點還是核心版本比較老。
這個難度比較大,涉及的細節比較多,上乙個階段,我的建議是不計較一城一地的得失,不需要每個細節都搞清楚,這乙個階段要求就更高了。一旦**有乙個細微的 bug,都有可能導致實驗失敗。
如果你是運維,僅僅熟悉上面基本的操作是不夠的,生產環境會有大量的不可控因素,尤其是集群規模大的更是如此,大量的運維經驗是實戰來的,不能光靠讀書。如果你是開發,對核心進行少量修改容易,但是一旦面臨真實的場景,需要考慮各種因素,併發與並行,鎖與保護,擴充套件性和相容性,都需要真實專案才能練出來。
Linux學習(4) 目錄與路徑
相對路徑與絕對路徑 絕對路徑 路徑的寫法一定由根目錄 寫起,例如 usr share doc 這個目錄 相對路徑 不是由 寫起,例如由 usr share doc 到 usr share man 下這個目錄,可以寫 cd man。指的是當前工作目錄下的路徑。一些特殊的目錄,可以幫助我們快速操作 代表...
Linux學習筆記 檔案許可權與路徑
目前從電子資訊科學與技術轉到了計算機專業,因此想趁著大四比較閒的時候補一些計算機的知識。我想說 你好,生活 斜眼笑 願生活溫柔以待!哈哈,這是我寫的第一篇部落格,謹以此紀念自己的學習生活吧!wei wei sudo i 進入root,ubuntu用sudo i,rentos用su sudo wei ...
linux常用路徑
1.etc passwd 使用者資訊檔案 2.etc bashrc 系統級配置檔案 3.etc group 組資訊檔案 4.etc resolv.conf dns配置檔案 5.etc sysconfig network scripts ifcfg eth0 配置網路資訊 6.etc hostname...