Linux系統下的定時任務Crontab

來源:互聯網
上載者:User

標籤:linux crontab   linux定時任務   crontab監控系統   crontab   

  • 什麼是Crontab
Crontab是Linux系統下的定時任務工具,相當於WIN7系統的任務計劃,能夠讓系統定時做出詳見 Cron
  • Crontab能用來做什麼
Crontab能用來添加Linux或者Unix系統中的定時任務,讓系統定時執行某個命令,比如伺服器的資料庫需要每天淩晨重啟下,不可能每天淩晨起來手動重啟。可以用Crontab添加淩晨5點重啟資料庫的定時任務,系統到每天淩晨5點就會自動重啟資料了。Crontab能做的事情還很多,比如定時發送郵件,定時檢驗庫存,定時清理日誌,定時備份資料庫,總之只要是具有周期性執行的任務基本都可以用Crontab來實現,當然前提在Linux系統內容下。
  • Crontab簡單使用
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這個檔案



  • 用Crontab+Shell實現即時監控系統
在系統網站的運營過程中,我們需要知道網站或者系統是否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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.