學Linux到底學什麼?

 

前言

咱們經常聽到不少人說要學學Linux或者被人告知說應該學學Linux,那麼學Linux到底要學什麼?linux

爲何要學Linux

在回答學什麼以前,咱們先看看爲何要學。首先咱們須要認識到的是,不少服務器使用的是Linux系統,而做爲服務器應用程序的開發者或者維護者,若是不瞭解Linux的基本使用,該如何進行開發或者維護呢?ios

固然,也有可能你據說Linux更高大上,或者是說Linux對開發者更加友好(Windows用戶把刀放下),這都是題外話了。git

在我看來,學習Linux主要有如下兩點緣由web

  • 使用標準C/C++ 編寫運行在Linux上的應用程序算法

  • 編寫部署在Linux上的應用程序,如Python,Java web服務程序docker

  • 一探究竟。衆所周知,Linux開源,windows並不是如此。shell

而對於Python,它有Python解釋器,Java有Java虛擬機,他們實際上對Linux的需求是沒有C/C++來的高。即使如此,Linux也是值得Python/Java開發者去學習的。若是你是作C/C++開發,那麼Linux是必備的,還記得當前被VC6支配的恐懼嗎?編程

Linux學習方向

那麼通常說的學Linux是要學什麼呢?方向不一樣,要學習的內容也不一樣,能夠大體分爲這麼幾個方向:ubuntu

  • 運維,維護Linux服務器vim

  • 應用開發,開發Linux應用程序

  • 底層開發

我本人是作Linux應用開發的,所以對於運維方向和底層方向不是很瞭解,這裏僅簡單說一下。

運維Linux主要須要學會對服務器的基本部署,監控,配置,管理等等, 你能夠認爲,這些機器歸你管了,7*24小時保障它能正常提供服務(刪庫跑路就別作了),因此7月24日請對運維的朋友好點。也歡迎運維的朋友留言糾正或者補充個人說法。

底層開發須要瞭解uboot,文件系統,內核等底層相關內容,主要工做可能涉及文件系統裁剪,驅動開發,內核模塊定製(如內存管理,進程調度)等等。底層開發整體來講要求比較高。

應用開發天然是須要學習如何開發在Linux上運行的應用程序,如何定位Linux應用程序問題等等。

來源:公衆號【編程珠璣】 

做者:守望先生

網站:https://www.yanbinghu.com

Linux應用開發學什麼

Linux的學習不少會以命令爲主,於是初學會以爲枯燥甚至疑惑,鼠標點點點就能完成的事,爲何要劈里啪啦敲這麼多?這裏給出兩點理由,也歡迎你補充:

  • 出於資源的考慮,絕大部分Linux服務器沒有圖形界面

  • 命令行便於自動化,將一系列操做寫入腳本,可代替手動操做

而它的學習我把它分爲這麼幾個階段:

  • 基本使用

  • 開發調試

  • 系統認識

這三個階段對知識積累的要求不同,但整體來講並無嚴格的前後之分。

類於windows,當年你學習windows的時候學了什麼?

  • 開關機?

  • 安裝卸載軟件?如安裝視頻播放器,音樂播放器(爲啥要安這玩意?)。

  • 如何打開安裝的軟件?如打開瀏覽器上網,打開編輯器寫文檔

  • 如何存放本身的資料?移動,建立,刪除等等

  • 如何使用office 辦公軟件

  • ……

是否是想一想好像也沒有特地地去學習?

那麼對於學習Linux來講也是相似的,就是學會這些最普通的使用,

  • 如何開關機

  • 如何上網

  • 如何打開命令行

  • 如何使用命令行安裝卸載軟件

  • 如何編輯文本

  • 如何建立,移動,刪除文件

  • 如何查看文件內容,解壓縮文件

  • ……

這個階段最難的就是從圖形界面到命令行的轉換

那麼第二階段呢,就須要學會:

  • 如何編寫Linux應用程序

  • 如何編譯或者構建你的程序

  • 如何運行你的程序

  • 如何定位程序bug

而第三階段,則是一個須要漫長的學習過程,但都是爲開發服務,包括:

  • 理解並踐行一切皆文件

  • ELF文件,Linux主要可執行文件格式

  • Linux各大機制的基本原理,如進程調度,內存管理,虛擬內存,文件系統等,既然要寫Linux應用程序,怎麼能不瞭解它所在平臺的主要機制呢?

越是疑難問題,越須要這些最基本的知識。

本文來自:公衆號【編程珠璣】

怎麼學?

來到了你們最關心的問題了,一樣的,每一個人的狀況不太同樣,這裏只給出個人我的建議。

關於第一階段,你能夠先定個小目標,例如一段時間內學會在Linux下進行你的平常活動(玩遊戲就算了),例如編寫文檔,看視頻等等。同時建議:

  • 選擇主流的發行版,如ubuntu,centos等,遇到問題時比較容易解決

  • 在window下安裝虛擬機,這樣Linux環境就隨你折騰了

在這期間,你可能須要瞭解

這裏的學習你能夠經過網上搜索資料或者購買相關書籍進行操練。若是你不想安裝虛擬機或者docker,你能夠經過一些在線的Linux來體驗。

第二階段也是主要的階段,這一階段要學習的東西很是多,可能是命令的學習,這裏一樣能夠參考《鳥哥的Linux私房菜》。不過初期階段建議抱着一個目的去學習,就是如何在Linux寫一個完整的程序,爲了達到這個目的你須要學習

這個過程涉及到的命令很是多,可是不建議每個都去細學,首先知道有這麼一個命令便可,而後須要的時候可以快速找到用法,如經過man命令查看手冊。總之,記住你的目標就是流暢地進行開發調試,而在達成這個目標地過程當中,你本身天然會慢慢接觸不少東西。

可是有必要說明的是,開發Linux應用程序並不必定要在Linux下編寫代碼,你能夠選擇利用samba等工具在windows和linux之間共享文件,而後再在windows下熟悉的工具中或者你認爲比較強大合適的工具中編寫代碼,在Linux下進行編譯調試便可。固然你也能夠選擇Linux下的IDE,或者將vim調教一下也是能夠的。

第三階段要求是比較高的,這個時候你應該學習過操做系統的相關課程(如,《現代操做系統》,《操做系統原理》等),而後你能夠經過諸如《Linux內核設計與實現》,《深刻Linux內核架構》,《深刻理解Linux內核》等書籍進行相關概念學習,也能夠經過閱讀源碼進行深刻學習,最終,你須要瞭解堆和棧,內存管理,進程調度,虛擬內存,文件系統等相關知識。
固然相關命令學習也必不可少,例如readelf,nm,ipcs,iostat,objdump,free,chrt,pmap,uptime,top,pidstat等。

以上就是三個階段Linux相關的學習內容和建議,實際上其餘相關內容的同步學習也很是重要,包括相關數據結構與算法,系統編程,計算機網絡等內容的學習,不然看到不少命令的結果仍然會一臉懵逼。

最後,建議實踐再實踐

總結

限於本人知識水平有限,以上屬我的建議和見解,僅供參考,歡迎留言說說你爲何要學Linux,有什麼學習方法?

推薦閱讀:

linux經常使用命令--開發調試篇

Linux經常使用命令--文本查看篇

Linux經常使用命令--系統狀態篇

Linux經常使用命令-解壓縮篇

關注公衆號【編程珠璣】,獲取更多Linux/C/C++/Python/Go/算法/工具等原創技術文章。後臺免費獲取經典電子書和視頻資源

相關文章
相關標籤/搜索