linux初學者應該怎樣學習呢,學習路線是怎樣的?

LZU礪劍


大家都知道,在現在這個信息化飛速發展的時代,IT技術火速發展,信息的重要性,可想而知。現在,在北京當一個高級運維工程師,年薪百萬已經不是夢想。當然我也想,誰不想掙大錢,開好車,住好房。下面說說自己的一些見解和大家討論下Linux學習路線,Linux操作系統學習路線其實真的學習起來並不難。

但是Linux運維真的這麼好學麼,這一點,我可以很負責任的告訴你,是真的好學,因為我就是零基礎學習運維。

linux其實就是一個操作系統,和我們平時常用的windows一樣,windows系統我們不也是一點點學習使用的麼。那麼,windows你能學會,linux你也一定能學會。

linux不像python,掉頭髮的,我們不幹。

linux不像大數據,需要計算機的底子,linux零基礎也能學。

linux不像java,我們不是開發,我們是運維。

Linux是一種自由和開放源代碼的類UNIX操作系統,該操作系統的內核由林納斯托瓦茲在1991年首次發佈。Linux是自由軟件和開放源代碼軟件發展中最著名的例子。只要遵循GNU通用公共許可證,任何個人和機構都可以自由地使用Linux的所有底層源代碼,也可以自由地修改和再發布。隨著Linux操作系統飛速發展,各種集成在Linux上的開源軟件和實用工具也得到了應用和普及,因此,Linux也成為了開源軟件的代名詞。

初學者入門首選——Centos系列

CentOS現在擁有龐大的網絡用戶群體,網絡Linux資源基本80%都是基於CentOS發行版的,如果在學習過程中遇到任何問題,在網絡中可以較容易地搜索到解決方案。

CentOS應用範圍廣,具有典型性和代表性,現在基本所有的互聯網公司後臺服務器都採用CentOS作為操作系統,可以說學會了CentOS,不但能迅速融入企業的工作環境,還能觸類旁通,其他類似的Linux發行版也能很快掌握。同時,現在周圍學習Linux的用戶一般也都是以CentOS為主的,這樣交流方便,學習中出現問題,更容易得到解決。最主要的是CentOS的安裝和使用也是最簡單的,因此基本上不會在“裝系統”上浪費過多時間。

在學習linux操作系統的時候,我們一定要養成良好的學習習慣

首先,我們一定要習慣命令行方式,Linux是由命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平,命令行方式的操作永遠是不會變的。

理論結合實踐,有很多初學者都會遇到這樣一個問題,自己對系統的每個命令都很熟悉,但是在系統出現故障的時候,就無從下手了,甚至不知道在什麼時候用什麼命令去檢查系統,這是很多Linux新手最無奈的事情了。說到底,就是學習的理論知識沒有很好地與系統實際操作相結合。

學會獨立思考問題,獨立解決問題。遇到問題,首先想到的應該是如何自己去解決這個問題,解決方式有很多,比如看書查資料、網絡搜索引擎搜索和瀏覽技術論壇等,通過這幾種方式,90%的問題都能得到解決,獨立思考並解決問題,不但鍛鍊了自己獨立解決問題的能力,在技術上也能得到快速提高。如果通過以上方式實在解決不了的話,可以向人詢問,得到答案後,你要思考為何這麼做,然後做筆記記錄解決過程。最忌諱的方式是隻要遇到問題,就去問人,雖然這樣可能會很快解決問題,但是長久下去遇到問題就會依賴別人,技術上也不會進步。

學習專業英語,如果想深入學習Linux,一定要嘗試去看英文文檔。因為,技術性的東西寫的最好的,最全面的文檔都是英語寫的,最先發布的高新技術也都是用英語寫的。即便是非英語國家的人發佈技術文檔,也都首先翻譯成英語在國際學術雜誌和網絡上發表。安裝一個新的軟件時先看Readme文檔,再看Install文檔,然後看FAQ文檔,最後才動手安裝,這樣遇到問題就知道原因了。

但是,英語雖說重要,有些人會說學不會,不想學英語,但是我要告訴大家,其實我也不喜歡英語,但是學著學著你會發現,每天遇到的都是那些單詞,根本不需要你特意的去背,不知不覺中就學會了,想學不會都難。


千鋒長沙


Linux學習路徑圖如下:

Linux操作系統在短短的幾年之內得到了非常迅猛的發展,這與Linux具有的良好特性是分不開的。Linux包含了UNIX的全部功能和特性。簡單來說,Linux具有以下主要特性:遵循GNU GPL,開放性,多任務,多用戶,設備獨立性,提供了豐富的網絡功能,可靠的系統安全,良好的可移植性。

Linux應用大綱

Linux核心知識思維導圖

以上思維導圖下載地址:

https://woaielf.github.io/2017/09/15/linux-core/

相關入門資源

新手指南: 手把手教你安裝 Ubuntu 和 Fedora:

https://linux.cn/article-5893-1.html

linux實用的小工具,從菜鳥到高手進階:

http://blog.csdn.net/longxj04/article/details/7055889

Linux指令速查手冊:

http://www.runoob.com/linux/linux-command-manual.html

書籍下載及視頻資源

鳥哥的Linux私房菜 基礎學習篇(第二版)

http://download.csdn.net/download/niuyafeng1990/9411053

《Linux就該這麼學》教學視頻(強烈推薦)

http://www.linuxprobe.com/chapter-00.html

當然如果想學好Linux系統知識,不是一兩天就能學會的,要慢慢積累,這個過程中要學會去總結,多思考,多動手去練,去實踐,在理解的基礎上去記憶,把原理搞懂才是最為關鍵的,希望這點東西能夠幫到你的忙。


如果你對學習人工智能和深度學習感興趣,可以訂閱我的頭條號,我會在這裡發佈所有與算法、機器學習以及深度學習有關的有趣文章。


我叫沐叔


csdn圖譜

很多同學接觸Linux不多,對Linux平臺的開發更是一無所知。 而現在的趨勢越來越表明,作為一個優秀的軟件開發人員,或計算機IT行業從業人員, 掌握Linux是一種很重要的謀生資源與手段。

下來我將會結合自己的幾年的個人開發經驗,及對 Linux,更是類UNIX系統,及開源軟件文化, 談談Linux的學習方法與學習中應該注意的一些事。

就如同剛才說的,很多同學以前可能連Linux是什麼都不知道,對UNIX更是一無所知。 所以我們從最基礎的講起,對於Linux及UNIX的歷史我們不做多談,直接進入入門的學習。

Linux入門是很簡單的,問題是你是否有耐心,是否愛折騰,是否不排斥重裝一類的大修。 沒折騰可以說是學不好Linux的,鳥哥說過,要真正瞭解Linux的分區機制,對LVM使用相當熟練, 沒有20次以上的Linux裝機經驗是積累不起來的,所以一定不要怕折騰。

由於大家之前都使用Windows,所以我也儘可能照顧這些“菜鳥”。 我的推薦,如果你第一次接觸Linux,那麼首先在虛擬機中嘗試它。 虛擬機我推薦Virtual Box,我並不主張使用VM,原因是VM是閉源的,並且是收費的,我不希望推動盜版。 當然如果你的Money足夠多,可以嘗試VM,但我要說的是即使是VM,不一定就一定好。

付費的軟件不一定好。

首先,Virtual Box很小巧,Windows平臺下安裝包在80MB左右,而VM動輒600MB,雖然功能強大,但資源消耗也多,何況你的需求Virtual Box完全能夠滿足。 所以,還是自己選。

如何使用虛擬機,是你的事,這個我不教你,因為很簡單,不會的話Google或Baidu都可以, 英文好的可以直接看官方文檔。 現在介紹Linux發行版的知識。

正如你所見,Linux發行版並非Linux,Linux僅是指操作系統的內核,作為科班出生的你不要讓我解釋, 我也沒時間。

我推薦的發行版如下:

  • UBUNTU 適合純菜鳥,追求穩定的官方支持,對系統穩定性要求較弱,喜歡最新應用,相對來說不太喜歡折騰的開發者。
  • Debian,相對UBUNTU難很多的發行版,突出特點是穩定與容易使用的包管理系統,缺點是企業支持不足,為社區開發驅動。
  • Arch,追逐時尚的開發者的首選,優點是包更新相當快,無縫升級,一次安裝基本可以一直運作下去,沒有如UBUNTU那樣的版本概念,說的專業點叫滾動升級,保持你的系統一定是最新的。缺點顯然易見,不穩定。同時安裝配置相對Debian再麻煩點。
  • Gentoo,相對Arch再難點,考驗使用者的綜合水平,從系統安裝到微調,內核編譯都親歷親為,是高手及黑客顯示自己技術手段,按需配置符合自己要求的系統的首選。
  • Slackware與Gentoo類似。
  • CentOS,社區維護的RedHat的復刻版本,完全使用RedHat的源碼重新編譯生成,與RedHat的兼容性在理論上來說是最好的。如果你專注於Linux服務器,如網絡管理,架站,那麼CentOS是你的選擇。
  • LFS,終極黑客顯擺工具,完全從源代碼安裝,編譯系統。安裝前你得到的只有一份文檔,你要做的就是照文檔你的說明,一步步,一條條命令,一個個軟件包的去構建你的Linux,完全由你自己控制,想要什麼就是什麼。如果你做出了LFS,證明你的Linux功底已經相當不錯,如果你能拿LFS文檔活學活用,再將Linux從源代碼開始移植到嵌入式系統,我敢說中國的企業你可以混的很好。

1、Linux基礎

你得挑一個適合你的系統,然後在虛擬機安裝它,開始使用它。 如果你想快速學會Linux,我有一個建議就是忘記圖形界面,不要想圖形界面能不能提供你問題的答案, 而是滿世界的去找,去問,如何用命令行解決你的問題。

在這個過程中,你最好能將Linux的命令掌握的不錯,起碼常用的命令得知道,同時建立了自己的知識庫, 裡面是你積累的各項知識。

2、Linux平臺的C/C++開發,同時還有Bash腳本編程[JAVA]

再下個階段,你需要學習的是Linux平臺的C/C++開發,同時還有Bash腳本編程,如果你對Java興趣很深還有Java。 同樣,建議你拋棄掉圖形界面的IDE,從VIM開始,為什麼是VIM,而不是Emacs, 我無意挑起編輯器大戰,但我覺得VIM適合初學者,適合手比較笨,腦袋比較慢的開發者。 Emacs的鍵位太多,太複雜,我很畏懼。然後是GCC,Make,Eclipse(Java,C++或者)。

雖然將C++列在了Eclipse中,但我並不推薦用IDE開發C++,因為這不是Linux的文化, 容易讓你忽略一些你應該注意的問題。 IDE讓你變懶,懶得跟豬一樣。如果你對程序調試,測試工作很感興趣,GDB也得學的很好, 如果不是GDB也是必修課。這是開發的第一步,注意我並沒有提過一句Linux系統API的內容, 這個階段也不要關心這個。你要做的就是積累經驗,在Linux平臺的開發經驗。

我推薦的書如下:C語言程序設計。 C語言,白皮書當然更好。 C++推薦 C++ Primer Plus, Java我不喜歡,就不推薦了,附一個別人的書單:java 入門書籍。 工具方面推薦VIM的官方手冊,GCC中文文檔,GDB中文文檔,GNU開源軟件開發指導(電子書), 彙編語言程序設計(讓你對庫,鏈接,內嵌彙編,編譯器優化選項有初步瞭解,不必深度)。

如果你這個階段過不了就不必往下做了,這是底線,最基礎的基礎,否則離開,不要霍霍Linux開發。 不專業的Linux開發者作出的程序是與Linux文化或UNIX文化相背的,程序是走不遠的, 不可能像Bash,VIM這些神品一樣。 所以做不好乾脆離開。

3、UNIX環境高級編程(作者英年早逝,第3版即將出版,稍等)

UNIX環境高級編程堪稱神作,經典中的經典。

接下來進入Linux系統編程,不二選擇,APUE,UNIX環境高級編程,一遍一遍的看, 看10遍都嫌少,如果你可以在大學將這本書翻爛,裡面的內容都實踐過,有作品,你口頭表達能力夠強, 你可以在面試時說服所有的考官。

(可能有點誇張,但APUE絕對是聖經一般的讀物,即使是Windows程序員也從其中汲取養分, Google創始人的案頭書籍,扎爾伯克的床頭讀物。)

這本書看完後你會對Linux系統編程有相當的瞭解,知道Linux與Windows平臺間開發的差異在哪? 它們的優缺點在哪?我的總結如下:做Windows平臺開發,很苦,微軟的系統API總在擴容, 想使用最新潮,最高效的功能,最適合當前流行系統的功能你必須時刻學習。 Linux不是,Linux系統的核心API就100來個,記憶力好完全可以背下來。 而且經久不變,為什麼不變,因為要同UNIX兼容,符合POSIX標準。 所以Linux平臺的開發大多是專注於底層的或服務器編程。

這是其優點,當然圖形是Linux的軟肋,但我站在一個開發者的角度,我無所謂,因為命令行我也可以適應, 如果有更好的圖形界面我就當作恩賜吧。另外,Windows閉源,系統做了什麼你更本不知道, 永遠被微軟牽著鼻子跑,想想如果微軟說Win8不支持QQ,那騰訊不得哭死。 而Linux完全開源,你不喜歡,可以自己改,只要你技術夠。

另外,Windows雖然使用的人多,但使用場合單一,專注與桌面。 而Linux在各個方面都有發展,尤其在雲計算,服務器軟件,嵌入式領域, 企業級應用上有廣大前景,而且兼容性一流,由於支持POSIX可以無縫的運行在UNIX系統之上, 不管是蘋果的Mac還是IBM的AS400系列,都是完全支持的。 另外,Linux的開發環境支持也絕對是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就連C#也支持。而微軟除Visual Stdio套件以外,都不怎麼友好,不是嗎?

如果你看完APUE的感觸有很多,希望驗證你的某些想法或經驗,推薦UNIX程序設計藝術, 世界頂級黑客將同你分享他的看法。

4、選擇方向:網絡,圖形,嵌入式,設備驅動

網絡方向:服務器軟件編寫及高性能的併發程序編寫

現在是時候做分流了。 大體上我分為四個方向:網絡,圖形,嵌入式,設備驅動。

如果選擇網絡,再細分,我對其他的不是他熟悉,只說服務器軟件編寫及高性能的併發程序編寫吧。 相對來說這是網絡編程中技術含量最高的,也是底層的。 需要很多的經驗,看很多的書,做很多的項目。

我的看法是以下面的順序來看書:

  1. APUE再深讀 – 尤其是進程,線程,IPC,套接字
  2. 多核程序設計 - Pthread一定得吃透了,你很NB
  3. UNIX網絡編程 – 卷一,卷二
  4. TCP/IP網絡詳解 – 卷一 再看上面兩本書時就該看了
  5. 5.TCP/IP 網絡詳解 – 卷二 我覺得看到卷二就差不多了,當然卷三看了更好,努力,爭取看了
  6. 6.Lighttpd源代碼 - 這個服務器也很有名了
  7. 7.Nginx源代碼 – 相較於Apache,Nginx的源碼較少,如果能看個大致,很NB。看源代碼主要是要學習裡面的套接字編程及併發控制,想想都激動。如果你有這些本事,可以試著往暴雪投簡歷,為他們寫服務器後臺,想一想全球的魔獸都運行在你的服務器軟件上。
  8. Linux內核 TCP/IP協議棧 – 深入瞭解TCP/IP的實現

如果你還喜歡驅動程序設計,可以看看更底層的協議,如鏈路層的,寫什麼路由器,網卡, 網絡設備的驅動及嵌入式系統軟件應該也不成問題了。

當然一般的網絡公司,就算百度級別的也該毫不猶豫的僱用你。 只是看後面這些書需要時間與經驗,所以35歲以前辦到吧!跳槽到給你未來的地方!

圖形方向,我覺得圖形方向也是很有前途的,以下幾個方面。

  1. Opengl的工業及遊戲開發,國外較成熟。
  2. 影視動畫特效,如皮克斯,也是國外較成熟。
  3. GPU計算技術,可以應用在瀏覽器網頁渲染上,GPU計算資源利用上,由於開源的原因,有很多的文檔程序可以參考。如果能進火狐開發,或google做瀏覽器開發,應該會很好 。

嵌入式方向:嵌入式方向沒說的,Linux很重要。

掌握多個架構,不僅X86的,ARM的,單片機什麼的也必須得懂。 硬件不懂我預見你會死在半路上,我也想走嵌入式方向,但我覺得就學校教授嵌入式的方法, 我連學電子的那幫學生都競爭不過。 奉勸大家,一定得懂硬件再去做,如果走到嵌入式應用開發,只能祝你好運, 不要碰上像Nokia,Hp這樣的公司,否則你會很慘的。

驅動程序設計:軟件開發週期是很長的,硬件不同,很快。 每個月誕生那麼多的新硬件,如何讓他們在Linux上工作起來,這是你的工作。 由於Linux的兼容性很好,如果不是太低層的驅動,基本C語言就可以搞定,系統架構的影響不大, 因為有系統支持,你可能做些許更改就可以在ARM上使用PC的硬件了, 所以做硬件驅動開發不像嵌入式,對硬件知識的要求很高。

可以從事的方向也很多,如家電啊,特別是如索尼,日立,希捷,富士康這樣的廠子,很稀缺的。


我的公眾號id:daimajiqiao

這些內容足夠一個不確定自己職業方向的Linux學習者用來自我提升了,如果你確定了職業方向,就應該更加針對性的學了


程序人生


Linux主要看你學習方向了,有了學習方向就可以固定好具體的發行版,這樣可以事半功倍!

其實,就當今信息豐富的時代,學習Linux不用“循序漸進”的方式了,邊用邊學是最好的,實踐出真知嘛!當然,前期還是要把基礎的東西搞定的!


分享到:


相關文章: