學Linux到底學什麼?

来源:https://www.cnblogs.com/yychuyu/archive/2020/04/08/12660117.html
-Advertisement-
Play Games

(本文老生長談,因為最近在B站錄了個視頻,所以順便把文稿也發出來) 熟悉我的朋友應該知道,我是一名Linux工程師。那麼我來問大家一個問題,提到Linux,你們第一時間想到的是這是一個怎樣的崗位呢?我相信會有很大一部分的朋友會想到兩個字:運維。 聽到大家這樣的回答,我真的是很無奈,但也是非常的理解, ...


(本文老生長談,因為最近在B站錄了個視頻,所以順便把文稿也發出來)

熟悉我的朋友應該知道,我是一名Linux工程師。那麼我來問大家一個問題,提到Linux,你們第一時間想到的是這是一個怎樣的崗位呢?我相信會有很大一部分的朋友會想到兩個字:運維。

file

file

聽到大家這樣的回答,我真的是很無奈,但也是非常的理解,因為,曾經我對Linux的瞭解程度也是僅限在運維的層面上。但是,有這種概念的朋友實在是太多了,所以我有必要出來給大家科普一下Linux的幾個主要的從業方向。

其實這個話題我寫過了很多的文字版本,也在直播的時候給大家科普過了,這幾天也以視頻的形式再給大家科普一次,今天就順便把文稿再發出來一下。

Linux其實也是一個大的方向,可以細分為很多小方向。所以很多公司的崗位職責上面寫著要求精通Linux,這是非常不現實的。為了能讓大家更直觀瞭解Linux的從業方向,我畫了下麵這張圖。

file

從這張圖來看,從大的方向來劃分,Linux從業者可以分為兩個方向:運維、開發。當然除了這兩個方向,還有一些其它方向,但可能比較小眾,就暫時不討論了。但是,單單從這兩個方向來看,又細分出了很多更小的方向,因此我們可以看到Linux從業方向的多樣性。

下麵我們來詳細介紹各個方向的工作內容和職責。

Linux運維工作內容和職責

我們首先來看運維。運維又可以根據不同的工作內容細分為很多不同的方向,但是,主流的分法一般就是這張圖的幾個方向。

file

因為我本身不是做運維的,對運維相關的工作也不是太瞭解,所以這些工作的詳細內容我也沒辦法深入介紹。所以有時候在我的微信群里,很多小伙伴拿一些運維相關的問題來問我,我真的是答不上來,因為我本身不是做這塊的。

file

雖然運維也分很多方向,但很多公司,特別是中小公司,基本是一個人幹完上面這些所有工作。所以,從事運維工作的話也是需要掌握不少技術的。

不管是什麼方向的運維,工作內容基本都可以概括為兩句話。第一句話是:保障業務長期穩定運行。就是說,公司的伺服器,你不僅要學會搭建,而且要保證上面的業務要做到長期穩定運行,任何出一點點差錯,運維人員可能就要背這個鍋了。所以,運維人員經常自嘲自己是“背鍋俠”。

file

第二句話是:保障數據安全可靠。這句話比較好理解,現在數據泄漏太嚴重了,像之前facebook數據泄漏事件讓facebook吃了不小的罰單。所以如何保證數據的安全也是運維人員一項非常重要的工作。

file

這幾個方向當中,前3個屬於傳統運維,一般而言工資相對比較低。後兩個是這兩年的熱門工作,工資相對高一些。其中雲計算運維要涉及到容器Docker,K8S之類的,技術要求更高。而運維開發需要學習到JS,Python之類的編程語言,會涉及到一些開發的工作。

Linux開發工作內容和職責

以上這些就是對運維方向的介紹,我們再來看第二大方向:開發方向。開發方向又分為兩個:應用層開發底層開發。首先來看應用開發。我現在做的工作就是Linux應用開發。那應用開發到底做些什麼工作呢?

一般而言,應用開發又分細分為這三個:桌面應用開發、嵌入式應用開發、伺服器運用開發。

file

不管是什麼應用開發,簡單而言,都是在Linux下開發各種各樣的應用程式。那什麼又是應用程式呢?我舉個例子你們就明白了。就好比在Windows下,我們有QQ、微信、以及後面要介紹的虛擬機等,這些都統稱為應用程式。這就是應用程式的概念。

同樣的,如果在Linux下也開發一些類似這種的應用程式,就是屬於應用開發。在Windows下,我們看到的那些應用程式大部分是帶圖形界面的,然而,在Linux下的應用程式,有些會帶有界面,而相當一部分是不帶界面的。

Linux下帶界面的應用程式所使用的開發工具之一就是QT,所以有個崗位就叫作QT工程師,做的就是這個活。當然QT程式是可移植的,Linux下同樣一套代碼可以不用作任何修改就可以在Windows下編譯運行。

嵌入式Linux應用開發又是什麼?很多嵌入式設備,比如一些機器人玩具,一些智能家居設備,以及汽車的中控等,很多跑的是Linux系統。那對應的我們也需要給這些設備開發一些應用程式,就是所謂的嵌入式Linux應用開發。這些應用程式通常是不帶界面的,它們通常會在後臺默默運行,完成相應的業務工作。當然也有一些嵌入式應用程式是帶界面的,但其實很多也是直接跑QT的。

file

應用開發的第三個方向就是伺服器後臺開發。這個其實也是後端,很多伺服器後端是用Java進行開發,但也有一些是用C++開發然後跑在Linux系統上,比如微信的後臺就是使用C++開發的。

不管是使用什麼開發語言,都需要考慮事件處理、高併發之類的需求,同時也要學會使用框架,要站在巨人的肩膀上,才走得更快更遠。

我們再來看看Linux底層開發。其實,只要有接觸到Linux,都會聽說過內核、文件系統、uboot之類的名詞,這些就是底層開發人員天天打交道的東西。

file

一般而言,內核、文件系統、uboot的移植很多晶元廠商都已經給你做好了,你只需學會維護即可。而對於內核裁剪、定製之類的工作,那就需要底層工程師來做了。

除此之外,你還要學會開發驅動,這部分的工作應該是比較多的。什麼是驅動開發呢?大家知道,在Linux下一切皆文件,設備也是。所以應用工程師需要操作硬體,比如IO口,只需操作對應的設備文件即可。那這個設備文件怎麼實現對IO口進行操作?這就是驅動開發的工作了。很多公司對驅動開發的需求比較大,所以誕生出一個專門的崗位叫驅動開發工程師。

而隨著物聯網的發展,現在很多設備,特別是智能家居類的設備,很多跑的是安卓系統。所以在嵌入式設備上移植一個安卓系統,也是底層開發工程師的一個工作內容。當然不是所有的底層開發工程師需要做這個工作,一切視公司的業務而定。但如果有時間,底層開發相關的工作都應該要學會。

以上就是Linux從業者的主要工作方向,介紹了這麼多方向後,很多人開始暈乎了:我到底該從事哪個方向?

對於運維和開發兩個大方向,在薪資方面運維可能會比較低,而且運維的工作可能會比較瑣碎,伺服器一旦宕機就要第一個衝到前線,基本是7X24小時待命。而且,運維的天花板相對比較低,可能工作過三五年就到頂了。

而開發方向天花板就比較高一些了,而且薪資會相對比較高。對於應用和底層,應用方向的需求比較大,通常而言一個公司只需一個底層工程師即可,卻需要養一大群的應用工程師。所以底層工程師就業面會比較小一些,通常比較好的去處就是那些晶元廠商。但是,相對而言底層工程師的工資會比應用工程師要高一些。

對於這些方向的介紹,只是目前市面上的一些實際狀況。我沒有建議你別做運維,也沒有建議你去做應用開發,一切都是看個人興趣與意願。只要自己工作得開心,才是最關鍵的。

看完的都是真愛,點個贊再走唄?您的「三連」就是良許持續創作的最大動力!

  1. 關註原創公眾號「良許Linux」,第一時間獲取最新Linux乾貨!
  2. 公眾號後臺回覆【資料】【面試】【簡歷】獲取精選一線大廠面試、自我提升、簡歷等資料。
  3. 關註我的博客:lxlinux.net

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • LinuxNFS網路文件系統 首先需要準備四台機器,分別為以下伺服器 NAS-Server-0 IP:192.168.254.10 Web-Server-1 IP:192.168.254.11 Web-Server-2 IP:192.168.254.12 Web-Server-3 IP:192.16 ...
  • 一般建議從msdn我告訴你上面下載系統,下麵是 Windows 微軟官網系統下載地址 首先,我們先查看一下Windows10系統狀態。 點擊桌面左下角的 Windows + X + N 快捷方式打開設置,再打開的Windows 設置面板中找到,系統和安全 點擊,在此就可以查看到當前系統的狀態。 Wi ...
  • [TOC] 1.MySQL安裝前準備 1.1.安裝依賴包 1.2.安裝cmake 1.3.創建用戶 2.MySQL下載安裝 2.1.創建軟體下載目錄 2.2.下載並上傳到/server/tools 2.3.解壓 2.4.安裝 3.配置並啟動 3.1.創建軟鏈接 3.2.拷貝配置文件到/etc 3.3 ...
  • 安裝 設置密碼 啟動之後,輸入一行 5.7.x對密碼有了更嚴格的要求,分為LOW,MEDIUM,STRONG三個等級,對應要求如下: LOW Length = 8 MEDIUM Length = 8, numeric, mixed case, and special characters STRON ...
  • 一、安裝中文版man 官方下載地址:https://code.google.com/archive/p/manpages-zh/ GITHUB項目地址:https://github.com/man-pages-zh/manpages-zh 安裝方法一 1、Debian / Ubuntu安裝 sudo ...
  • CPU優化 我們接下來從應用程式和系統的角度,分別來看看如何才能降低 CPU 使用率,提高 CPU 的並行處理能力。 應用程式優化 首先,從應用程式的角度來說,降低 CPU 使用率的最好方法當然是,排除所有不必要的工作,只保留最核心的邏輯。比如減少迴圈的層次、減少遞歸、減少動態記憶體分配等等。除此之外 ...
  • 中斷 中斷其實是一種非同步的事件處理機制,可以提高系統的併發處理能力。 由於中斷處理程式會打斷其他進程的運行,所以,為了減少對正常進程運行調度的影響,中斷處理程式就需要儘可能快地運行。如果中斷本身要做的事情不多,那麼處理起來也不會有太大問題;但如果中斷要處理的事情很多,中斷服務程式就有可能要運行很長時 ...
  • 之前一直用pycharm開發python程式,這個ide編輯器確實香,一點毛病都沒有,唯一毛病就是太貴了。也看到很多人在用免費、開源的Visual Studio Code, 開發的這個ide也號稱宇宙最強ide,不知道我用了會不會變強。下麵是配置並運行python的過程,記錄一下,安裝就不說了,直接 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...