一個新手面試 Linux 運維工作至少需要知道哪些知識?

我學的是linux,到上海發現招的人很少,而且基本上都要求要經驗,面試兩家後在一家IDC虛機部門,由於這家公司分公司出了點問題,將我調到江蘇去了,最近一兩個月在機房很閑,雖然可以自學,但感覺沒有接觸生產環境,這邊的技術部解散了,自己酷愛linux,apche,nginx,squid,bind,cacti都配置過,shell一般,新的技術也很關注,但自己沒有在生產環境鍛煉,研究的知識太廣泛而未深入,放久就忘了,想到杭州去找工作,發現招聘要求還是很高。目前很迷茫。


1,Linux 基礎命令及腳本
shell 是基本要求,最好懂perl 或 python 等。如果不懂腳本,怎麼把重複的勞動變得簡單呢?
2,系統監控命令
目的是獲取系統當前的運行狀態,遇到故障等要懂得分析排查。系統調優,並懂得原理,知道為什麼這個參數要調整成這個值。
3,網路監控命令
基本和第二點原因一致,不過重點關注於網路。同樣需要理解原理及調優,不能照搬前人的經驗而不知甚解。

以上,可以說只是基本。
沒有生產環境不是借口,知識可以學習,再加以生產環境的經驗積累,就會慢慢沉澱下來了。

針對你現在的情況我說說:
呆機房的話,就要好好利用空餘時間去學習,並利用一下當前的資源去做一些嘗試。
如何優化網路?機房的網路很好,有沒有嘗試做一點技術嘗試?例如,幫自己家裡的電腦翻牆?(只是一個假設,並不推薦將公司的資源滿足私人的利益)
配置過apache , nginx , squid ,有沒有理解了裡面的配置的意義,如何調優?如何玩?我認為把興趣注入工作很重要,懂得利用這些東西去玩出自己的花樣。
有沒有將重複工作簡化,例如使用fai 或 ks 安裝操作系統,而不用總浪費時間在安裝系統上。

說點技術以外的事情:
多學習,多思考,不滿足當前的知識,虛心。多玩 : - )


運維工作尤其是linux運維,其實最考驗你的能力,因為需要學習的東西實在太多,
你既要懂網路:思科華為設備的配置;
要懂性能調優:包括lamp或者lnmp的性能調優,也包括linux操作系統調優;
要懂資料庫mysql或者nosql(例如mongodb):
要懂編程語言:Shell是最基本的,還要學習perl,python,甚至ruby和C++等(因為一些軟體是這些語言編寫的),還得熟練掌握awk,sed,grep以及正則表達式;
要懂一些調試排錯的命令工具的使用,比如htop,dstat,strace,systemtap,iostat,sar等;
要有比較好的英語水平:因為很多軟體或者工具以及出現問題排錯的答案都不是國人所做,甚至還需要和原作者交流,在谷歌group裡面留言討論
要有堅強的體魄和超時工作的心理準備:升級維護都是在大家還在做夢時候。夜裡2點網站掛了你也得起來,手機不停的接收各種報警簡訊...
要有背黑鍋的忍耐力:運維一直是公司爹不疼娘不愛的位置,別人做好了和你無關,你做差了別人作不好就是你影響的。人力和財務是技術部門的服務,運維就是各技術部門的服務,大到線上操作,小到幫助公司其他使用linux桌面的同事,公司內部機房,IDC維護(跑腿搬伺服器),干好了就算了,干不好,一堆人背後罵你
還要有(這也是最重要的)一顆積極學習的心,因為技術發展的不容許你原地不前,假如你不是技術geek,覺得Shell+apache就是anything,其實我覺得不做運維也會幹的不錯,呵呵...

當然了,作linux運維還是有成就的:
一般換工作都是獵頭接待;
工資漲幅最大也是最快,其他行業很少有工作1,2年就能張到1W以上的吧?
懂得東西太廣泛...換工作很簡單,轉職業也so easy


給你推薦一篇文章

運維中關鍵技術點解剖:1 大量高並髮網站的設計方案 ;2 高可靠、高可伸縮性網路架構設計;3 網站安全問題,如何避免被黑?4 南北互聯問題,動態CDN解決方案;5 海量數據存儲架構

一、什麼是大型網站運維?

首先明確一下,全文所講的」運維「是指:大型網站運維,與其它運維的區別還是蠻大的;然後我們再對大型網站與小型網站進行範圍定義,此定義主要從運維複雜性角度考慮,如網站規範、知名度、伺服器 量級、pv量等考慮,其它因素不是重點;因此,我們先定義伺服器規模大於1000台,pv每天至少上億(至少國內排名前10),如sina、baidu、 QQ,http://51.com等等;其它小型網站可能沒有真正意義上的運維工程師,這與網站規範不夠和成本因素有關,更多的是集合網路、系統 、開發工作於一身的「複合性人才」,就如有些公司把一些合同採購都納入了運維職責範圍,還有如IDC網路規劃也納入運維職責。所以,非常重要一定需要明白:運維對其它關聯工種必須非常了解熟悉:網路、系統、系統開發、存儲,安全,DB等;我在這裡所講的運維工程師就是指專職運維工程師。

我們再來說說一般產品的「出生」流程:

1、首先公司管理層給出指導思想,PM定位市場需求(或copy成熟應用)進行調研、分析、最終給出詳細設計。

2、架構師根據產品設計的需求,如pv大小預估、伺服器規模、應用架構等因素完成網路規劃,架構設計等(基本上對網路變動不大,除非大項目)

3、開發工程師將設計code實現出來、測試工程師對應用進行測試。

4、好,到運維工程師出馬了,首先明確一點不是說前三步就與運維工作無關了,恰恰相反,前三步與運維關係很大:應用的前期架構設計、軟/硬體資源評估申請採購、應用設計性能隱患及評估、IDC、服務性能安全調優、伺服器系統級優化(與特定應用有關)等都需運維全程參與,並主導整個應用上線項目;運維工程師負責產品伺服器上架準備工作,伺服器系統安裝、網路、IP、通用工具集安裝。運維工程師還需要對上線的應用系統架構是否合理、是否具備可擴展性、及安全隱患等因素負責,並負責最後將產品(程序)、網路、系統三者進行拼接並最優化的組合在一起,最終完成產品上線提供用戶使用,並周而復使:需求-&>開發(升級)-&>測試-&>上線(性能、安全問題等之前預估外的問題隨之慢慢就全出來了)在這裡提一點:網站開發模式與傳統軟體開發完全不一樣,網站一天開發上線1~5個升級版本是家常便飯,用戶體驗為王嘛,如果某個線上問題像M$ 需要1年解決,用戶早跑光了;應用上線後,運維工作才剛開始,具體工作可能包括:升級版本上線工作、服務監控、應用狀態統計、日常服務狀態巡檢、突發故障處理、服務日常變更調整、集群管理、服務性能評估優化、資料庫管理優化、隨著應用PV增減進行應用架構的伸縮、安全、運維開發工作:

a 、盡量將日常機械性手工工作通過工具實現(如服務監控、應用狀態統計、服務上線等等),提高效率。

b、解決現實中服務存在的問題,如高可靠性、可擴展性問題等。

c、大規模集群管理工具的開發,如1萬台機器如何在1分鐘內完成密碼修改、或運行指定任務?2000台伺服器如何快速安裝操作系統?各分散式IDC、存儲集群中數PT級的數據如何快速的存儲、共享、分析?等一系列挑戰都需運維工程師的努力。

在此說明一下其它配合工種情況,在整個項目中,前端應用對於網路/系統工程師來說是黑匣子,同時開發工程師職責只是負責完成應用的功能性開發,並對應用本身性能、安全性等應用本身負責,它不負責或關心網路/系統架構方面事宜,當然軟/硬體採購人員等事業部其它同事也不會關心這些問題,各司其職,但項目的核心是運維工程師~!所有其它部門的橋樑。

上面說了很多,我想大家應該對運維有一些概念了,在此打個比方吧,如果我們是一輛高速行駛在高速公路上的汽車,那運維工程師就是司機兼維修工,這個司機不簡單,有時需要在高速行駛過程中換輪胎、並根據道路情況換檔位、當汽車速度越來越快,汽車本身不能滿足高速度時對汽車性能調優或零件升級、高速行進中解決汽車故障及性能問題、時刻關注前方安全問題,並先知先覺的採取規避手段。這就是運維工作~!

最後說一下運維工程師的職責:」確保線上穩定「,看似簡單,但實屬不容易,運維工程師必須在諸多不利因素中進行權衡:新產品模式對現有架構及技術的衝擊、產品高頻度的升級帶來的線上BUG隱患、運維自動化管理承度不高導致的人為失誤、IT行業追求的高效率導致流程執行上的缺失、用戶增漲帶來的性能及架構上的壓力、IT行業寬鬆的技術管理文化、創新風險、互聯網安全性問題等因素,都會是網站穩定的大敵,運維工程師必須把控好這最後一關,需具體高度的責任感、原則性及協調能力,如果能做到各因素的最佳平衡,那就是一名優秀的運維工程師了。

另外在此聊點題外話,我在這裡看到有很多人要sina、QQ、baidu,http://51.com等聊自已的運維方面的經驗,其實這對於它們有點免為其難:

a、各公司自已網路架構、規模、或多或少還算是公司的核心秘密,要保密,另外,對於大家所熟知的通用軟體、架構,由於很多公司會根據自已實際業務需要,同時因為原版性能、安全性、已知bug、功能等原因,進行過二次開發(如apache,php,mysql ),操作系統內核也會根據不同業務類型進行定製的,如某些應用屬於運算型、某些是高IO型、或大存儲大內存型。根據這些特點進行內核優化定製,如sina就在 memcache上進行過二次開發,搞出了一個MemcacheDB,具體做得如何我們不談,但開源了,是值得稱讚的,國內公司對於開源基本上是索取,沒有貢獻;另外,伺服器也不是大家所熟知的型號,根據業務特點,大部份都是找DELL/HP/ibm進行過定製;另外,在分散式儲存方面都有自已解決方案,要不就是使用現成開源hadoop等解決方案,或自已開發。但90%都是借鑒google GFS的思想:分散式存儲、計算、大表。

b、各公司業務方向不一樣,會導致運維模式或方法都不一樣,如http://51.com和baidu運維肯定區別很大,因為他們業務模式決定了其架構、伺服器量級、 IDC分布、網路結構、通用技術都會不一樣,主打新聞門戶的sina與主打sns的http://51.com運維模式差異就非常大,甚至職責都不大一樣;但有一點,通用技術及大致架構上都大同小異,大家不要太神化,更多的公司只是玩壘積木的遊戲罷了,沒什麼技術含量。

c、如上面所講,目前大型網站運維還處於幼年時期理念和經驗都比較零散,沒有成熟的知識體系,可能具體什麼是運維,大家都要先思索一番,或壓根沒想過,真正討論也只是運維工作的冰山一角,局限於具體技術細節,或某某著名網站大的框架,真正運維體系化東西沒有,這也許是目前網上運維相關資料 比較少的原故吧。或者也是國內運維人員比較難招,比較牛的運維工程師比較少見的原因之一吧。

二、運維工作師需要什麼樣的技能及素質

做為一名運維工程師需要什麼樣的技能及素質呢,首先說說技能吧,如大家上面所看到,運維是一個集多IT工種技能與一身的崗位,對系統-&>網路 -&>存儲-&>協議-&>需求-&>開發-&>測試-&>安全等各環節都需要了解一些,但對於某些環節需熟悉甚至精通,如系統 (基本操作系統的熟悉使用,*nix,windows ..)、協議、系統開發(日常很重要的工作是自動運維化相關開發、大規模集群工具開發、管理)、通用應用(如lvs、ha、web server 、db、中間件、存儲等)、網路,IDC拓樸架構;

技能方面總結以下幾點:

1、開發能力,這點非常重要,因為運維工具都需要自已開發,開發語言:perl、python、php(其中之一)、shell(awk,sed,expect….等),需要有過實際項目開發經驗,否則工作會非常痛苦。

2、通用應用方面需要了解:操作系統(目前國內主要是linux、bsd)、webserver相關 (nginx,apahe,php,lighttpd,java。。。)、資料庫(mysql,oralce)、其它雜七八拉的東東;系統優化,高可靠性;這些只是加分項,不需必備,可以邊工作邊慢慢學,這些東西都不難。當然在運維中,有些是有分工偏重點不一樣。

3、系統、網路、安全,存儲,CDN,DB等需要相當了解,知道其相關原理。

個人素質方面:

1、溝通能力、團隊協作:運維工作跨部門、跨工種工作很多,需善於溝通、並且團隊協作能力要強;這應該是現代企業的基本素質要求了,不多說。

2、工作中需膽大心細:膽大才能創新、不走尋常路,特別對於運維這種新的工種,更需創新才能促進發展;心細,運維工程師是網站admin,最高線上許可權者,一不小心就會遺憾終生或打入十八層地獄。

3、主動性、執行力、精力旺盛、抗壓能力強:由於IT行業的特性,變化快;往往計劃趕不上變化,運維工作就更突出了,比如國內各大公司伺服器往往是全國各地,哪裡便宜性價比高,就那往搬,進行大規模服務遷移(牽扯的伺服器成百上千台),這是一個非常頭痛的問題;往往時間 非常緊迫,如限1周內完成,這種情況下,運維工程師的主動性及執行力就有很高的要求了:計劃、方案、服務無縫遷移、機器搬遷上架、環境準備、安全評估、性能評估、基建、各關聯部門扯皮,7X24小緊急事故響應等。

4、其它就是一些基本素質了:頭腦要靈光、邏輯思維能力強、為人謙虛穩重、親和力、樂於助人、有大局觀。

5、最後一點,做網站運維需要有探索創新精神,通過創新型思維解決現實中的問題,因為這是一個處於幼年的職業(國外也一樣,但比國內起步早點),沒有成熟體系或方法論可以借鑒,只能靠大家自已摸索努力。

三、怎樣才算是一個合格的運維工程師

1、保證服務達到要求的線上標準,如99.9%;保證線上穩定,這是運維工程師的基本責職所在。

2、不斷的提升應用的可靠性與健壯性、性能優化、安全提升;這方面非常考驗主動性和創新思維。

3、網站各層面監控、統計的覆蓋度,軟體、硬體、運行狀態,能監控的都需要監控統計,避免監控死角、並能實時了解應用的運轉情況。

4、通過創新思維解決運維效率問題;目前各公司大部份運維主要工作還是依賴人工操作干預,需要儘可能的解放雙手。

5、運維知識的積累與沉澱、文檔的完備性,運維是一個經驗性非常強的崗位,好的經驗與陷阱都需積累下來,避免重複性范錯。

6、計劃性和執行力;工作有計劃,計劃後想法設法達到目標,不找借口。

7、自動化運維;能對日常機械化工作進行提煉、設計並開發成工具、系統,能讓系統自動完成的盡量依靠系統;讓大家更多的時間用于思考、創新思維、做自已喜歡的事情。

以上只是技術上的一些層面,當然個人意識也是很重要的。

四、運維職業的迷惘、現狀與發展前景

運維崗位不像其它崗位,如研發工程師、測試工程師等,有非常明確的職責定位及職業規劃,比較有職業認同感與成就感;而運維工作可能給人的感覺是哪方面都了解一些,但又都比上專職工程師更精通、感覺平時被關注度比較低(除非線上出現故障),慢慢的大家就會迷惘,對職業發展產生困惑,為什麼會有這種現象呢?除了職業本身特點外,主要還是因為對運維了解不深入、做得不深入導致;其實這個問題其它崗位也會出現,但我發現運維更典型,更容易出現這個問題;

針對這個問題我談一下網站運維的現狀及發展前景(也在思考中,可能不太深入全面,也請大家斧正補充)

運維現狀:

1、處於剛起步的初級階段,各大公司有此專職,但重視或重要程度不高,可替代性強;小公司更多是由其它崗位來兼顧做這一塊工作,沒有專職,也不可能做得深入。

2、技術層次比較低;主要處於技術探索、積累階段,沒有型成體系化的理念、技術。

3、體力勞動偏大;這個問題主要與第二點有關係,很多事情還是依靠人力進行,沒有完成好的提練,對於大規模集群沒有成熟的自動化管理方法,在此說明一下,大規模集群與運維工作是息息相關的如果只是百十來台機器,那就沒有運維太大的生存空間了。

4、優秀運維人才的極度缺乏;目前各大公司基本上都靠自已培養,這個現狀導致行業內運維人才的流動性非常低,非常多好的技術都局限在各大公司內部,如 google 50萬台機器科學的管理,或者國內互聯公司top 10 的一些運維經驗,這些經驗是非常有價值的東西並決定了一個公司的核心競爭力;這些問題進而導致業內先進運維技術的流通、貫通、與借簽,並最終將限制了運維發展。

5、很多優秀的運維經驗都掌握在大公司手中;這不在於公司的技術實力,而在於大公司的技術規模、海量PV、硬體規模足夠大,如baidu可怕的流量、 http://51.com海量數據~~~~這些因素決定了他們遇到的問題都是其它中/小公司還沒有遇到的,或即將遇到。但大公司可能已有很好的解決方案或系統。

發展前景:

1、從行業角度來看,隨著中國互聯網的高速發展(目前中國網民已躍升為全球第一)、網站規模越來越來大、架構越來越複雜;對專職網站運維工程師、網站架構師的要求會越來越急迫,特別是對有經驗的優秀運維人才需求量大,而且是越老越值錢;目前國內基本上都是選擇畢業生培養(限於大公司),培養成本高,而且沒有經驗人才加入會導致公司技術更新緩慢、影響公司的技術發展;當然,畢業生也有好處:白紙一張,可塑性強,比較認同並容易融入企業文化。

2、從個人角度,運維工程師技術含量及要求會越來越高,同時也是對公司應用、架構最了解最熟悉的人、越來越得到重視。

3、網站運維將成為一個融合多學科(網路、系統、開發、安全、應用架構、存儲等)的綜合性技術崗位,給大家提供一個很好的個人能力與技術廣度的發展空間。

4、運維工作的相關經驗將會變得非常重要,而且也將成為個人的核心競爭力,具備很好的各層面問題的解決能力及方案提供、全局思考能力等。

5、特長發揮和興趣的培養;由於運維崗位所接觸的知識面非常廣闊,更容易培養或發揮出個人某些方面的特長或愛好,如內核、網路、開發、資料庫等方面,可以做得非常深入精通、成為這方面的專家。

6、如果真要以後不想做運維了,轉到其它崗位也比較容易,不會有太大的局限性。當然了,你得真正用心去做。

7、技術發展方向:網站/系統架構師。

五、運維關鍵技術點解剖

1、 大規模集群管理問題

首先我們先要明確集群的概念,集群不是泛指各功能伺服器的總合,而是指為了達到某一目的或功能的伺服器、硬碟 資源的整合(機器數大於兩台),對於應用來說它就是一個整體,目前常規集群可分為:高可用性集群(HA),負載均衡集群(如lvs),分散式儲、計算存儲集群(DFS,如google gfs ,yahoo hadoop),特定應用集群(某一特定功能伺服器組合、如db、cache層等),目前互聯網行業主要基於這四種類型;對於前兩種類似,如果業務簡單、應用上post操作比較少,可以簡單的採用四層交換機 解決(如f5),達到服務高可用/負責均衡的作用,對於資源緊張的公司也有一些開源解決辦法如lvs+ha,非常靈活;對於後兩種,那就考驗公司技術實力及應用特點了,第三種DFS主要應用于海量數據應用上,如郵件、搜索等應用,特別是搜索要求就更高了,除了簡單海量存儲,還包括數據挖掘、用戶行為分析;如 google、yahoo就能保存分析近一年的用戶記錄數據,而baidu應該少於30天、soguo就更少了。。。這些對於搜索準備性、及用戶體驗是至關重要的。

接下來,我們再談談如何科學的管理集群,有以下關鍵幾點:

I、監控

主要包括故障監控和性能、流量、負載等狀態監控,這些監控關係到集群的健康運行,及潛在問題的及時發現與干預;

a、服務故障、狀態監控:主要是對伺服器自身、上層應用、關聯服務數據交互監控;例如針對前端web server,我們就可以有很多種類型的監控,包括應用埠 狀態監控,便於及時發現伺服器或應用本身是否crash、通過icmp包探測伺服器健康狀態,更上層可能還包括應用各頻道業務的監控,常用方法是採用面業特徵碼進行判斷,或對重點頁面進行簽名,以網站被黑篡改(報警、並自動恢復被篡改數據)等等,這些只是一部份,還有N多監控方式,依應用特點而定,還有一些問題需解決,如集群過大,如何高性能的進行監控也是一個現實問題。

b、其它就是集群狀態類的監控或統計,為我們合理管理調優集群提供數據參考、包括服務瓶頸、性能問題、異常流量、攻擊等問題。

II、故障管理

a、硬體故障問題;對於成百上千或上萬機器的N多集群,伺服器死機、硬體故障概率是非常大的,幾乎每時每刻都有服務硬體問題,死機、硬碟損壞、電源、內存、交換機。針對這種情況,我們在設計網站架構時需要充分考慮到這些問題,並將其視為常態;更多的依靠應用的冗餘機制來規避這種風險,但給系統工程師足夠寬裕的處理時間。(如google不是號稱同時死800台機器,服務不會受到任何影響嗎);這就是考驗運維工程師及網站架構師功能的地方了,好的設計能達到google所描述自恢復能力,如gfs,糟糕的設計那就是一台伺服器的死機可能會造成大面積服務的連鎖故障反映,直接對用戶拒絕響應。

b、應用故障問題;可能是某一bug被觸發、或某一性能閥值被超越、攻擊等情況不一而定,但重要的一點,是要有對這些問題的預防性措施,不能想當然,它不會出問題,如真出問題了,如何應對?這需要運維工程師平時做足功夫,包括應急響應速度、故障處理的科學性、備用方案的有效等。

III、自動化

自動化:簡而言之,就是將我們日常手動進行的一些工作通過工具,系統自動來完成,解放我們的雙手及枯燥的重複性勞動,例如:沒有工具前,我們安裝系統需要一台一台裸機安裝,如2000台,可能需要10人/10天,搞爛N張光碟,人力成本更大。。。而現在通過自動化工具,只需幾個簡單命令 就能搞定、還有如機器人類程序,自動完成以往每天人工干預的工作,使其自動完成、彙報結果,並具備一定的專家系統能力,能做一些簡單的是/非判斷、優化選擇等。。。這些好處非常明顯不再多說。。。應該說,自動化運維是運維工程師職業化的一個追求,利已利公,雖然這是一個異常艱巨的任務:不斷變更的業務、不規範化的應用設計、開發模式、網路架構變更、IDC變更、規範變動等因素,都可能會對現有自動化系統產生影響,所以需要模塊化、介面化、變因參數化等因此,自動化相關工作,是運維工程師的核心重點工作之一,也是價值的體現。


CSDN論壇上有一個類似的問題,我就偷一下懶搬運過來了:

1 安裝系統和軟體;

通過安裝,我們能了解Linux的目錄結構;系統和軟體的安裝方法,以及基本目錄、文件和用的操作,沒有比這些更基礎的吧。

2 對硬體的安裝和維護;

Linux是個系統,我們得把她用起來才能達到我們的目的。在生產、生活和或者娛樂中的應用,最能體現她的價值。比如我們要讓Linux支持 scsi ;raid ;usb; firewire; mouse; video card;TV card 等,無非就是應用。比如我有滑鼠,在我的Linux中卻用不起來,是不是有點浪費??

3 用戶管理;

Linux是一個多用戶,多任務的系統,要讓很多人能同時用這台機器的Linux,我們不得不經常對用戶進行增加或者刪除。有的弟兄可能會說,我的機器上只有一個顯示器一套鍵盤和滑鼠,怎麼讓更多的用戶應用呢??可能初學Linux的弟兄可能早就明白了,比如 web伺服器,是不是多用戶的呢??ftp伺服器也應該是多用戶的吧。咱們不是有遠程登錄ssh 和telnet嗎?這個多用戶可不是一台機器,幾個人同時擠在同一個鍵盤和顯示器上用不同用戶名登錄系統。

4 磁碟管理;

磁碟是有限的,就是再大的磁碟需要管理。因為我們都是玩家,再大的磁碟也感覺小。我現在有160的磁碟,我感覺還是不夠用,所以要把有限的空間都利用上,還得對磁碟有個計劃。。比如限制用戶家目錄空間;限制用戶上傳文件大小;定時查看磁碟分區的利用率 。管理員經常用 fdisk -l 或者 df -h du -h 查來看分區,目錄的大小等

5 檢測系統狀態;

有時學習Linux的弟兄總是問「為什麼我的機器開機這麼慢?」;「Linux真的是浪費內存,對不對?」等。其實這些問題都涉及到系統監測。比如 CPU、內存、網路利用率等。因為生產型系統是必須有效率的。如果一台伺服器反應遲鈍,可能最急的是管理員。管理員首先要做的可能是查看系統運行狀態。比如用top ; sar ; netstat等 ;

6 安全和備份;

對於生產型的系統,沒有比安全更重要了。如果發現安問題,可能管理員首要做的就是停止相應的服務,查看日誌,執行備份,以及打補丁。

世上沒有絕對安全的東西,硬體的可靠性沒有百分之分的,Linux系統也不是百分之百的安全。每天進行日常備份還是極為必要的。比如我們把重要的數據用備份到一個較為安全的地方,比如磁帶機,本地機,或者網路上的計算機上。

7 災難恢復;

有了備份,才能有恢復之說,如果沒有備份,那就只能是一切從頭開始了。我想大家在玩自己的機器時也有所體會吧。災難只能說是天災了,真的遇到了災難,咱們不能怨天憂人了。罵什麼或者怪自己太大意都沒有用,我們做的只能是自己承受,能恢復多少算多少吧。只要每天都用心儘力了,恢復還不是太大的問題。

8 網路管理;

Internet 是最流行的,自從我們在學校的BBS和恐龍MM聊天開始,可能我們就懂得了Internet的強大,雖然在學校可能是校園網,但我們還是感覺到了網的神秘。在電視中,我們經常看到七八十歲的老爺爺和老奶奶運指如飛,對著顯示器聊的不亦樂乎。這就是net的魅力。我們可以在LinuxSir上聊天灌水,也是net的魅力。在LinuxSir的後面呢???這就是我們所要談到的,管理和版所要做的,比如web伺服器架設,FTP 、 IRC 、防火牆的架設;網路基本操作。比如簡的設置IP,IP追蹤; whois 這個ip是從如來的,各種網路伺服器進程查看等 。

9 系統管理與日誌分析;

這個概念有些大,有的人也把系統管理看上最高點,把用戶管理;磁碟管理;網路管理;安全都納入這個關健詞之中。這也是有道理的。因為這麼多的管理都是密不可分的,離了哪個都不行。當然還有好多的零活讓我們來做,比如系統優化,內核編譯等。系統管理概念比較大,麻煩事也比較多。以後在各部份一步一步的讓初學Linux的弟兄體驗體驗,可能有的弟兄早就體驗過了,只是不知道他就是在體驗系統管理 。

日誌分析對於我們了解系統運行還是極有幫助的,否則有人攻擊我們的機器都不知道,那不麻煩了?通過分析日誌,我們能得到硬體及各種軟體的運行狀態,以及他們配合的是否正常等。系統中的每個服務都有日誌,這對於我們找出系統運行中出現故障有極大的幫助。有時發現問題比解決問題更難,我相信初學 Linux的弟兄慢慢就明白這個道理了。

10 開發:

玩Linux的最高境界,可能就是開發了。現在我還是處於對系統的學習階段,所以不能寫出什麼開發的經驗之談。一想到自己能造出一個發行版自己用用,也是件高興的事。


作為一個專門研究Linux學習的團隊,給大家看一下我們對Linux運維學習的總結,歡迎大家拍磚,下面我們團隊整理的學習路線,新手的話第一個階段和第二個階段就夠了!

————————————

運維學習階段,需要分為四個階段,linux初級入門-àlinux中級進階-àlinux高級提升,和資深方向細化。

第一階段:初級入門

初級階段需要把linux學習路線搞清楚,任何學習都是循序漸進的,所以學linux也是需要有一定的路線。

個人建議學習的路線如下:

初級入門:

1、Linux基礎知識、基本命令(起源、組成、常用命令如cp、ls、file、mkdir等常見操作命令)

2、Linux用戶及許可權基礎

3、Linux系統進程管理進階

4、linux高效文本、文件處理命令(vim、grep、sed、awk、find等命令)

5、shell腳本入門(可邊練習邊學習)

第二階段:中級進階

中級進階需要在充分了解linux原理和基礎知識之後,對上層的應用和服務進行深入學習,其中說到服務肯定涉及到網路的相關知識,是需要花時間學習的。

1、TCP/IP網路基礎(差不多CCNA、NP的知識就夠用)

2、Linux企業常用服務(如dns、http、ftp、mail、nfs等)

3、Linux企業級安全原理和防範技巧(系統性能/安全、安全威脅模型和保護方法

4、 加密/解密原理及數據安全、系統服務訪問控制及服務安全基礎

5、iptables安全策略構建

6、shell腳本進階(主要是結合一些應用,寫一些案例)

7、MySQL應用原理及管理入門(能管理和搭建一個個人博客站點)

學到這裡,掌握的基本技能,已經夠用了,已經能做一些基礎的運維工作和簡單維護了。

第三階段:高級提升

1、http服務代理緩存加速(其中主要學習varnish、nginx緩存系統,要對CDN的知識有所了解。)

2、企業級負載集群(其中主要學習nginx、haproxy、lvs要對主要知識熟練掌握,對負載均衡演算法有清晰認識,)

3、企業級高可用集群 (其中需要對keepalived,heartbeat等進行深入講解)

4、運維監控zabbix詳解(主要是zabbix、cacti、nagios等監控系統,現在用的比較多的是zabbix)

5、運維自動化學習(需要學一些開源運維自動化工具的使用如ansible、puppet、cobbler等運維自動化工具)

能掌握到這裡,基本能處理搞定很多工作了,可以去面試高級運維工程師,差不多薪資能達到12-18K左右

第四階段:資深方向進階

1、 大數據方向(需要對hadoop、storm等常見開源大數據系統需要深入了解)

2、 雲計算方向(主要是openstack這套東西,當然像一些kvm等虛擬化技術,也是需要掌握的,現在docker也比較流行)

3、 運維開發(主要是python運維開發)

4、 自動化運維(在之前自動化基礎上做深入)

5、 運維架構師(主要需要廣度,差不多5年左右以上經驗,可以擔當此職位)

另外我們整理了一個學習知識庫,你可以看一下:

【超全整理】《Linux雲計算從入門到精通》系列實戰筆記全放送 | Linux運維部落


說說我的一些對應屆生的面試經驗吧,一般按如下步驟,也不是一定完全遵循,更多時候會根據面試者隨機應變。

1 讓面試者簡單自我介紹下,大概了解其在校情況和感興趣的技術方向

2 簡單問問運維工作必須用到的一些操作系統、網路、資料庫基本概念和原理,大多數是大學教材最最最最最最基礎的內容

3 根據面試者的簡歷內容,針對性地問一些需要一定思考的問題,比如「如果項目出現xx情況,你會怎麼處理」

4 對應崗位需求的技能如linux、mysql、apache等,試探得問得面試者所了解的最深程度到哪裡;如果面試者自稱精通xx語言,我會讓他手寫一段簡單的代碼

5 用一些開放性題目測試面試者的運維技術思維的廣度和深度。
如:如果你負責運維的一個站點突然無法訪問,你會從哪些地方定位問題所在;如果你維護的web伺服器突然很卡,你怎麼定位系統瓶頸所在;如果你家的網路突然上不了網,你會怎樣定位問題所在。


6 閑聊,談談為什麼想要做運維而不做xx


要的知識太多,很多東西確實需要實際的環境才能去經歷,不過單純對於面試的話把shell,linux學好了就行了。 推薦兩本書《構建web高性能架構》和《構建高可用linux伺服器》

update:
之前推薦的兩本書最好有基礎以後再看,可以先看鳥哥的書先。


第一:運維絕對不是會什麼,會什麼就可以的,而是需要很強的責任心保證伺服器的健康和穩定,這是首要因素,也是你老闆請你來來的主要原因。
第二:你需要對新技術有較強的敏感度,懂得利用新技術去增加生產力,節約成本,減少複雜度。
第三:學會一門腳本語言,這樣的話,你可以減少複雜勞動,把時間拿來思考未來的世界。


說實話:
1.沒有實際的生產環境成長的確比較困難,因為很多情況模擬或者虛擬的環境是不會碰到的。

3.你的身體狀況不太適合運維工作,因為運維碰到項目上線,經常會弄到很晚,甚至通宵,這對你的身體是很大的挑戰。
4.如果你真的對運維很感興趣,建議去外企試試,工作強度比國內互聯網公司要低很多。
5.去面試前,把招聘公司的職位描述看明白了,提到的技術點儘可能準備充分。運維初級階段要的都是廣度,不需要你的深度。只要你符合公司要求就行了。


我的面試套路大體上跟 @Hi峰兄 的答案差不多。
主要考察面試對象的邏輯思維,溝通能力,學習能力
對於初學者和有經驗的略有不同的側重點:

對初學者,具體技能的要求不會太高,只要你能證明你確實是知道你的技能跟這個崗位匹配的,不是隨便亂投簡歷的。這個主要會問一些很基礎的問題,比如你好歹能說出一些常見的linux目錄吧,常見的linux命令吧。然後重點是看這個人能不能培養,比如思維是否清晰,溝通有條理,學習能力是否強(個個面試個個說自己自覺能力強的,要讓他舉證,在舉證過程中通過追問等觀察)。
對有經驗的人,以上的這些當然仍然重要,但可能很具體的命令啊什麼的反而不會去問了。看你做過什麼事,做這些事的過程有什麼難點和亮點,會不會總結改進提升。問你一些你可能沒接觸過的事,看你分析問題的思路和角度


1. 熟悉或精通Windows Server和Linux操作系統;


2. 熟悉DNS,FTP,MAIL Server,AD、LDAP、WEB(Apache、IIS等)、SSL等相關的服務和軟體;


3. 本的Linux 和Windows 的管理技巧及經驗,包括編寫shell、php的程序;


4. 熟悉Oracle、mysql、mssql等資料庫,具備解決資料庫問題能力;


5. 熟悉防火牆,交換機等網路設備的安裝、配置等;


6. 掌握基本的網路使用知識, 包括使用 ping 及 traceroute 等基本工具來分析網路問題


7. 有工作經驗者或相關技術認證者優先考慮;


8. 工作積極主動,認真負責,可主動承擔責任;


系統管理員,存儲管理員,Web應用程序管理員,資料庫管理員 -根據http://Indeed.com數據顯示,從2015年10月來說可以稱之為熱潮職稱的職務屈指可數。就業機會也直線上升,並且隨著越來越多的組織和部門採用Linux,Linux的管理員角色越來越重要。Linux管理現在看來是最好的必需要掌握的技能!對於那些正準備Linux管理職位面試的人,小編匯總了經常會問到的Linux的面試題,這將有助於你在面試中拔得頭籌哦。

然而,如果你已經參加了Linux面試,或有其他問題,歡迎在下面的評論標籤中提問哦。

Linux面試題

1.什麼是LVM,它的作用是什麼?
LVM代表邏輯卷管理器。它是用來在線調整文件系統。

2.什麼是Ivextend和Ivreduce的作用?
它們是用於擴展或減少邏輯卷大小的命令。

3.什麼是umask的?
umask的代表「用戶文件創建掩碼」。它被用來確定該控制文件許可數據和目錄數據的掩模的那些設置。

4.在Linux中的背景下,這是什麼POSIX代表什麼?
POSIX代表的計算機環境的可移植操作系統介面。它是用於確保UNIX版本之間的兼容性的事實上的標準。

5. Linux的是如何連接到UNIX?
該Linux使用內核類似於UNIX的,但並不需要UNIX代碼。

6.在Linux中的情況下,什麼是GPL的?
GPL代表通用公共許可證。它最初是為了保護GNU項目。

7.解釋GNU項目。
GNU是是由Richard Stallman於1983年在麻省理工學院發起的一個項目。該項目開始於使用軟體的用戶提供控制和自由的思想。作為GNU項目的一部分,用戶可以自由使用,運行,複製和共享軟體。

8.如何打開一個Linux系統成為一個代理伺服器?
使用Squid服務,你可以把一個Linux系統成為一個代理伺服器。

9.什麼是LILO在Linux中的背景?
LILO是Linux引導載入程序。它是用於Linux操作系統載入到開始操作之前的主系統存儲器。

10.定義BIOS,MBR和GRUB。
BIOS代表基本輸入/輸出系統。 MBR是主引導記錄和GRUB是GRAAND Unified Bootloader的。

11.主目錄和工作目錄之間的區別?
主目錄是默認目錄,當用戶登錄,而工作目錄是用戶的當前工作目錄。

12.在Linux中,你要如何追蹤系統事件?
要跟蹤事件,則使用了一種名為syslogd守護進程。

13.當你遇到一個可疑的IP你會怎麼做?
我們首先應該阻止通過整合tcp_wrapper的可疑IP。接下來,我們需要啟用「tcp_wrapper的= YES」在「/etc/vsftpd.conf文件」配置文件中的參數。最後一步 - 包括在「/etc/host.deny文件」的「host.deny」文件中的可疑IP。

14.描述Telnet和SSH。
Telnet和SSH兩者是用於遠程管理系統通信協議。雖然SSH需要密鑰的交換,遠程登錄的明文傳輸。因此,SSH據說是比的Telnet更安全。

15.locate和slocate命令之間的差別。
locate會搜索最新條目,而slocate則會搜索用戶最近訪問的。

16.安裝Linux需要多少個分區呢?
你至少需要兩個分區在系統上安裝Linux。

17.你如何回顧Linux的啟動信息?
通過使用dmesg命令。 dmesg的會拉出存儲在內核環緩衝區引導信息。

18.什麼是符號鏈接?
符號鏈接是Linux的「快捷鍵」。這些鏈接指向特定的程序,文件或目錄。

19.什麼是硬鏈接呢?
硬鏈接直接指向位於磁碟上的物理文件,而不是在路徑名。

20.什麼PWD?
在Linux中,它代表了列印當前工作目錄。

21.解釋在Linux中三種不同的許可權。
- 讀:讓用戶讀取文件或列出目錄許可權
- 寫:讓用戶寫入的新文件和目錄的文件的許可權
- 執行:使用戶能夠運行該文件的許可或查找目錄中的特定文件

22.#符號用來做什麼?
#用於創建新的評論。

有問題要問嗎?請提在評論部分,我們會儘快給您答覆。

歡迎訪問網站:奇趣兒 – 到天邊外去…

歡迎關注微信號:奇趣兒beta

歡迎掃描二維碼:


1、知識都是邊學邊用,即使現在學了,工作環境中一段時間不用就忘記了;知識肯定是知道越多越好,考驗自己的學習能力了。
2、語言要會一到兩樣的,shell必會吧,3P(perl,php,python)自己選擇性的學吧,C/C++也是一定程度後必學習的內容了,一個好的運維開發能力和思維肯定是不會弱的;
3、超強的忍受力,責任心,隨時準備拿著水龍頭去救火;
4、身體要健康,不然受不了的;
5、堅持,我相信會有好結果;


let"s be a pythonic linux system adminstors,make the system elegant and smart as you wish,take control of 1000 os,form scripts in web via django, angularjs,ansible and rest_framework , analyze the web"s informations via python-selenium ,make ourselves always passive. stormbrain! 其實1年時間是熟悉環境加學python或php(自己選當然前端的知識是少不了的,直接用框架不要太複雜,我們沒那個時間)開始自己做自己的項目,第二年跳個槽(主要是為了漲薪,勇於接受挑戰),就開始做自動化和監控的web平台了,不要在命令行控制了,太中古了,要讓不會linux的人也會弄,另外加班是很愚蠢的行為。這才是正確的路,2年以後你就是fullstack了,還有請學會用stackoverflow,github和google(珍愛生命,遠離百度),以後不會開發的運維是吃不開的,除非你已經是領導。


現在的運維已經是一個多功能性角色,基礎的shell,python/perl,mysql,lvs都是需要掌握的。然後可能你也需要去做一些系統類的東西。運維沒你想的那麼難,熟悉上數技能,用的很熟練,然後知道如何抓包,網路層面的一些命令,根據問題能快速的判斷可能出問題的點,找一個月薪10k的應該沒問題了,然後就是架構方面的東西了,不要只專心做自己那塊地,不然會很被動,但是架構需要一個全局的眼光,這是一種能力。 我現在也在努力學習中,加油。


最重要的是看業務需求,實際解決問題的能力,建議去北京,剛開始,薪水適當放低些。快速積累經驗,加油!!!!


專業知識樓上都說了很多,我說說職業素質吧(順序無關)。
1、學習能力
2、抗壓能力
3、細心
4、耐心
5、犯錯不可怕,可怕的是犯錯了還想法設法去掩蓋,這就不行——職業道德
6、前面也有同學說到廣度比深度更重要,運維的確追求的是廣度,但是在追求廣度的同時,也要給自己在某方面創造有深度的專長。


感覺上,運維是一個比較累的職業,我是學習Oracle的,Oracle和運維是有一拼的,晚上加班到天亮,這是常事,比如一個老師,他有時候好幾天不見得休息幾個小時,呵呵,如果身體素質不好,在學習運維等知識的時候,一定要每天保證半小時的鍛煉,小心身體受不了這種壓力


那些說保持興趣的都是些空話。


如果這是你第一份工作 你要知道你去的公司主要側重什麼 運維目前要求綜合能力較強,但腳本 集群,性能監測等常用的,到哪都需要用


推薦閱讀:

linux/unix socket編程並發時什麼時候用進程(fork),什麼時候用線程(池)?
ssh遠程登陸有時候正常,有時候顯示:ssh_exchange_identification: Connection closed by remote host,這是什麼原因?
魅族會不會考慮 Ubuntu 系統?
關於Socket API的設計?
Linux 下 socket 編程有什麼需要注意的?

TAG:Linux | 運維 | 運維工程師 | IT運維 |