本節書摘來自華章出版社《建構高可用linux伺服器 第3版》一 書中的第3章,第3.1節,作者:餘洪春 ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
雖然shell腳本隻是一個簡單的解釋型語言,不會受到開發人員的重視,但對于我們系統管理者來說它有着舉足輕重的作用,它可以幫助我們簡化日常的工作并減少工作量,成為系統管理者的瑞士軍刀。我們在系統維護工作中用shell腳本常常能比用c語言編寫的程式更快地解決相同的問題。此外,shell腳本具有很好的可移植性,有時跨越unix與posix相容的系統,僅需略作修改,甚至不必修改即可使用shell腳本。
在日常工作中shell腳本能幫助我們做什麼呢?
1)配合crontab幫助我們定時執行任務,就像ms的計劃任務一樣。很多朋友向我反映說crontab不能做秒級的計劃任務,其實隻要寫一個shell腳本,用while..do..done循環後放入背景執行就可以實作秒級的計劃任務。不過,為了避免造成死循環,記得要加入sleep 5的代碼,這樣程式會在執行完畢後休息5秒,也可以說每5秒鐘就執行了一次程式。
2)配合php等開發程式進行日常的開發維護工作,比如我們的svn釋出程式就是通過php+shell來實作的。
3)它可以成為系統管理者的工具箱,用來解決日常linux/unix環境中遇到的相關問題,例如文本過濾篩選、系統日志分析等。
4)可以寫強大的系統性能和狀态監控腳本,并配合keepalived來實作系統的高可用。
5)備份和rsync同步重要伺服器資料,這是shell的基本功能。
6)自動化安裝系統環境,規範化操作,縮減項目實施的時間和誤差。
shell的強大和其他未挖掘功能需要我們在日常工作中發現和總結。下面我以線上環境為平台,跟大家分享一下線上伺服器的shell腳本。
另外,在跟大家分享shell腳本之前,我先總結一下在linux系統下的編輯工具vim及流編輯器sed的使用方式,還有bash指令行快捷鍵方式及正規表達式,我們可以用它們來編輯shell腳本。結合這些我們可以寫出強大的shell腳本,如果熟練地掌握和運用它們,我們的工作效率會得到很大提高。本章内容适合有shell基礎的計算機專業學生、php或java開發人員及linux/unix系統工程師學習。另外,在這裡我要感謝所有給我提供生産環境下腳本的朋友們,感謝他們提供了生産環境下的大量實用shell腳本,進而令我們的工作變得如此輕松而有效率。