初級篇:
linux運維人員經常使用工具拓撲詳見:html
1.rsync工具java
不少地方常常會用到rsync工具,實施幾臺服務器的同步效果。咱們公司就是使用這個工具完成服務器的youxi的服務端和客戶端同步,有幾個文章例子:python
rsync 強化技術(手動修改端口開啓防火牆的狀況下)而且經過腳本只同步須要的服務器
inotify+rsync+mutt+msmtp 實現linux文件或者目錄自動更新而且實現發郵件給管理員
2.網絡服務mysql
服務有不少種,每間公司都會用到不一樣的,但基礎的服務確定要掌握,如FTP、DNS、SAMBA、郵件, 這幾個大概學一下就行,LAMP和LNMP是必需要熟練,我所指的不是光會搭建,而是要很熟悉裏面的至關配置才行,由於公司最關鍵的絕對是Web服務器,因此Nginx和Apache要熟悉,特別是Nginx必定要很熟悉才行,至少有些公司還會用Tomcat,這個也最好學一下。linux
其實網絡服務方面不用太擔憂,通常公司的環境都已經搭建好,就算有新服務器或讓你整改,公司會有相應的文檔讓你參照來弄,不會讓你亂來的,但至少相關的配置必定要學熟,並且確定是編譯安裝多,那些模塊要熟悉一下他的做用,特別是PHP那些模塊。ios
這面2點只是基礎,也是必要條件,不能說是工具,如下才是真正的要掌握的工具。nginx
Samba文件共享服務(共享腳本 讓你工做更輕鬆)
Linux web服務安裝apache 思路 (源碼編譯,本身定義服務)
FTP(持虛擬用戶,而且每一個虛擬用戶能夠具備獨立的屬性配置)
linux 下構建DHCP服務器
3.腳本語言web
Shell腳本和另外一個腳本語言,Shell是運維人員必須具有的,不懂這個連入職都不行,至少也要寫出一些系統管理腳本,最簡單也得寫個監控CPU,內存比率的腳本吧,這是最最最基本了,別覺得會寫那些猜數字和計算什麼數的,這些沒什麼做用,只做學習意義,寫系統腳本纔是最有意義,而另外一個腳本語言是可選的,通常是3P,即Python、Perl和PHP,PHP就不須要考慮了,除非你要作開發,我我的建議學Python會比較好,難實現自動化運維,Perl是文本處理很強大,反正這兩個學一個就好了。面試
Shell(一) 入門到複雜 本身作的各類腳本實例與解釋
Shell(二)入門到複雜 腳本實例(計算器)
4.sed和awk工具正則表達式
這兩個工具必需要掌握,同時還要掌握正則表達式,這個就痛苦了,正則是最難學的表達式,但結合到sed和awk中會很強大,在處理文本內容和過濾Web內容時十分有用,不過在學Shell的同時通常會常常結合用到的,因此學第3點就會順便學第4點。
sed 簡明教程https://coolshell.cn/articles/9104.html
5.文本處理命令
sort 、tr、cut、paste、uniq、tee等必學,也是結合第3點腳本語言時一併學習的。
6.數據庫
首選MySQL,別問我爲何不學SQL Server和Oracle,由於Linux用得最多絕對是MySQL,增刪改查必學,特別要學熟查,其它方面可能不太須要,由於運維人員使用最多仍是查,哪些優化和開發語句不會讓你弄的。
MySQL(手動編譯詳細思路,以及增刪改查、受權、備份還原)
7.防火牆
防火牆也算是個難點,說難不難,說易不易,最重要弄懂規則,若是學過CCNA的朋友可能會比較好學,由於iptables也有NAT表,原理是同樣的,而FILTER表用得最多,反正不學就確定不合格。
防火牆(一)主機型防火牆
防火牆(二)SNAT和DNAT
8.監控工具
我我的建議,最好學這3個:Cacti,Nagios,Zabbix,企業用得最多應該是Nagios和 Zabbix,反正都學吧,但Nagios會有點難,由於會涉及到用腳本寫自動監控,那個地方很難。
CentOS 6.2+Nginx+Nagios,手機短信和QQ郵箱提醒
服務器集中檢測Cacti
9.集羣和熱備
這個很重要,確定要懂的,但到了公司就不會讓你去弄,由於新手基本不讓你碰,集羣工具備不少,最好學是LVS,這是必學,最好也學Nginx集羣、反向代理,還有熱備,這個就更多工具能實現了,像我公司是本身開發熱備工具的。MySQL熱備也要學,就是主從複製,這個要學懂整個流程一點也不容易,只照着作根本沒意思。
MySQL主從同步,雙主同步,若是服務器意外掛機,不一樣步怎麼辦
MySQL高性能壓力測試(總結了很久)
Nginx 緩存配置及報錯解決
10.數據備份
工具備不少,但至少要把RAID的原理弄懂,特別是企業最經常使用的1+0或0+1,本身作實驗也要弄出來,備份工具備不少,如tar、dump,最好多瞭解一下。
學會以上10點,應該能夠入門了,有些技術會比較難學,例如Apache和Nginx中還有些很重要的技術,如系統調優、服務優化、程序優化,這些在沒接觸工做前很難學習到的,因此先把這10點學了吧,估計要學熟至少3個月不止,腳本部分會交很吃力了,我建議是先學熟shell,等工做後再學另外一門腳本語言,這樣會比較好。
以上就是踏入linux運維工程師須要掌握的工具,還有不少工具要掌握的,但在學習環境中是很難學到,最後我再提醒一下,這裏所指的工具至關於技能,而不是像Windows或Ubuntu的圖形化工具,還有學linux就別裝圖形界面,這樣虛擬機就不用吃太多內存,並且絕對不建議在真機上裝Linux,根本達不到學習效果。
中級篇
這部分來自我本身的面試經歷和麪試別人的經歷總結。先附上運維思路拓撲圖:
有些人認爲,其實運維就是部署某個軟件,設置些基礎功能,就算會運維了。
舉個例子:安裝LAMP,LNMP,就感受部署方法我都掌握了。其實網上大多數都有一鍵安裝腳本啥的根本沒有啥技術含量,在面試官眼裏,這些都不是你的亮點。基本到了公司通常環境架構都是部署好的,不多須要你去變更環境架構。就算你安裝好 LNMP 架構你熟悉裏面的原理嗎?熟悉 Nginx 優化嗎?熟悉 MySQL 優化嗎?
再舉個例子:我面試遇到的問題,面試官問你既然熟悉 LNMP 架構,那麼 Nginx 反向代理的做用。
你應該不是說出懂這個軟件和配置,你儘量的說怎麼優化,怎麼深刻提升網站性能。
使用反向代理能夠理解爲7層應用層的負載均衡,使用負載均衡以後能夠很是便捷的橫向擴展服務器集羣,實現集羣總體併發能力、抗壓能力的提升。
一般反向代理服務器會帶有本地 Cache 功能,經過靜態資源的 Cache,有效的減小後端服務器所承載的壓力,從而提升性能。
下面說說運維在工做中須要掌握的核心技術。注意,這是在工做中掌握的,在學習中很難掌握。
1.第一條最主要的排錯
分析部分程序不能運行或沒有按預想結果運行的緣由,對程序運行跟蹤,查看系統調用的過程。
較深刻的系統瓶頸點分析。
查看剩餘內存:
ree -m #-/+ buffers/cache: 6458 1649 #6458M爲真實使用內存 1649M爲真實剩餘內存(剩餘內存+緩存+緩衝器) #linux會利用全部的剩餘內存做爲緩存,因此要保證linux運行速度,就須要保證內存的緩存大小
系統信息:
硬件信息:
使用分析系統分析web日誌(如逆火軟件)
分析系統性能瓶頸點(IO/Memory/CPU,經常使用工具,top命令中shift組合鍵的特殊用Sar/vmstat/iostat/ipcs)
日誌管理經常使用命令:
2.優化
優化能夠說是運維最吃香的技能,基本會優化的運維廣泛工資很高,並且優化是要承擔風險的,並非網上搜個文章改一下配置文件或者參數就叫優化了,這樣很容易形成宕機。
優化是根據實際的現場環境硬件各個參數進行部分優化,提升軟件性能和網站性能。這個我只能講半知半解,當時優化MySQL和Tomcat參數也是根據網上文章和官網文檔查找參數在虛擬機上測試而後查看性能。
成本優化,性能優化。這裏我給出 Tomcat 優化JVM參數(作過相應測試才放到現場環境的):(記住無監控不調優)
-標準參數,全部jvm都應該支持
-X 非標,每一個jvm實現都不一樣
-XX 不穩定參數,下一版本可能會取消
serial collector 單線程 序列化
parallel collector 多線程
啓動 jvisualvm.exe 監控 dump 內存溢出
-Xms:初始堆大小
-Xmx:最大堆大小
-Xss:線程棧大小
-XX:NewSize=n:設置年輕代大小
-XX:NewRatio=n:設置年輕代和年老代的比值,如3, 標示年輕代:年老代比值1:3,年輕代佔整個年輕代年老代和的1/4
-XX:SurvivorRatio=n:年輕代中的eden區與2個Survivor區的比值。
-XX:MaxPermSize=n:設置持久代大小
收集器設置
-XX:+UseSerialGC:設置串行收集器
-XX:+UseParallelGC:設置並行收集器
-XX:+UseConcMarkSweepGC:設置併發收集器
回收統計信息
-XX:+PrintGC
-XX:+PrintGCDetails
-Xloggc:filename
Tocmat 優化,確認有幾個JVM虛擬機
set JAVA_OPTS=
-Xms4g
-Xmx4g
-Xss512k
-XX:+AggressiveOpts 進攻型的優化選項,全部優化項都加上
-XX:+UseBiasedLocking 優化鎖,基本都要選上,偏執鎖
-XX:permSize=64m 原始區大小,最大300m 類多就設置大一點
-XX:MaxPermSize=300m
-XX:+DisableExplicitGC //System.gc() 不顯示調用gc
-XX:+UseConcMarkSweepGC 使用cms縮短相應時間,併發收集,低停頓
-XX:+UseParNewGC 並行收集新生代的垃圾
-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC的狀況下,儘可能減小mark的時間
-XX:+UseCMSCompactAtFullCollection 使用併發收集器時,開啓對年老代的壓縮,使碎片減小
-XX:LargePageSizelnBytes=128m 內存分頁大小對性能的提高
-XX:+UseFastAccessorMethods get/set方法轉成本地代碼
-Djava awt headless=true 修復linux下tomcat處理圖標時可能產生的bug
內存調優:
Tomcat 前任何參數沒參加大概每秒605,調優後大概每秒435,接近3倍的結果。
3.開發技能
優選 Shell 和 Python,如今 Shell 沒法知足你的需求或者效率很低,那麼選擇自動化 Python 是最好的選擇。如今廣泛招聘需求要求,會寫 Shell 或者 Python、Perl 腳本,我的選擇仍是選 Python。
Python 這門語言上手比較快,容易理解。在服務器管理工具上很是豐富,配置管理(Saltstack) 批量執行(Fabric、Saltstack) 監控(Zenoss、Nagios 插件) 虛擬化管理( python-libvirt) 進程管理 (Supervisor) 雲計算(OpenStack) …… 還有大部分系統 C 庫都有 Python 綁定。
對於流程肯定的事情,最終必定是歸入系統管理的體系,寫成程序,成爲系統的一部分。而不是沒法複用遊離與總體的各類腳本。
隨着雲計算時代的來臨,中小型公司不須要運維了,大型公司沒有工程開發能力的運維,是沒有競爭力的。
最重要的學好 Python 能夠漲工資,能夠漲工資,能夠漲工資。(重要的事情說三遍~)目前本人也是在學 Python,正在把之前 Shell 腳本的實例轉換成 Python 腳本。
意識篇
1.安全意識
運維人員的權限很大,因此必定要保證賬號/私鑰的安全。
最好使用加密工具存儲。好比Truecrypt、lpassword。
基於本地存儲。切勿用網盤,也不建議用lastpass等
SSH私鑰添加密碼
2.磨刀意識
關於任何操做配置,最好先搞明白操做或配置的原理,而後再去操做。應一句話叫作「磨刀不誤砍柴功」,並且對於相似的操做能夠觸類旁通。
3.計劃意識
複雜的變動操做好比多臺主機以及牽涉到san存儲,最好先做 操做計劃,寫計劃文檔,詳細緻每條命令,而後請高手幫忙審覈。 這樣能最大程度使整個操做過程安全。若是是重要的客戶業務系統,操做最好有回退方案,而一旦變動失敗,客戶能夠在短期內將業務回退。
4.記錄分享意識
遇到本身認爲較特殊的案例時,記得要寫案例過程及分析的文檔。也方便本身之後翻看,或者和其餘兄弟分享,做知識的傳播以便於你們之後都能少走彎路。
5.監控意識
運維來講,監控是很是重要的,監控是發現系統各類異常的眼睛,因此運維應該和監控緊密配合。
6.業務意識
儘可能瞭解維護的各主機上業務類型,以及各主機業務之間的關聯性。由於任何維護工做都是爲主機能提供業務服務的,當某業務中斷,能最快的知道與此業務相關的主機羣,從而縮小故障排查範圍,最快定位故障。並非你技術很牛,學的技術不少很熟,就不表明你不須要運維意識,其實領導很看重運維意識的,例若有沒有作好備份、權限分配問題、平臺測試狀況、故障響應時間等,這些都是意識,而不是你學了不少技術自認大牛了,平臺發現故障你又沒什麼大不子,覺得很簡單的問題喜歡處理就處理,不須要向其它部門反饋等,領導不是看你的技術如何,而是看你的運維意識如何,你沒運維意識,技術再牛也沒用,只會讓其它部門的人跟你不協調。要知道作IT這行是苦逼的,須要無盡的學習,不學習只會被淘汰,不想被年輕的淘汰,就只能不斷增值本身,否則不是你工資沒法提高,而是你沒法再從事這行。這個世界,在悄悄懲罰不改變的人……
面試篇
一、什麼是運維?什麼是youxi運維?
二、在工做中,運維人員常常須要跟運營人員打交道,請問運營人員是作什麼工做的?
三、如今給你三百臺服務器,你怎麼對他們進行管理?
四、簡述raid0 raid1 raid5 三種工做模式的工做原理及特色。
五、LVS、Nginx、HAproxy有什麼區別?工做中你怎麼選擇?
六、Squid、Varinsh和Nginx有什麼區別,工做中你怎麼選擇?
七、Tomcat和Resin有什麼區別,工做中你怎麼選擇?
八、什麼是中間件?什麼是jdk?
九、講述一下Tomcat800五、800九、8080三個端口的含義?
十、什麼叫CDN?
十一、什麼叫網站灰度發佈?
十二、簡述DNS進行域名解析的過程?
1三、RabbitMQ是什麼東西?
1四、講一下Keepalived的工做原理?
1五、講述一下LVS三種模式的工做過程?
1六、mysql的innodb如何定位鎖問題,mysql如何減小主從複製延遲?
1七、如何重置mysql root密碼?
1八、lvs/nginx/haproxy優缺點
1九、mysql數據備份工具
20、keepalived的工做原理和如何作到健康檢查
2一、統計ip訪問狀況,要求分析nginx訪問日誌,找出訪問頁面數量在前十位的ip
2二、使用tcpdump監聽主機爲192.168.1.1,tcp端口爲80的數據,同時將輸出結果保存輸出到tcpdump.log
2三、如何將本地80 端口的請求轉發到8080 端口,當前主機IP 爲192.168.2.1
2四、簡述raid0 raid1 raid5 三種工做模式的工做原理及特色
2五、你對如今運維工程師的理解和以及對其工做的認識
2六、實時抓取並顯示當前系統中tcp 80端口的網絡數據信息,請寫出完整操做命令
2七、Linux系統中病毒怎麼解決?
2八、發現一個病毒文件你刪了他又自動建立怎麼解決?
2九、說說TCP/IP的七層模型
30、你經常使用的Nginx模塊,用來作什麼
3一、請列出你瞭解的web服務器負載架構
3二、查看http的併發請求數與其TCP鏈接狀態
3三、用tcpdump嗅探80端口的訪問看看誰最高
3四、寫一個腳本,實現判斷192.168.1.0/24網絡裏,當前在線的IP有哪些,能ping通則認爲在線
3五、已知 apache 服務的訪問日誌按天記錄在服務器本地目錄/app/logs 下,因爲磁盤空間緊張
如今要求只能保留最近 7 天的訪問日誌!請問如何解決? 請給出解決辦法或配置或處理命令
建立文件腳本:
3六、如何優化 Linux系統(能夠不說太具體)?
3七、請執行命令取出 linux 中 eth0 的 IP 地址(請用 cut,有能力者也可分別用 awk,sed 命令答)
3八、請寫出下面 linux SecureCRT 命令行快捷鍵命令的功能?
3九、天天晚上 12 點,打包站點目錄/var/www/html 備份到/data 目錄下(最好每次備份按時間生成不一樣的備份包)
40.常見的Linux發行版本都有什麼?你最擅長哪個?它的官網網站是什麼?說明你擅長哪一塊?
41.Linux開機啓動流程詳細步驟是什麼?系統安裝完,忘記密碼如何破解?
42.企業中Linux服務器系統分區標準是什麼?(硬盤爲300G,內存16G)
43.某一天忽然發現Linux系統文件只讀,該怎麼辦呢?完整操做步驟。
44.安裝一臺系統使用DVD光盤安裝,如何安裝50臺Linux系統如何安裝呢?思考一下。
45.用虛擬機安裝了一臺Linux系統,忽然想克隆一臺服務器,克隆後發現沒法上網,如何解決?
46.Linux網卡配置文件路徑是什麼?要使服務器上外網,必須知足的條件有哪些?須要配置什麼?
47.通常可使用什麼軟件遠程linux服務器?經過什麼上傳文件和下載文件?
48./mnt目錄主要用於什麼?/root目錄跟root用戶有什麼關係?/根目錄與/boot目錄有什麼聯繫?
49.某一天誤操做,執行了rm-rf*,會有哪些狀況發生?請舉例。
50.在/tmp/目錄下建立test.txt文件,內容爲:Hello,World!,用一個命令寫出來。
51.給test.txt文件除全部者以外增長執行權限,最終以數字寫出文件的權限。
52.用vi命令編輯test.txt,如何跳轉到末行,首行,行首、行末,如何在光標行下一行插入
如何複製5行,刪除10行,查找jingfeng的字符、把jingfeng替換爲jfedu.net
53.查找linux系統下以txt結尾,30天沒有修改的文件大小大於20K同時具備執行權限的文件並備份到/data/backup/目錄下。
54.當前test.txt所屬的用戶爲root,組爲abc,請將test.txt使擁有者爲abc,組爲root,寫出命令。
55.如何修改Linux啓動級別爲字符模式並永久生效,如何臨時、永久關閉selinux及防火牆,請分別寫出操做方法。
56.每次開機在/tmp目錄下建立一個當天的日期文件夾(提示:當前日期表示的方法爲:date+%Y%m%d
)
57.如何查看文件內容,命令有哪些?查看文件第1行到3行,查看文件最後一行。
58.查看linux服務器IP的命令,同時只顯示包含ip所在的行打印出來。
59.將普通用戶test加入root組的命令是?
因爲篇幅影響閱讀質量,須要答案的小夥伴能夠添加微信13272413561備註「答案」免費獲取哦!!!