寫給Linux系統運維的朋友

本人是linux運維工程師,對這方面有點心得,現在我說說要掌握哪方面的工具吧。說到工具,在行外可以說是技能,在行內我們一般稱爲工具,就是運維必須要掌握的工具。我就大概列出這幾方面,這樣入門就基本沒問題了。
linux系統如果是學習可以選用redhat或centos,特別是centos在企業中用得最多,當然還會有其它版本的,但學習者還是以這2個版本學習就行,因爲這兩個版本都是兄弟,沒區別的,有空可以再研究一下SUSE,有些公司也喜歡用,例如我公司 。。。。。
工具如下:
1、linux系統基礎,這個不用說了,是基礎中的基礎,連這個都不會就別幹了,參考書籍,可以看鳥哥linux基礎篇,至少要掌握這書60%內容,沒必須全部掌握,但基本命令總得會吧
2、網絡服務,服務有很多種,每間公司都會用到不同的,但基礎的服務肯定要掌握,如FTP, DNS,SAMBA, 郵件, 這幾個大概學一下就行,LAMP和LNMP是必須要熟練,我所指的不是光光會搭建,而是要很熟悉裏面的相當配置才行,因爲公司最關鍵的絕對是WEB服務器,所以nginx和apache要熟悉,特別是nginx一定要很熟悉才行,至少有些公司還會用tomcat,這個也最好學一下。其實網絡服務方面不用太擔心,一般公司的環境都已經搭建好,就算有新服務器或讓你整改,公司會有相應的文檔讓你參照來弄,不會讓你亂來的,但至少相關的配置一定要學熟,而且肯定是編譯安裝多,那些模塊要熟悉一下他的作用,特別是PHP那些模塊。
這面2點只是基礎,也是必要條件,不能說是工具,下以纔是真正的要掌握的工具。
3、shell腳本和另一個腳本語言,shell是運維人員必須具備的,不懂這個連入職都不行,至少也要寫出一些系統管理腳本,最簡單也得寫個監控CPU,內存比率的腳本吧,這是最最最基本了,別以爲會寫那些猜數字和計算什麼數的,這些沒什麼作用,只作學習意義,寫系統腳本纔是最有意義,而另一個腳本語言是可選的,一般是3P,即python, perl和php,php就不需要考慮了,除非你要做開發,我個人建議學python會比較好,難實現自動化運維,perl是文本處理很強大,反正這兩個學一個就行了。
4、sed和awk工具,必須要掌握,在掌握這兩個工具同時,還要掌握正則表達式,這個就痛苦了,正則是最難學的表達式,但結合到sed和awk中會很強大,在處理文本內容和過濾WEB內容時十分有用,不過在學shell的同時一般會經常結合用到的,所以學第3點就會順便學第4點。
5、文本處理命令,sort , tr , cut, paste, uniq, tee等,必學,也是結合第3點時一併學習的。
6、數據庫,首選mysql,別問我爲什麼不學sqlserver和oracle,因爲linux用得最多絕對是mysql,增刪改查必學,特別要學熟查,其它方面可能不太需要,因爲運維人員使用最多還是查,哪些優化和開發語句不會讓你弄的。
7、防火牆,不學不行,防火牆也算是個難點,說難不難,說易不易,最重要弄懂規則,如果學過CCNA的朋友可能會比較好學,因爲iptables也有NAT表,原理是一樣的,而FILTER表用得最多,反正不學就肯定不合格。
8、監控工具,十分十分重要,我個人建議,最好學這3個,cacti,nagios,zibbix,企業用得最多應該是nagios和 zibbix,反正都學吧,但nagios會有點難,因爲會涉及到用腳本寫自動監控,那個地方很難。
9、集羣和熱備,這個很重要,肯定要懂的,但到了公司就不會讓你去弄,因爲新手基本不讓你碰,集羣工具有很多,最好學是LVS,這是必學,最好也學學nginx集羣,反向代理,還有熱備,這個就更多工具能實現了,像我公司是自己開發熱備工具的,mysql熱備也要學,就是主從複製,這個別告訴我容易,其實不容易的,要學懂整個流程一點也不容易,只照着做根本沒意思。
10、數據備份,不學不行,工具有很多,但至少要把RAID的原理弄懂,特別是企業最常用的1+0或0+1,自己做實驗也要弄出來,備份工具有很多,如tar, dump, rsync等,最好多瞭解一下。
算了,說到這10點已經夠你受了,應該可以入門了,因爲有些技術會比較難學,例如apache和nginx中還有些很重要的技術,如系統調優和服務優化,還有程序優化,這些在沒接觸工作前很難學習到的,所以先把這10點學了吧,估計要學熟至少3個月不止,就腳本那部分已經讓你很吃力了,我建議是先學熟shell,等工作後再學另一門腳本語言,這樣會比較好。
以上就是踏入linux運維工程師需要掌握的工具,其實還有很多工具要掌握的,但你在學習環境中是很難學到,最後我再提醒一下,這裏所指的工具相當於技能,而不是像windows或ubuntu那些圖形化工具,那些工具沒用的,還有,學linux就別裝圖形界面,這樣虛擬機就不用吃太多內存,而且絕對不建議在真機上裝linux,這樣只用於裝B用,根本達不到學習效果。

#####################################################################################

    曾經在一年多前寫了一篇關於要成爲linux運維需要掌握哪些技能和工具的貼子,然後不小心被好幾個網友抄襲轉發到其它網站上,當然有些是認識的,最後還很幸運地被某些熱心的學習者把那段內容剪下來當作聖經般的參考,爲此我很感動,爲了報答一些熱心學習linux的朋友,下面本人將推出第二版介紹linux運維需要掌握的技能文章。
    首先,咱們先討論什麼是運維,很多人完全不懂運維是幹什麼的,只知道學linux,但總有個目的吧。這樣吧,咱們區分一下學linux能幹什麼工作爲主,一般分爲維護類和開發類,開發類就是底層開發偏多,還有嵌入式,底層開發就是C了,一般是linux C開發,這個需求量不大,雖然工資比較高,但難度實在高,反正不是每間公司都有這些崗位,而嵌入式這個簡直是高端技術活,懂這個直接無視我這個文章啦。所以我們既然不是做開發的,那麼就做維護方面,就是linux運維這崗位了。

具體運維是做什麼呢,從字面意思:運行維護,就是公司服務器的運行與維護,但如果只是這麼想,其實是不太對的,保障服務器的運行與維護,有些人會理解成硬件方面,那就是網絡運維,咱們學的內容是應用方面的,簡稱是應用運維,而應用就在平臺上,什麼叫平臺呢,這個大家從工作中就會明白,這些就不多解說了。

下面開始說說要掌握什麼技術

這個傳送門貼子基本包含了運維需要掌握的技術,其實我也沒需要再補充什麼,因爲學得越多,能掌握的其實就越少,你總不可能天天學一大堆東西都能完全掌握吧,而每間公司可能才那麼需要幾個技術點就夠了,其它你學過的技術點沒一會就忘記了,這是人之常情,你的大腦不是硬盤,用一會就容易忘記的,不可能長期都會記得住的。

下面介紹一下怎麼纔算掌握到這個技術點?

 有些人會以爲,我懂部署這個軟件,設置這個功能,我就學會了,例如我會部署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,當然,對於一個剛入行的人來說,這基本不太可能了,一來是精力沒太多,二來是時間沒有,這個只能入行後再去學習。

 下面說說運維在工作中需要掌握的技術,注意,這是在工作中掌握的,在學習過程中是比較難掌握的

 一共四大方面:1、排錯;2、優化;3、數據庫;4、開發語言,第5必須的,就是運維意識,相當重要

 第1點和第2點都需要經驗去支持,這個沒經驗你根本不知道排錯和優化是怎麼搞,在學校和培訓機構各種吹虛裏,根本就不可能掌握到,這不是說你安裝什麼軟件時遇到錯誤能解決那些,那種雖然也叫排錯,但只是基礎級別,真正的排錯是指平臺出故障,讓你去分析與處理,而出現的錯誤會各式各樣,而且涉及的範圍也很廣,所以這個是需要經驗去支持的。

 第2點優化更是個大問題,基本沒經驗是弄不了,別以爲培訓機構會教1-2天優化課程就掌握了這技術,這是不可能的,優化可以說是運維最吃香的技能,但也是最高難度的,因爲涉及的知識面很廣而且還需要很深入瞭解,優化是有風險,不是隨便在網上搜個文章對着改一下配置文件參數或系統參數就優化了,這是亂來有風險的,甚至怎麼樣纔算有效優化,我也不想說,因爲對於沒入行的人來說是很難去理解。

 第3點數據庫,也是運維加工資的重要核心技能,有些公司的運維可能接觸不到數據庫,其實運維的加工資技能要麼就是開發,要麼就是數據庫,如果這2點都不會,那麼就是個比網管高級點的打雜罷了,相對於數據庫來說,運維的操作還是會有的,而且還昔昔相關,一但操作失誤又無法回滾,你就真的要滾回家了。

 第4點開發語言,就是上面所說的,要懂PYTHON或PHP,至於學這個幹麻,這個我也不好說,要解釋又一大段話,只能說現在都存在這個需求,特別是python,你會發現公司招聘時有這個需求,但真正工作時又不需要用,其實不是這個意思,python是自己想用就用,而不是公司要求你用,例如你去完成一個很麻煩的操作,而shell可能無法滿足你或者效率很低,那麼你就需要用python去滿足,這是自己需求使用的,跟公司無關,但就能體現出你的價值了。

 而第5點是每個運維都必須的,意識是很重要,並不是你技術很牛,學的技術很多很熟,就不代表你不需要運維意識,其實領導很看重運維意識的,例如有沒有做好備份,權限分配問題,平臺測試情況,故障響應時間等,這些都是意識,而不是你學了很多技術自認大牛了,平臺發現故障你又沒什麼大不子,以爲很簡單的問題喜歡處理就處理,不需要向其它部門反饋等,領導不是看你的技術如何,而是看你的運維意識如何,你沒運維意識,技術再牛也沒用,只會讓其它部門的人跟你不協調。

 大概就說到這吧,今年我的目標是把數據庫學熟,然後轉DBA,然後再加個PY,要知道做IT這行是苦B的,需要無盡的學習,不學習只會被淘汰,不想被年輕的淘汰,就只能不斷增值自己,不然不是你工資無法提升,而是你無法再從事這行,希望這篇文章能幫到大家.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章