歡迎光臨
每天分享高質量文章

Linux 學習的三大方向:運維、應用開發、底層開發

來自:良許Linux(微訊號:liangxuxiansheng)

經常有人在我的交流群問我:良許,請問 Linux 要怎麼學習啊?Linux 要怎麼入門啊?這個問題,其實就像是:良許,請問開發一個網站要多少錢?

 

但是,我很能理解,因為我曾經也是這樣的小白,對於 Linux 一無所知。Linux 只是一個作業系統,大家可以在上面工作、學習、開發,對於 Linux 的學習,其實你要先確定好方向,再具體說怎麼學習怎麼入門。

 

因為有太多人問了,所以我就寫篇文章來統一答覆一下。不過,關註我的很太多大佬了,而我畢竟是個轉行的,經驗方面肯定比不上正規軍,所以如果我說的有不對的地方,歡迎多多批評指正!

 

對於 Linux 從業都而言,主要有三個方向:運維、開發、底層。下麵我就對這三個方向進行展開。

方向一:運維

這應該是很多 Linux 從業者給大家的形象吧,很多人也把我當作運維工程師,問我一堆運維方向的問題,可是我不是這個方向的,我真不會啊!

那運維方向主要做一些什麼工作?

 

首先,是伺服器維護

 

保證伺服器正常執行不宕機,這是最最基本的要求。伺服器一旦宕機,公司找的第一個一般是運維工程師,所以,很多運維工程師都自嘲是「背鍋俠」。

然後,需要給開發人員提供一個可靠的伺服器運作環境和技術支援

 

我所知道的很多公司的開發環境是由開發人員自己搭建好的,但是,也有些公司將這部分工作內容交給運維工程師,而開發人員就專註於寫程式碼。

當然,還包括對各種服務的配置,如FTP,DNS,APACHE,IPTABLE,ORACLE,MYSQL等。

除此之外,還要對伺服器狀態進行監控,如CPU記憶體佔用,行程僵死崩潰,磁碟空間,異常登陸等。當然,還要負責系統進行升級,備份等等工作。

 

那些之前問我問題的小夥伴,你們看看,是不是包含在這裡?沒關係,其實我的內心還是很(xiang)淡(ma)定(ren)的。

那麼,運維工程師需要學一些什麼?

 

運維工程師需要懂很多的命令,然後就是上面提到的開發環境的搭建,各種服務的配置,以及日常的維護之類,都需要會。很多的操作其實透過指令碼就能很方便完成,所以運維工程師很多還需要懂 Shell 及 Python。推薦的入門書籍:鳥哥 Linux 私房菜。

方向二:應用開發

這就是我的老本行啦~啊,不對,我的老本行是機械……

 

應用開發及底層開發方向就要寫比較多的程式碼了,相對而言運維工程師就不需要寫很多程式碼。

Linux 應用開發工程師主要做一些什麼工作?

簡單而言,Linux 應用開發工程師主要在Linux 環境下開發各種應用程式,就如同你們在 Windows 下開發的應用程式一樣(比如QQ,PC微信等)。這些應用程式有些帶有介面,也有很多是不帶介面的。帶介面的很多是由 QT 開發,當然也有其他的開發工具。

 

Linux 應用開發工程師需求量相對比較多,行業分佈也比較廣。方向主要有兩個,一個是伺服器方向,另一個是嵌入式方向。

 

幾乎所有的科技公司都有伺服器,所以在很多行業都有 Linux 應用工程師的身影。而嵌入式方向,也就是我現在的方向,就是在嵌入式平臺上開發應用程式,其實道理都是一樣的。

那麼 Linux 應用開發工程師需要掌握什麼技能?

 

首先肯定要熟悉 Linux 平臺的 API ,包括 IO 操作,行程間通訊, Linux 環境,網路通訊,等等,推薦看 APUE 這本神書。當然還需要懂指令碼語言,包括 Shell, Python ,都需要懂。還有資料庫的操作,比如 MySQL,Sqlite,至少要懂一個。

 

對於程式語言的話,大多數情況下是使用 C/C++ 。如果你需要做介面開發,可能還需要懂 QT 。

 

除此之外,你還需要懂一些行業規範,這個是應用工程師的必備技能。

方向三:底層開發

底層開發工程師相對而言需求就會少一些,一個公司通常會養一堆的應用開發工程師,但底層開發工程師可能就配備了一兩個。為什麼?因為現在很多底層移植、適配的工作都由晶片廠商都幫你做好了,你們很多情況下只需做維護就好了。

 

所以,底層開發工程師的一個很好去處就是晶片廠商,如果對這塊有興趣的朋友,晶片廠商是一個很好的去處。

 

當然底層開發工程師不僅僅做維護了,也是會根據公司的業務需求做一些定製。除此之外,還會做驅動開發的工作。

 

那底層開發工程師需要掌握什麼技能?

 

雖然說移植之類的工作現在很多都由晶片廠商完成,但uboot,檔案系統,核心這類的移植技能肯定要掌握。然後,驅動開發也肯定要會,因為這部分工作的份量還是不少的。

 

而在做底層開發工作時,還有一個重要的技能,就是晶片手冊的檢視。如果你不會檢視晶片手冊,那後面的移植啊,驅動開發之類的工作都無從談起。

 

有些公司可能還會對核心進行裁剪定製,那麼,就需要對核心原始碼比較瞭解了,這部分要求就相對比較高了。

小結

所以,Linux 從業都三個主要方向的工作內容都不一樣,所需的技能也不同。一般我們是選擇其中一個方向,進行深入研究,有精力時再去學習其它方向,拓寬技術廣度。

    贊(0)

    分享創造快樂