Crontab中的除號(slash)到底怎麼用?

2021-09-22 18:57:35 字數 1182 閱讀 4642

crontab 是linux中配置定時任務的工具,在各種配置中,我們經常會看到除號(slash)的使用,那麼這個除號到底標示什麼意思,使用中有哪些需要注意的地方呢?

在定時任務中,我們經常有這樣的需求,比如每5分鐘檢視一下日誌,我們可以這麼寫:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /command

這樣肯定是沒有問題的,但是就寫書寫起來非常複雜,簡化一下可以這麼寫:

0-55/5 * * * * /command

*/5 * * * * /command

怎麼樣,是不是非常簡單明瞭。這句就表示在0,5,10,15,20,25,30,35,40,45,50,55分鐘的時候執行命令,即每隔5分鐘執行命令。

由此我們得出除號與範圍搭配使用,表示命令執行的步長。

那麼***這種寫法,是否標示每13分鐘執行一次命令呢?

*/13 * * * * /command

這裡就是需要注意的地方。有一些步長是無法用這種方式表達的。只有能夠被整除的步長值才能表達與我們理解相一致確切的含義,對於分鐘來說只有 */2,*/3,*/4,*/5,*/6,*/10,*/12,*/15,*/30,對於小時來說則只有*/2,*/3,*/4,*/6,*/8,*/12。對於日期來說,如果使用*/5,則不能保證每5天執行一次,到月底的時候可能只執行1天、2天或3天後就停止了,這取決與大小月與平閏年。這是因為 cron 是沒有狀態的,它不能夠記錄上次執行的是什麼時間,只能根據當前的時間來判斷是否需要執行。

而對於*/13這個例子來說,表示在分鐘這個範圍內,即0-59分鐘,任務會每13分鐘執行一次。即:0,13,26,39,52,之後再間隔8分鐘,就會又重新執行。

再看下面乙個例子:

0 6 */2 * * /command 

看到這個我們如果理解成每xx執行就是,每兩天的6點鐘執行命令。在這裡*的範圍是1-31,*/2表示任務在奇數天執行,那麼在1、3、5、7、8、10、12月,月末最後一天執行後,緊接著第二天仍然後執行,那這就不是每2天執行一次。

1、what's the meaning of slash in crontab

2、man 5 crontab

3、wiki cron

4、stackoverflow cron syntax query

5、what does the slash in crontab actually do?

python程式設計中除號的使用

print中除號的應用 設定幾個變數 設定幾個變數 c 佳學基因 j 基因 s 是乙個 m 從事解碼業務 除號的使用。在python語言中直接用 號對字元進行運算,是不行的。print c s m 2 執行結果如下 c c users dee pycharmprojects learn venv s...

linux中crontab的使用

1 at 一次性定時任務,僅執行一次就結束排程的命令 2 crontab 週期性定時任務 1 crontab的工作 許可權 可以通過 etc cron.allow和 etc cron.deny進行使用者限制,同時cron.allow比cron.deny的優先順序高,會先查詢cron.allow 存在...

crontab中的ntpdate 時間同步不生效

在crontab中新增了 時間同步任務 10 1 ntpdate u 10.11.0.35 hwclock w 但是時間還是一直不正確 開始檢查 less var log cron may 2512 25 01 localhost crond 29708 root cmd ntpdate u 10....