曾經在一年多前寫了一篇關於要成爲linux運維須要掌握哪些技能和工具的貼子,而後不當心被好幾個網友抄襲轉發到其它網站上,固然有些是認識的,最後還很幸運地被某些熱心的學習者把那段內容剪下來看成聖經般的參考,爲此我很感動,爲了報答一些熱心學習linux的朋友,下面本人將推出第二版介紹linux運維須要掌握的技能文章。
首先,我們先討論什麼是運維,不少人徹底不懂運維是幹什麼的,只知道學linux,但總有個目的吧。這樣吧,我們區分一下學linux能幹什麼工做爲主,通常分爲維護類和開發類,開發類就是底層開發偏多,還有嵌入式,底層開發就是C了,通常是linux C開發,這個需求量不大,雖然工資比較高,但難度實在高,反正不是每間公司都有這些崗位,而嵌入式這個簡直是高端技術活,懂這個直接無視我這個文章啦。因此咱們既然不是作開發的,那麼就作維護方面,就是linux運維這崗位了。
具體運維是作什麼呢,從字面意思:運行維護,就是公司服務器的運行與維護,但若是隻是這麼想,實際上是不太對的,保障服務器的運行與維護,有些人會理解成硬件方面,那就是網絡運維,我們學的內容是應用方面的,簡稱是應用運維,而應用就在平臺上,什麼叫平臺呢,這個你們從工做中就會明白,這些就很少解說了。
下面開始說說要掌握什麼技術,先給個初版的傳送門:http://tieba.baidu.com/p/2754014874?pid=42874803996&;cid=0#42874803996&qq-pf-to=pcqq.group
這個傳送門貼子基本包含了運維須要掌握的技術,其實我也沒須要再補充什麼,由於學得越多,能掌握的其實就越少,你總不可能每天學一大堆東西都能徹底掌握吧,而每間公司可能才那麼須要幾個技術點就夠了,其它你學過的技術點沒一會就忘記了,這是人之常情,你的大腦不是硬盤,用一會就容易忘記的,不可能長期都會記得住的。
下面介紹一下怎麼纔算掌握到這個技術點?
有些人會覺得,我懂部署這個軟件,設置這個功能,我就學會了,例如我會部署LAMP,LNMP,我就很牛了,特別有不少種部署方法我都掌握,或者我能寫個腳本一鍵去安裝部署,覺得很厲害,其實我只能說句,這只是入門級別,在一些面試官眼中,這簡直是不值一提的技術,部署什麼服務什麼的,難聽點說句,找個網管上網隨便搜索篇文章對着弄就好了,有何難度,並且你去到公司裏,不少平臺架構都弄好了,還須要你去裝什麼LAMP嗎,必定要明白這個道理,懂安裝懂配置什麼的,只是基本功,並非說你對LAMP很熟很瞭解,其實你是不瞭解,從大學或培訓機構裏學的都是部署環境之類的技術,其實根本就不懂怎麼去應用這個環境架構,例如公司要求對某個功能進行安全加固,在apache裏有這個模塊,添加後還須要配置,而後平常的維護又須要去操做,還有apache的日誌格式須要輸出帶有session id的格式,這些需求你真的懂嗎,不是單單會部署會安裝就覺得學會,其實LAMP是很難的,不是你想象中那麼簡單。
不要把每件事看得很簡單,在學習過程當中,你們會覺得使用這個軟件基本功能就覺得學會了,其實當工做後,須要對這個軟件學得比較精通,才叫真正掌握到,例如監控軟件zabbix或nagios,你在學習時可能只是懂安裝和簡單的配置,但裏面有些複雜的功能,你還須要去慢慢了解,如像trigger這些比較難又很差理解的功能等。
每當面試時,須要說出你的優勢是什麼,其實簡單點說,拿出你的亮點,不是說我懂這個軟件的安裝和配置,這些都是零分,例如我懂得怎麼優化這軟件,怎麼深刻操做這軟件等。
你們其實把linux理解成windows就好了,只是換成命令行操做罷了,運維都是要掌握各式各樣的軟件,就像你用windows辦公,是否是要裝office,輸入法,瀏覽器,殺毒軟件等,其實道理和概念是同樣的,不要把linux看成很高端的樣子。
最後,我說說運維的真正核心技能,那些什麼安裝部署環境等,所有均可如下個文檔去對照操做,這些操道別說網管,連開發均可以代替你去作,因此運維必定要掌握有價值的技術,才能體現出價值,要讓開發和網管是沒法代替到的,下面我說說入門級的:
監控軟件,這個就算是網管和開發都難以掌握,主要是配置複雜,他們沒心去弄,並且監控是運維的重要職責,固然還得看公司資源問題,監控常見的有不少,但最經常使用仍是nagios,zabbix,cacti這三款,其實把這三款學熟是件不容易的事,別覺得部署出來能配置一些簡單的監控項就表明會監控了,絕對不是那麼簡單的,你看看zabbix就知道了,我曾經作過一個zabbix二次開發的項目維護,那個難度不是通常的高,並且功能又多又難搞,毫不是什麼培訓機構1-2天就教會的,這是不可能的。
其次就是shell腳本,這是運維的核心技能,也是必須要掌握的,若是不掌握腳本能力,你就別作了,甚至你根本就作不了,面試官一見你連簡單的腳本都寫不了,直接不要。
那有些人就怕了,個人編程能力不好,真的寫不出啊。其實誰的編程能力會強,除非是天生頭腦特靈活的人,不然其實你們的水平都不會相差太遠,腳本比開發語言簡單得多了,只是你們沒遇到一些案例和需求,因此是寫不出來,這個是須要慢慢去練習的。
核心技能是這2個爲主,而後有加分的,例如掌握python和perl和php,固然,對於一個剛入行的人來講,這基本不太可能了,一來是精力沒太多,二來是時間沒有,這個只能入行後再去學習。
下面說說運維在工做中須要掌握的技術,注意,這是在工做中掌握的,在學習過程當中是比較難掌握的
一共四大方面:一、排錯;二、優化;三、數據庫;四、開發語言,第5必須的,就是運維意識,至關重要
第1點和第2點都須要經驗去支持,這個沒經驗你根本不知道排錯和優化是怎麼搞,在學校和培訓機構各類吹虛裏,根本就不可能掌握到,這不是說你安裝什麼軟件時遇到錯誤能解決那些,那種雖然也叫排錯,但只是基礎級別,真正的排錯是指平臺出故障,讓你去分析與處理,而出現的錯誤會各式各樣,並且涉及的範圍也很廣,因此這個是須要經驗去支持的。
第2點優化更是個大問題,基本沒經驗是弄不了,別覺得培訓機構會教1-2天優化課程就掌握了這技術,這是不可能的,優化能夠說是運維最吃香的技能,但也是最高難度的,由於涉及的知識面很廣並且還須要很深刻了解,優化是有風險,不是隨便在網上搜個文章對着改一下配置文件參數或系統參數就優化了,這是亂來有風險的,甚至怎麼樣纔算有效優化,我也不想說,由於對於沒入行的人來講是很難去理解。
第3點數據庫,也是運維加工資的重要核心技能,有些公司的運維可能接觸不到數據庫,其實運維的加工資技能要麼就是開發,要麼就是數據庫,若是這2點都不會,那麼就是個比網管高級點的打雜罷了,相對於數據庫來講,運維的操做仍是會有的,並且還昔昔相關,一但操做失誤又沒法回滾,你就真的要滾回家了。
第4點開發語言,就是上面所說的,要懂PYTHON或PHP,至於學這個幹麻,這個我也很差說,要解釋又一大段話,只能說如今都存在這個需求,特別是python,你會發現公司招聘時有這個需求,但真正工做時又不須要用,其實不是這個意思,python是本身想用就用,而不是公司要求你用,例如你去完成一個很麻煩的操做,而shell可能沒法知足你或者效率很低,那麼你就須要用python去知足,這是本身需求使用的,跟公司無關,但就能體現出你的價值了。
而第5點是每一個運維都必須的,意識是很重要,並非你技術很牛,學的技術不少很熟,就不表明你不須要運維意識,其實領導很看重運維意識的,例若有沒有作好備份,權限分配問題,平臺測試狀況,故障響應時間等,這些都是意識,而不是你學了不少技術自認大牛了,平臺發現故障你又沒什麼大不子,覺得很簡單的問題喜歡處理就處理,不須要向其它部門反饋等,領導不是看你的技術如何,而是看你的運維意識如何,你沒運維意識,技術再牛也沒用,只會讓其它部門的人跟你不協調。
大概就說到這吧,今年個人目標是把數據庫學熟,而後轉DBA,而後再加個PY,要知道作IT這行是苦B的,須要無盡的學習,不學習只會被淘汰,不想被年輕的淘汰,就只能不斷增值本身,否則不是你工資沒法提高,而是你沒法再從事這行,但願這篇文章能幫到你們
(轉自51CTO技術論壇)