如何在最短時間內掌握Linux精髓?

我現在想學對linux有深入的理解,但是卻不知道如何下手。我希望在最少的時間內達到掌握住linux的精髓,然後以後在遇到問題知道向何處發力的程度?請大神指條明路


只有自己造一遍輪子才能理解輪子的精髓,否則只是知道輪子長什麼樣而已


Red Hat員工來怒答,不知題主說的精髓是指什麼?如果你指的是核心技術,那不好意思,沒有。操作系統是很多組件共同組成的,每個組件都負責不同的功能,比如網路,內核,文件系統,用戶管理,許可權管理,內存管理,等等。如果題主想要對Linux系統有個全面的輪廓,然後以後遇到問題知道是什麼問題,如何查找和debug,可以看一本書,鳥哥私房菜。如果想要了解所謂的精髓,別想了,慢慢累積吧。要知道有多少人在為代碼庫做貢獻。


一周精通Linux精髓。。。題主別傻了。

我曾經也如你一般遇到東西就想用極少的時間掌握,所以經常找所謂的捷徑,時間浪費在這上面,結果經常不了了之。

Time is a powerful weapon.(耐心(時間)是一把強大的武器。)這句話送給題主。忘了在哪看到這句話,的確讓我受用很大。我們在學習(尤其是自學)一個東西時,剛開始總是顯得那麼笨拙,總是不得要領,但那種熱情又讓自己恨不得馬上精通那玩意,試圖直接找某些類似"武功秘訣"(如同金庸武俠小說中傳內力)的心情是普遍的,但找來找去發現那些大牛們的建議基本都是一步步來、慢慢積累基礎。的確,秘訣就跟沒說一樣,但事實就是這樣。親身經驗告訴我,當你耐下性子一點一滴積累時就會有意外發現,自己慢慢懂得了奧妙所在,那時才算入了門。要掌握精髓,還早的很呢。

感覺自己跟題目偏離有點大,就是我的一點點看法啦。


linux精髓是什麼?

1、我用了6年linux生活和辦公;

2、完全手動編譯和配置能構建到完的桌面環境;

3、linux應用開發5年

4、kernel開發4年

5、bootloader開發1年

6、精髓到底是什麼呢?


我認為你可能連普通的命令都不會幾個,就想去「深入精髓」!為什麼認為你連命令都不會,因為會用的人都知道linux裡面的東西實在是太多,就光光會使用各種開源軟體和熟悉他們的配置文件就不是一個短時間的事情。更不用說你想要的什麼「精髓」???東西太多你不指出朝哪個方向發現,肉精還是魚精,壓根都不知道你究竟想幹嘛!


找一個十年前的Arch版本。

裝上,升級,修好。

就夠了。


題主不適合搞Linux,該行當公務員吧


對於Linux的接觸,我可能也是出於興趣覺得比較好玩,一開始玩過很多的發行版,Archlinux,Gentoo,Fedora ,slackware ,LFS , Ubuntu ,還有一些 FreeBSD ,OpenBSD , Plan9 .這些過程估計就是一些系統安裝,軟體安裝,但是覺得特別有意思,雖然沒有帶來什麼實質的代碼項目能力,但是擴充了很多視野,接觸了很多的東西。現在Linux對我來說其實就一個平台,開源的平台,不知道提主說的Linux精髓是指什麼,估計是kernel級別的東西。我覺得學習Linux不止是內核,當然kernel絕對的重要。

  • Linux上層應用,命令,軟體的配置,Linux很多情況作為伺服器的所以很多服務的Daemon的安裝配置可以玩玩,如何配置samba伺服器,如何配置squid伺服器,學習Linux上的命令,學習shell腳本等等這些都是基本功。還有一些從源碼上編譯一些開源軟體。這些很多相關的書,什麼 linux **大全 之類的。實踐是最重要的,哪怕自己手動把你平時經常用的那些命令(ls, cd, du......)實現出來都是一個對Linux更深入的學習過程。
  • Linux平台的介面。2本書 《unix環境高級編程》 《Linux程序設計》 ,主要是在Linux平台上開發,熟悉包括Linux原生的syscalls 還有一些庫的介面,包括一些進程,線程,進程間通信,這些屬於操作系統介面的範疇。以前寫過一個online-compilerhttp://alex_zhang.intscan.org/基於Linux平台的,用到了一些系統的介面,裡面有些東西絕對蠻有意思的,為了保護主機,做出一些安全的策略,必須限制一些系統調用的執行如SYS_fork之類的,後來想到了ptrace() ,實現了這個功能。通過這樣的過程,慢慢積累學習。動手實踐和實現,還有可以從很多優秀的開源項目中學習Linux系統介面,甚至看深一點可以學到一些牛的系統框架,Apache 內存管理模塊 ,Nodejs 中的epoll (非同步的I/O)基於事件驅動的網路模型,chrome中的sandbox技術用到的chroot,qubes OS項目其中的虛擬化 xen 技術。
  • Linux的內核。小菜一枚,我只是了解基本的而已,嘗試過內核的編譯移植,寫寫小的內核模塊,這一塊已經有所和硬體打交道了,相關的書很多 《Linux設備驅動程序》 《Linux kernel *》 一些源碼的分析,內核開發之類,這些現在很火的一些智能硬體項目會用到,系統的porting,內核的裁剪,優化。內核絕對是一個寶庫,軟體架構,硬體驅動,各種高性能的演算法,各種文件系統,網路協議棧。這麼複雜,以至於每每想搞搞什麼,又止步了,但是我通過一些其它的方式學習OS內核,看一些相對小型的操作系統的內核去學習freenos -

    FreeNOS is an experimental microkernel operating system for learning purposes, licensed under the GPLv3.,自己嘗試寫一些小型的操作系統JamesMs kernel development tutorials,我覺得足矣,過程最重要。

  • Linux Network相關。《unix環境高級編程》,《TCP/IP*》,網路安全,很多互聯網公司的後端基本都是依靠Linux Networking,和現在的移動互聯的後端平台,協議,網路通信,和進一步的高並發,高性能。去年在Raspberry Pi上面,基於Suricata,加了一個URL Rating的plugin模塊,實現一個簡單的家庭Web安全的路由。在嘗試的過程中,可以接觸到很多,iptables,netlink,netfilter,HTTP ....

還在學習中,雖然現在工作是在Mac平台上面,但是依舊愛著Linux。。。


題主也沒具體說說自己對Linux了解到哪個地步了,也不知道自己的水平能否給題主建議,說說我自己的簡單感受吧,首先整體把握各個模塊的交互,大致聯繫,了解架構,然後針對sched,nfs,net,mm等核心模塊大致分析源碼,可以追尋常用系統調用的源碼熟悉各個模塊的聯繫,各個模塊可能用到一些公共的組件,像一些經典數據結構,內核緩存與slot,頁高速緩存,冷熱頁機制等等,這些可以在分析過程中記下來,這一階段應該是最艱難的階段,本人也在這個階段艱難前進~最後能寫自己的內核模塊,能hack內核(其實不看源碼也能寫,不過就不知其所以然了)。基本的操作系統概念很有幫助,盡量大致對應到源碼實現。

另外,如果題主的精髓指的是設計哲學什麼的,還是先看看unix的吧。

新手共勉~


精髓?

你先填飽肚子再去施展宏圖大業吧。

最基礎的你先弄明白了再說。

文件,IPC通信,網路通信。這三你先弄明白了再說別的,不然其他都是浮雲。


Linux精髓是什麼?答:開源


細節都是枯燥的.....


Linux精髓是什麼?


推薦閱讀:

我的Linux手冊
做linux kernel相關研究的如何創(zhuan)業(qian)?
Linux運維工程師必備的80個監控工具全集
APUE第二版封面的漫畫什麼意思?

TAG:Linux | Linux內核 | Linux運維 |