小編給大家分享一下crontab如何實(shí)現(xiàn)每隔多少天執(zhí)行一次腳本,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)于2013年開始,先為肥東等服務(wù)建站,肥東等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為肥東企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。前言
我們大家在工作中,經(jīng)常會(huì)碰到每隔多少天/小時(shí)/分鐘執(zhí)行一次腳本,或某個(gè)命令的情況。如果是每隔多少小時(shí),多少分運(yùn)行一次程序,在crontab中可能比較好實(shí)現(xiàn)一些,下面是一些示例及crontab的格式說明:
具體示例:
# 下午6點(diǎn)到早上6點(diǎn),每隔15分鐘執(zhí)行一次腳本 0,15,30,45 18-06 * * * /bin/bash $HOME/script.sh > /dev/null 2>&1 # 每兩小時(shí),重啟一次服務(wù) * */2 * * * /etc/init.d/apache2 restart
下面是每隔多少分鐘,每隔多少小時(shí),每天/每周/每月/每年的crontab的歸納總結(jié)
每五分鐘執(zhí)行 */5 * * * *
每五小時(shí)執(zhí)行 0 */5 * * *
每天執(zhí)行 0 0 * * *
每周執(zhí)行 0 0 * * 0
每月執(zhí)行 0 0 1 * *
每年執(zhí)行 0 0 1 1 *
如果說是每個(gè)月的每隔10天來執(zhí)行某個(gè)腳本的話,同樣可以寫成:
# 每個(gè)月的1號,11號,21號,31號,執(zhí)行HTTP服務(wù)重啟 0 0 */10 * * /etc/init.d/apache2 restart
但如果是按自然天數(shù),比如說每27天,執(zhí)行一次腳本,這個(gè)要如何實(shí)現(xiàn)呢? 如果是這種情況,顯然不能通過crontab直接實(shí)現(xiàn),必須迂回實(shí)現(xiàn)。
下面是能想到的兩種方法。
【方法一】通過腳本控制時(shí)間來實(shí)現(xiàn)
思路:
1) 在腳本running.sh中設(shè)置要執(zhí)行的次數(shù),這里假如10次,每次間隔27天,script.sh為要執(zhí)行的腳本
2) 然后執(zhí)行nohup bash running.sh
&將其放置在后臺(tái)讓其自動(dòng)執(zhí)行
【方法二】通過crontab間接實(shí)現(xiàn)
思路:
1) 每天定時(shí)執(zhí)行running.sh腳本,再在腳本running.sh里面判斷,當(dāng)間隔時(shí)間滿足條件時(shí)
2) 執(zhí)行script.sh腳本,同時(shí)修改上次執(zhí)行時(shí)間,以便于下次執(zhí)行
看完了這篇文章,相信你對“crontab如何實(shí)現(xiàn)每隔多少天執(zhí)行一次腳本”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!