<b>第2章</b>
生産環境下的shell和python腳本
接觸linux系統十多年了,shell和python腳本都已經完全融入筆者的生活中了。雖然shell腳本隻是一個簡單的解釋型語言,不受開發人員的重視,但對于系統運維工程師來說,它的作用舉足輕重,它就像我們的瑞士軍刀一樣,可以幫助我們簡化日常的工作并減少工作量。在系統維護工作中,shell腳本常常能比用c或c++語言編寫的程式更快地解決相同的問題,此外,shell腳本具有很好的可移植性,有時跨越unix與posix相容的系統,隻須略作修改即可,甚至不必修改即可使用shell腳本。不過,shell腳本畢竟是一門系統腳本語言,是以很多進階語言的特性它都不具備,比如面向對象和豐富的第三方類庫支援,不過這一點我們可以用python腳本來彌補。
<b></b>
<b>2.1 shell和python語言的簡單介紹</b>
shell是大家熟悉的一種腳本語言,這裡簡單介紹下它在日常工作中的應用。
1)配合crontab幫助我們定時執行任務,就像ms的計劃任務一樣。很多朋友向筆者反映說crontab不能做秒級的計劃任務,其實隻要寫一個shell腳本,用while..do..done循環後放入背景執行就可以實作秒級的計劃任務了。不過要記得避免出現死循環的問題。
2)開發nagios監控插件,比如我們的線上的許多業務需求都是通過shell語言開發的。
3)配合iptables可形成友善又安全的iptables腳本,還可保護主機的安全。
4)文本過濾篩選和大資料日志分析,筆者公司的許多離線資料都是通過shell配合python進行分析處理的。
5)可以寫強大的系統性能和狀态監控腳本,并配合keepalived來實作系統的高可用。
6)定時備份任務和rsync同步重要的伺服器資料,這是shell的基本功能。
7)自動化安裝系統環境,規範化操作,縮減項目實施的時間和誤差。
shell的強大和其他未挖掘出的功能需要我們在日常工作中不斷地發現和總結,不過,在感歎shell腳本管理功能強大的同時,也應該清楚shell腳本在開發功能上的不足之處,是以這裡向大家推薦python,它繼承了傳統編譯語言的強大性和通用性,同時也借鑒了簡單腳本和解釋語言的易用性,運作速度也不慢,适合于網站開發,正好可以彌補shell腳本的不足。
python是一種動态解釋型的程式設計語言。python功能強大,可支援面向對象、函數式程式設計,同時還可以在windows、linux和unix等多個作業系統上使用,是以被稱為“膠水語言”。python的簡潔性、易用性使得開發過程變得簡練,特别适用于快速應用開發。筆者也發現,python代碼在其所在公司的系統中無處不在,線上上github版本管理庫中的比重也長期占據第一、第二的位置,python的具體應用和流行原因在後續章節裡會詳細說明。