(本文老生長談,由於最近在B站錄了個視頻,因此順便把文稿也發出來)linux
熟悉個人朋友應該知道,我是一名Linux工程師。那麼我來問你們一個問題,提到Linux,大家第一時間想到的是這是一個怎樣的崗位呢?我相信會有很大一部分的朋友會想到兩個字:運維。面試
聽到你們這樣的回答,我真的是很無奈,但也是很是的理解,由於,曾經我對Linux的瞭解程度也是僅限在運維的層面上。可是,有這種概念的朋友實在是太多了,因此我有必要出來給你們科普一下Linux的幾個主要的從業方向。編程
其實這個話題我寫過了不少的文字版本,也在直播的時候給你們科普過了,這幾天也以視頻的形式再給你們科普一次,今天就順便把文稿再發出來一下。後端
Linux其實也是一個大的方向,能夠細分爲不少小方向。因此不少公司的崗位職責上面寫着要求精通Linux,這是很是不現實的。爲了能讓你們更直觀瞭解Linux的從業方向,我畫了下面這張圖。安全
我精選了一些Linux高質量電子書和視頻資源,公衆號「良許Linux」後臺回覆「Linux」免費獲取服務器
從這張圖來看,從大的方向來劃分,Linux從業者能夠分爲兩個方向:運維、開發。固然除了這兩個方向,還有一些其它方向,但可能比較小衆,就暫時不討論了。可是,單單從這兩個方向來看,又細分出了不少更小的方向,所以咱們能夠看到Linux從業方向的多樣性。微信
下面咱們來詳細介紹各個方向的工做內容和職責。併發
咱們首先來看運維。運維又能夠根據不一樣的工做內容細分爲不少不一樣的方向,可是,主流的分法通常就是這張圖的幾個方向。框架
由於我自己不是作運維的,對運維相關的工做也不是太瞭解,因此這些工做的詳細內容我也沒辦法深刻介紹。因此有時候在個人微信羣裏,不少小夥伴拿一些運維相關的問題來問我,我真的是答不上來,由於我自己不是作這塊的。運維
雖然運維也分不少方向,但不少公司,特別是中小公司,基本是一我的幹完上面這些全部工做。因此,從事運維工做的話也是須要掌握很多技術的。
不論是什麼方向的運維,工做內容基本均可以歸納爲兩句話。第一句話是:保障業務長期穩定運行。就是說,公司的服務器,你不只要學會搭建,並且要保證上面的業務要作到長期穩定運行,任何出一點點差錯,運維人員可能就要背這個鍋了。因此,運維人員常常自嘲本身是「背鍋俠」。
第二句話是:保障數據安全可靠。這句話比較好理解,如今數據泄漏太嚴重了,像以前facebook數據泄漏事件讓facebook吃了不小的罰單。因此如何保證數據的安全也是運維人員一項很是重要的工做。
這幾個方向當中,前3個屬於傳統運維,通常而言工資相對比較低。後兩個是這兩年的熱門工做,工資相對高一些。其中雲計算運維要涉及到容器Docker,K8S之類的,技術要求更高。而運維開發須要學習到JS,Python之類的編程語言,會涉及到一些開發的工做。
我精選了一些Linux高質量電子書和視頻資源,公衆號「良許Linux」後臺回覆「Linux」免費獲取
以上這些就是對運維方向的介紹,咱們再來看第二大方向:開發方向。開發方向又分爲兩個:應用層開發及底層開發。首先來看應用開發。我如今作的工做就是Linux應用開發。那應用開發到底作些什麼工做呢?
通常而言,應用開發又分細分爲這三個:桌面應用開發、嵌入式應用開發、服務器運用開發。
不論是什麼應用開發,簡單而言,都是在Linux下開發各類各樣的應用程序。那什麼又是應用程序呢?我舉個例子大家就明白了。就比如在Windows下,咱們有QQ、微信、以及後面要介紹的虛擬機等,這些都統稱爲應用程序。這就是應用程序的概念。
一樣的,若是在Linux下也開發一些相似這種的應用程序,就是屬於應用開發。在Windows下,咱們看到的那些應用程序大部分是帶圖形界面的,然而,在Linux下的應用程序,有些會帶有界面,而至關一部分是不帶界面的。
Linux下帶界面的應用程序所使用的開發工具之一就是QT,因此有個崗位就叫做QT工程師,作的就是這個活。固然QT程序是可移植的,Linux下一樣一套代碼能夠不用做任何修改就能夠在Windows下編譯運行。
那嵌入式Linux應用開發又是什麼?不少嵌入式設備,好比一些機器人玩具,一些智能家居設備,以及汽車的中控等,不少跑的是Linux系統。那對應的咱們也須要給這些設備開發一些應用程序,就是所謂的嵌入式Linux應用開發。這些應用程序一般是不帶界面的,它們一般會在後臺默默運行,完成相應的業務工做。固然也有一些嵌入式應用程序是帶界面的,但其實不少也是直接跑QT的。
應用開發的第三個方向就是服務器後臺開發。這個其實也是後端,不少服務器後端是用Java進行開發,但也有一些是用C++開發而後跑在Linux系統上,好比微信的後臺就是使用C++開發的。
不論是使用什麼開發語言,都須要考慮事件處理、高併發之類的需求,同時也要學會使用框架,要站在巨人的肩膀上,才走得更快更遠。
我精選了一些Linux高質量電子書和視頻資源,公衆號「良許Linux」後臺回覆「Linux」免費獲取
咱們再來看看Linux底層開發。其實,只要有接觸到Linux,都會據說過內核、文件系統、uboot之類的名詞,這些就是底層開發人員每天打交道的東西。
通常而言,內核、文件系統、uboot的移植不少芯片廠商都已經給你作好了,你只需學會維護便可。而對於內核裁剪、定製之類的工做,那就須要底層工程師來作了。
除此以外,你還要學會開發驅動,這部分的工做應該是比較多的。什麼是驅動開發呢?你們知道,在Linux下一切皆文件,設備也是。因此應用工程師須要操做硬件,好比IO口,只需操做對應的設備文件便可。那這個設備文件怎麼實現對IO口進行操做?這就是驅動開發的工做了。不少公司對驅動開發的需求比較大,因此誕生出一個專門的崗位叫驅動開發工程師。
而隨着物聯網的發展,如今不少設備,特別是智能家居類的設備,不少跑的是安卓系統。因此在嵌入式設備上移植一個安卓系統,也是底層開發工程師的一個工做內容。固然不是全部的底層開發工程師須要作這個工做,一切視公司的業務而定。但若是有時間,底層開發相關的工做都應該要學會。
以上就是Linux從業者的主要工做方向,介紹了這麼多方向後,不少人開始暈乎了:我到底該從事哪一個方向?
對於運維和開發兩個大方向,在薪資方面運維可能會比較低,並且運維的工做可能會比較瑣碎,服務器一旦宕機就要第一個衝到前線,基本是7X24小時待命。並且,運維的天花板相對比較低,可能工做過三五年就到頂了。
而開發方向天花板就比較高一些了,並且薪資會相對比較高。對於應用和底層,應用方向的需求比較大,一般而言一個公司只需一個底層工程師便可,卻須要養一大羣的應用工程師。因此底層工程師就業面會比較小一些,一般比較好的去處就是那些芯片廠商。可是,相對而言底層工程師的工資會比應用工程師要高一些。
對於這些方向的介紹,只是目前市面上的一些實際情況。我沒有建議你別作運維,也沒有建議你去作應用開發,一切都是看我的興趣與意願。只要本身工做得開心,纔是最關鍵的。