學Linux到底學什麼?未來職業到底是怎麼樣的?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作爲一名Linux工程師。那麼我來問大家一個問題,提到Linux,你們第一時間想到的是這是一個怎樣的崗位呢?我相信會有很大一部分的朋友會想到兩個字:運維","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/e9/e9d7e007581761c048016611df0814ac.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/e9/e9e81a646cc193a93911800ef87ca22d.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​聽到大家這樣的回答,我真的是很無奈,但也是非常的理解,因爲,曾經我對Linux的瞭解程度也是僅限在運維的層面上。但是,有這種概念的朋友實在是太多了,所以我有必要出來給大家科普一下Linux的幾個主要的從業方向。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其實這個話題我寫過了很多的文字版本,也在直播的時候給大家科普過了,這幾天也以視頻的形式再給大家科普一次,今天就順便把文稿再發出來一下。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Linux其實也是一個大的方向,可以細分爲很多小方向。所以很多公司的崗位職責上面寫着要求精通Linux,這是非常不現實的。爲了能讓大家更直觀瞭解Linux的從業方向,我畫了下面這張圖。​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/af/af19fdb5ad0ee6e3308aa9e99b50615f.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從這張圖來看,從大的方向來劃分,Linux從業者可以分爲兩個方向:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"運維、開發","attrs":{}},{"type":"text","text":"。當然除了這兩個方向,還有一些其它方向,但可能比較小衆,就暫時不討論了。但是,單單從這兩個方向來看,又細分出了很多更小的方向,因此我們可以看到Linux從業方向的多樣性。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下面我們來詳細介紹各個方向的工作內容和職責。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"Linux運維工作內容和職責","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們首先來看運維。運維又可以根據不同的工作內容細分爲很多不同的方向,但是,主流的分法一般就是這張圖的幾個方向。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/43/43f5d23f0bba3e55cb1cf8eb2e97cbd5.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因爲我本身不是做運維的,對運維相關的工作也不是太瞭解,所以這些工作的詳細內容我也沒辦法深入介紹。所以有時候在我的微信羣裏,很多小夥伴拿一些運維相關的問題來問我,我真的是答不上來,因爲我本身不是做這塊的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/d9/d90d83bfe8884d4caa53c31ab6ed5e55.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雖然運維也分很多方向,但很多公司,特別是中小公司,基本是一個人幹完上面這些所有工作。所以,從事運維工作的話也是需要掌握不少技術的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不管是什麼方向的運維,工作內容基本都可以概括爲兩句話。","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"第一句話是:保障業務長期穩定運行","attrs":{}},{"type":"text","text":"。就是說,公司的服務器,你不僅要學會搭建,而且要保證上面的業務要做到長期穩定運行,任何出一點點差錯,運維人員可能就要背這個鍋了。所以,運維人員經常自嘲自己是“背鍋俠”。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/41/41eb7daa6b64943eaa0b374b7b4f0559.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"第二句話是:保障數據安全可靠","attrs":{}},{"type":"text","text":"。這句話比較好理解,現在數據泄漏太嚴重了,像之前facebook數據泄漏事件讓facebook吃了不小的罰單。所以如何保證數據的安全也是運維人員一項非常重要的工作。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/7a/7a8814d5c5763fb301bd2a9d4db8bd87.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這幾個方向當中,前3個屬於傳統運維,一般而言工資相對比較低。後兩個是這兩年的熱門工作,工資相對高一些。其中雲計算運維要涉及到容器Docker,K8S之類的,技術要求更高。而運維開發需要學習到JS,Python之類的編程語言,會涉及到一些開發的工作。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"Linux開發工作內容和職責","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上這些就是對運維方向的介紹,我們再來看第二大方向:開發方向。開發方向又分爲兩個:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"應用層開發","attrs":{}},{"type":"text","text":"及","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"底層開發","attrs":{}},{"type":"text","text":"。首先來看應用開發。我現在做的工作就是Linux應用開發。那應用開發到底做些什麼工作呢?","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一般而言,應用開發又分細分爲這三個:","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"桌面應用開發、嵌入式應用開發、服務器運用","attrs":{}},{"type":"text","text":"開發。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ef/efbad27956097f1fbde4d1ba7ed84522.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不管是什麼應用開發,簡單而言,都是在Linux下開發各種各樣的應用程序。那什麼又是應用程序呢?我舉個例子你們就明白了。就好比在Windows下,我們有QQ、微信、以及後面要介紹的虛擬機等,這些都統稱爲應用程序。這就是應用程序的概念。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同樣的,如果在Linux下也開發一些類似這種的應用程序,就是屬於應用開發。在Windows下,我們看到的那些應用程序大部分是帶圖形界面的,然而,在Linux下的應用程序,有些會帶有界面,而相當一部分是不帶界面的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Linux下帶界面的應用程序所使用的開發工具之一就是QT,所以有個崗位就叫作QT工程師,做的就是這個活。當然QT程序是可移植的,Linux下同樣一套代碼可以不用作任何修改就可以在Windows下編譯運行。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"嵌入式Linux應用開發又是什麼?","attrs":{}},{"type":"text","text":"很多嵌入式設備,比如一些機器人玩具,一些智能家居設備,以及汽車的中控等,很多跑的是Linux系統。那對應的我們也需要給這些設備開發一些應用程序,就是所謂的嵌入式Linux應用開發。這些應用程序通常是不帶界面的,它們通常會在後臺默默運行,完成相應的業務工作。當然也有一些嵌入式應用程序是帶界面的,但其實很多也是直接跑QT的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/3c/3c003fa48924293be993c7c370a8b1ee.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"應用開發的第三個方向就是服務器後臺開發。這個其實也是後端,很多服務器後端是用Java進行開發,但也有一些是用C++開發然後跑在Linux系統上,比如微信的後臺就是使用C++開發的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不管是使用什麼開發語言,都需要考慮事件處理、高併發之類的需求,同時也要學會使用框架,要站在巨人的肩膀上,才走得更快更遠。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們再來看看Linux底層開發。其實,只要有接觸到Linux,都會聽說過內核、文件系統、uboot之類的名詞,這些就是底層開發人員天天打交道的東西。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/0b/0ba61f49743726c32d0f42153d12f078.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一般而言,內核、文件系統、uboot的移植很多芯片廠商都已經給你做好了,你只需學會維護即可。而對於內核裁剪、定製之類的工作,那就需要底層工程師來做了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除此之外,你還要學會開發驅動,這部分的工作應該是比較多的。什麼是驅動開發呢?大家知道,在Linux下一切皆文件,設備也是。所以應用工程師需要操作硬件,比如IO口,只需操作對應的設備文件即可。那這個設備文件怎麼實現對IO口進行操作?這就是驅動開發的工作了。很多公司對驅動開發的需求比較大,所以誕生出一個專門的崗位叫驅動開發工程師。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而隨着物聯網的發展,現在很多設備,特別是智能家居類的設備,很多跑的是安卓系統。所以在嵌入式設備上移植一個安卓系統,也是底層開發工程師的一個工作內容。當然不是所有的底層開發工程師需要做這個工作,一切視公司的業務而定。但如果有時間,底層開發相關的工作都應該要學會。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上就是Linux從業者的主要工作方向,介紹了這麼多方向後,很多人開始暈乎了:我到底該從事哪個方向?","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於運維和開發兩個大方向,在薪資方面運維可能會比較低,而且運維的工作可能會比較瑣碎,服務器一旦宕機就要第一個衝到前線,基本是7X24小時待命。而且,運維的天花板相對比較低,可能工作過三五年就到頂了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而開發方向天花板就比較高一些了,而且薪資會相對比較高。對於應用和底層,應用方向的需求比較大,通常而言一個公司只需一個底層工程師即可,卻需要養一大羣的應用工程師。所以底層工程師就業面會比較小一些,通常比較好的去處就是那些芯片廠商。但是,相對而言底層工程師的工資會比應用工程師要高一些。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於這些方向的介紹,只是目前市面上的一些實際狀況。我沒有建議你別做運維,也沒有建議你去做應用開發,一切都是看個人興趣與意願。","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"只要自己工作得開心,纔是最關鍵的。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"看完的都是真愛,點個贊再走唄?您的「三連」就是我的最大動力!","attrs":{}}]},{"type":"numberedlist","attrs":{"start":null,"normalizeStart":1},"content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"關注公衆號「Linux C後臺服務器開發」,第一時間獲取最新Linux乾貨!","attrs":{}}]}],"attrs":{}},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"+qun720209036獲取精選一線大廠面試、自我提升、簡歷等資料。","attrs":{}}]}],"attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/bb/bb2d145f8c36a12c7a653c5fd90ba271.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"更多Linux服務器開發高階完整視頻分享,點擊鏈接即可觀看:","attrs":{}},{"type":"link","attrs":{"href":"https://ke.qq.com/course/417774?flowToken=1013189","title":null},"content":[{"type":"text","text":"https://ke.qq.com/course/417774?flowToken=1013189","attrs":{}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"內容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒體,P2P,Linux內核,Docker,TCP/IP,協程,DPDK多個高級知識點分享。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Linux服務器開發高級架構qun:720209036","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/45/45dd4f451292a633b09a45b3bccf62d7.png","alt":"","title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ab/ab5da14454a25c1453ae843c88b07540.gif","alt":null,"title":"點擊並拖拽以移動","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"​","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章