crontab中如何實現每隔多少天執行一次指令碼

2023-03-16 22:50:43 字數 1156 閱讀 5408

在工作中,經常會碰到每隔多少天/小時/分鐘執行一次指令碼,或某個命令的情況。如果是每隔多少小時,多少分執行一次程式,在crontab中可能比較好實現一些,下面是一些示例及crontab的格式說明:

具體示例:

# 下午6點到早上6點,每隔15分鐘執行一次指令碼

0,15,30,45 18-06 * * * /bin/bash $home/script.sh > /dev/null 2>&1

# 每兩小時,重啟一次服務

* */2 * * * /etc/init.d/apache2 restart

下面是每隔多少分鐘,每隔多少小時,每天/每週/每月/每年的crontab的歸納總結

如果說是每個月的每隔10天來執行某個指令碼的話,同樣可以寫成:

# 每個月的1號,11號,21號,31號,執行http服務重啟

0 0 */10 * * /etc/init.d/apache2 restart

但如果是按自然天數,比如說每27天,執行一次指令碼,這個要如何實現呢? 如果是這種情況,顯然不能通過crontab直接實現,必須迂迴實現。下面是能想到的兩種方法。

方法一】通過指令碼控制時間來實現

思路:

1) 在指令碼running.sh中設定要執行的次數,這裡假如10次,每次間隔27天,script.sh為要執行的指令碼

2) 然後執行nohup bash running.sh &將其放置在後臺讓其自動執行

方法二】通過crontab間接實現

思路:1) 每天定時執行running.sh指令碼,再在指令碼running.sh裡面判斷,當間隔時間滿足條件時

2) 執行script.sh指令碼,同時修改上次執行時間,以便於下次執行