標籤:linux crontab linux定時任務 crontab監控系統 crontab
Crontab是Linux系統下的定時任務工具,相當於WIN7系統的任務計劃,能夠讓系統定時做出詳見 Cron
Crontab能用來添加Linux或者Unix系統中的定時任務,讓系統定時執行某個命令,比如伺服器的資料庫需要每天淩晨重啟下,不可能每天淩晨起來手動重啟。可以用Crontab添加淩晨5點重啟資料庫的定時任務,系統到每天淩晨5點就會自動重啟資料了。Crontab能做的事情還很多,比如定時發送郵件,定時檢驗庫存,定時清理日誌,定時備份資料庫,總之只要是具有周期性執行的任務基本都可以用Crontab來實現,當然前提在Linux系統內容下。
1.常用基本命令crontab -l 列出當前登入使用者所有定時任務crontab -l -u XXX 列出XXX使用者的所有定時任務,如有沒有會提示 no crontab for XXXcrontab -e 編輯目前使用者的定時任務crontab -r 刪除目前使用者的定時任務2.定時任務的時間設定* * * * * 每分鐘執行*/1 * * * * 每分鐘執行0 5 * * * 每天五點執行0-59/2 * * * * 每隔兩分鐘執行,且是偶數分鐘執行,比如2,4,61-58/2 * * * * 每隔兩分鐘執行,且是奇數分鐘執行,比如3,5,7 0 0 1,5,10 * * 每個月1號,5號,10號執行 0 0 1-5 * * 每個月 1到5號執行3.Demo(1)執行命令: crontab -e
(2)輸入 * * * * * date >> /tmp/date.log
(3)儲存後,系統會提示crontab: installing new crontab
(4)執行命令: tail -f /tmp/date.log 就能看到系統每分鐘都會列印出時間到date.log這個檔案
在系統網站的運營過程中,我們需要知道網站或者系統是否24小時在正常運行,一般系統正常運作需要兩個東西在支援,一個是web伺服器,一個是資料庫。那麼我們就需要即時的監控web伺服器和資料庫是否在運行。下面我們以apache伺服器和mysql資料庫作為例子來分析如何?需求。1.監控mysql資料庫是否正常運行正常情況我們登入一台Linux伺服器後,想要查看當前伺服器Mysql是否在運行,我們會執行 pgrep mysql查看,如果有列印出進程ID說明mysql是正常在啟動並執行。根據這個原理可以寫出如下SHELL指令碼:
#!/bin/bashcheck=`pgrep mysql`if [ -n "$check" ]; then exitelse date=$(date +"%Y-%m-%d %H:%M:%S") /etc/init.d/mysqld restart echo 'mysqld exception at' $date 'and restart 'fi
判斷是否存在進程 mysql,存在則正常不存在則說明mysql可能掛了,可以執行重啟操作,當然你也可以直接發送郵件到指定郵箱。2.監控apache是否正常運行根據監控mysql的經驗,我們可以這樣寫SHELL指令碼:#!/bin/bashcheck=`pgrep httpd`if [ -n "$check" ]; then exitelse date=$(date +"%Y-%m-%d %H:%M:%S") /etc/init.d/httpd restart echo ‘apache exception at‘ $date ‘and restart ‘fi還有種可能是apache可能不在同一台伺服器上,則可以用下面的SHELL指令碼實現:
if curl -m 10 -G localhost:81 > /dev/null 2>&1thenecho 'server is running'else if ping -c 1 localhost > /dev/null 2>&1 then echo 'server exception but ip ping success' fifi
原理類似於直接存取URL判斷是否有響應,分別判斷apache連接埠和伺服器IP。如果系統訪問無響應有可能是apache服務掛了,還有一種可能是伺服器掛了,所以用PING 的方式來判斷伺服器是否正常。最後一步,就是把以上兩個指令碼添加到定時任務中去執行:crontab -e* * * * * sh /alidata/test/mysqlListener.sh >> /var/log/mysqlL.log
* * * * * sh /alidata/test/httpdListener.sh >> /var/log/httpdL.log這樣就每分鐘都會去判斷apache和mysql是否正常運行,基本達到即時監控,如果加上郵件通知的話,只要系統出現故障,一分鐘之內就能收到郵件通知。
Linux系統下的定時任務Crontab