Shell腳本能幫助我們很方便的去管理服務(wù)器,因?yàn)槲覀兛梢灾付ㄒ粋€(gè)任務(wù)計(jì)劃定時(shí)去執(zhí)行某一個(gè)shell腳本實(shí)現(xiàn)我們想要需求。這對(duì)于linux系統(tǒng)管理員來(lái)說(shuō)是一件非常值得自豪的事情。現(xiàn)在的139郵箱很好用,發(fā)郵件的同時(shí)還可以發(fā)一條郵件通知的短信給用戶,利用這點(diǎn),我們就可以在我們的linux服務(wù)器上部署監(jiān)控的shell腳本,比如網(wǎng)卡流量有異常了或者服務(wù)器web服務(wù)器停止了就可以發(fā)一封郵件給管理員,同時(shí)發(fā)送給管理員一個(gè)報(bào)警短信這樣可以讓我們及時(shí)的知道服務(wù)器出問(wèn)題了。
第一階段:Linux命令行和shell腳本的基本知識(shí)
第一節(jié):linux組成、深入研究Linux內(nèi)核的功能、bash提示符、man幫助手冊(cè)、Linux目錄結(jié)構(gòu)、文件管理
第二節(jié):進(jìn)程管理、磁盤管理、文件的歸檔和壓縮、Linux環(huán)境變量、命令別名
第三節(jié):Linux輸入輸出重定向、管道、變量、腳本提示信息
第四節(jié):Linux用戶管理、Linux文件權(quán)限管理、文本編輯器vim的使用 (實(shí)例:監(jiān)控系統(tǒng)中的所有用戶的操作記錄,并實(shí)時(shí)監(jiān)測(cè)系統(tǒng)中具有安全問(wèn)題的文件)
第五節(jié):文本過(guò)濾器grep、文本流式編輯器sed、報(bào)表生成器awk (實(shí)例:對(duì)大型站點(diǎn)的訪問(wèn)日志進(jìn)行處理,提取用戶行為)
第六節(jié):if-then語(yǔ)句、if-then-else語(yǔ)句、if嵌套語(yǔ)句、符合條件檢查、case結(jié)構(gòu)的使用(實(shí)例:編寫一個(gè)nginx的服務(wù)腳本)
第七節(jié):for循環(huán)、while循環(huán)、until循環(huán)、嵌套循環(huán)、文件數(shù)據(jù)的循環(huán) (實(shí)例:編寫腳本實(shí)時(shí)監(jiān)控公司內(nèi)的所有主機(jī)的在線情況、并實(shí)時(shí)監(jiān)控服務(wù)器提供的服務(wù)是否正常)
第八節(jié):常用的Linux系統(tǒng)信號(hào)、捕獲Linux系統(tǒng)信號(hào)、怎么以后臺(tái)模式運(yùn)行腳本、制定Linux的任務(wù)計(jì)劃、Linux腳本編程的函數(shù)使用(實(shí)例:每天的00:00對(duì)mySQL數(shù)據(jù)庫(kù)進(jìn)行備份)
節(jié)程第二階段:高級(jí)shell腳本編程(案例實(shí)戰(zhàn))
第九節(jié):編寫shell腳本實(shí)現(xiàn)Hadoop集群的搭建
第十節(jié):編寫shell腳本實(shí)現(xiàn)mysql高可用集群的安裝(corosync+pacemaker+mysql+nfs)
第十一節(jié):編寫shell腳本實(shí)現(xiàn)lamp架構(gòu)的lvs net模型負(fù)載均衡集群的安裝(lvs+apache+mysql+php+nfs)
第十二節(jié):編寫bash腳本 實(shí)現(xiàn)跳板機(jī),只允許用戶執(zhí)行少量允許的命令
案例需求:
1、很多大公司的服務(wù)器都不允許直接登錄,而是通過(guò)一個(gè)跳板機(jī)才能登錄過(guò)去。在跳板機(jī)中,通常只能執(zhí)行幾個(gè)少數(shù)命令(如SSH),而其他命令是不允許執(zhí)行的,那么怎樣才能實(shí)現(xiàn)這個(gè)功能呢?
2、一些小公司,由于服務(wù)器比較少,不需要什么跳板機(jī)之類的說(shuō)法,公司的開發(fā)運(yùn)維人員加起來(lái)也就那么十幾二十人,通常大家都知道root密碼,所有人都是直接root登錄上去,但是有時(shí)有人由于失誤,把什么服務(wù)弄掛了,這時(shí)是肯定抓不到人的,因?yàn)樗腥硕贾烂艽a,那么怎樣才能知道誰(shuí)都執(zhí)行過(guò)什么命令呢?或者干脆只讓他們執(zhí)行少數(shù)允許的命令呢?
第十三節(jié):編寫shell腳本監(jiān)控服務(wù)器狀態(tài)案例
案例需求:為了持續(xù)觀察服務(wù)器每天的基本運(yùn)行狀態(tài),提供方便方便易讀的集中的日志記錄數(shù)據(jù),需要結(jié)合shell腳本的任務(wù)計(jì)劃設(shè)置,定期記錄不同時(shí)間段服務(wù)器的CPU負(fù)載、內(nèi)存和交換空間、磁盤使用率等各種信息。
1、每隔15分鐘記錄一次服務(wù)器的基本運(yùn)行狀況,包括:CPU負(fù)載、內(nèi)存和交換空間、磁盤空間信息
2、近用戶等情況
3、記錄當(dāng)時(shí)的時(shí)間信息(以YYYY-mm-dd HH:MM的格式輸出所有信息追加到文件/var/log/runrec/running.log中)
4、每天晚上00:00分時(shí)備份running.log文件;進(jìn)行壓縮備份,保存到/var/log/tuntec目錄中;備份的文件名參考:runing.log-YYYYmmdd.tar.bz2;備份完成刪除當(dāng)天的記錄文件(running.log)