玩轉Linux:shell腳本快速提升的祕訣|二十個經典案例

Linux shell是很難啃的一個知識板塊。

概述

很多朋友都說Linux shell是很難啃的一個知識板塊,學的很仔細,shell相關的語法也全部掌握,但當拿到一個需求時,就是寫不出或寫不好一個完美的shell腳本。

這個現象很正常,舉個例子,在金庸的武俠小說裡,武功蓋世秘籍有很多(如,降龍十八掌),對於一個普通人來講,就算各個招式都能打的滾瓜爛熟,然而並沒有什麼卵用,因為他沒有任何的內力。

玩轉Linux:shell腳本快速提升的秘訣|二十個經典案例

而這個shell腳本其實就是一門“蓋世絕學”,但你在沒有修煉“內功”的情況下,shell知識點無論你學的多麼好,依然不能寫出好的代碼來。

這裡所謂的“內功”就是經驗。我們經常聽做開發的朋友講,沒寫夠10萬行代碼就不合格,有的企業招開發人員,也比較在意他寫過多少行代碼,一個開發人員寫過的代碼越多,說明他的經驗越豐富。

我們寫shell腳本不也是寫代碼嗎?記得,我剛做運維那年,幾乎每天都在寫shell腳本,簡單的兩三行,複雜的上百行,各種各樣的小需求,感覺僅僅一兩個月,我的shell腳本能力有了明顯的提升。

下面分享下很實用的二十個案例!

玩轉Linux:shell腳本快速提升的秘訣|二十個經典案例



20個案例分享

案例1,用shell腳本實現備份MySQL數據庫

數據庫的重要性不言而喻,所以做好數據備份是一個合格運維工程師的必備。

案例2,監控一臺Nginx服務器的狀態碼是否有502狀態碼

502在Nginx服務器上普遍存在,它極大影響了用戶體驗,一旦出現502問題就需要第一時間發現並找到問題所在。

案例3,批量添加100個用戶,並給用戶設置隨機密碼,密碼設定後還需要給它存放到一個日誌文件裡,方便查詢。

案例4,用shell腳本自動封訪問量異常的IP,並每隔一段時間把不再發起請求的IP給解封

這個功能似乎在web服務器上很實用。

案例5,用腳本監控本機的磁盤使用情況

包括使用空間以及inode使用量,磁盤空間一旦寫滿,會影響系統正常運行,有必要實時檢查磁盤使用情況,一旦達到設定閾值要第一時間通知到我們。

案例6,檢測兩臺機器同一個目錄下的文件是否有差異

在負載均衡集群中通常是多臺服務器上跑了同樣的網站,所以需要保證文件內容是一致的。

案例7,用shell腳本監控MySQL主從架構,看主從的狀態是否是正常的

主從不正常就會導致數據不同步,數據不一致將嚴重影響業務可用性。

案例8,用shell腳本編寫一個運維工具

當運行它的時候,會列出一個命令列表,用戶只需要按對應數字就可以運行列表中的命令。

案例9,用shell腳本監控本機的網卡流量

當網卡流量為0時,需要重啟網卡。

案例10,用shell腳本檢測指定域名是否快到期,以免域名到期沒有續費被回收。

案例11,給定一個人員列表,用shell腳本把這些人員分組

比如指定小組的個數,然後腳本可以自動地將這些人員隨機地分成若干個小組。

案例12,多線程備份

當備份的數據庫量很大時,如果使用傳統的循環遍歷方法會花費很長的時間,這是因為shell腳本默認是單線程的,而本腳本需要實現多線程,這樣就可以提升備份數據庫的速度。

案例13,監控CDN節點

在使用CDN的情況下,各地用戶訪問到的節點是不同的,但如果某個節點有問題時,會影響到部分用戶訪問,所以需要寫一個shell腳本來監測所有節點是否正常。

案例14,一鍵部署配置

假設一臺服務器上運行著Apache+PHP+MySQL服務,上面跑著很多網站,每增加一個網站都需要修改httpd.conf增加一個虛擬主機,並且需要在MySQL數據庫裡增加一個庫,並增加一個MySQL的用戶。如果是手動操作這些步驟還是比較繁瑣的,該shell腳本可以批量實現這些操作。

案例15,格式化輸出

在工作中會遇到各種各樣xml格式的文件,有時的需求是,需要把xml文件裡面的內容進行格式化輸出。

玩轉Linux:shell腳本快速提升的秘訣|二十個經典案例


案例16,遠程重啟每個tomcat節點

生產環境中,往往有多臺Tomcat服務器在運行,有時需要重啟Tomcat服務,如果手動執行則需要登錄每一臺機器,非常麻煩,那麼編寫一個shell腳本自動登錄遠程機器並重啟Tomcat服務就很有必要。

案例17,切割日誌

在我們的服務器上跑著各種各樣的服務,所以就有了很多日誌,日誌切割可以用shell腳本實現,但是切割完的老日誌,隨著時間的推移會越來越多,那麼如何把這些老日誌歸檔就需要寫一個腳本來按照預設規則來完成。

案例18,監控磁盤IO的使用率

假設一臺阿里雲的ECS裡運行著Nginx+PHP-FPM+MySQL服務,近期收到IO使用率很高的告警,但是這個問題是一瞬間,時間很短,每次登錄這臺機器的時候發現IO並沒有什麼問題,所以寫一個腳本監控磁盤IO的使用率,當有問題時需要近一步排查具體的問題。

案例19,定製化腳本

假設一臺Tomcat服務器上運行著多個實例,而每一個實例都有記錄日誌,當遇到問題或者有什麼特殊需求時,就需要挨個查看這些實例的日誌,為了提升效率所以需要編寫一個定製化的shell腳本。

案例20,代碼一鍵部署

雖然目前已經有了各種各樣的工具可以實現代碼部署,但在早期並沒有這樣方便好用的工具,當然一些小公司也用不著這樣的工具,而是用shell腳本來實現的。


學完這20個案例你將收穫什麼?

不管你是0基礎的Linux初學者,還是入行幾年的老鳥,閱讀完這20個案例,都會讓你從中學習到怎麼去寫shell腳本以及Linux相關的技能。對於想要快速提升自己shell腳本能力的朋友來說,這20個案例就像一劑良藥,它們會助你在運維工作中越來越順利!


前段時間都有點事情,斷更了,今天開始恢復!

後面會更多分享devops和運維DBA內容,感興趣的朋友可以關注下!

玩轉Linux:shell腳本快速提升的秘訣|二十個經典案例


分享到:


相關文章: