Nếu bạn muốn chạy cron mỗi nphút, có một vài tùy chọn khả thi tùy thuộc vào giá trị của n.
n chia 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
Ở đây, giải pháp rất đơn giản bằng cách sử dụng /ký hiệu:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
m-59/n * * * * command
Ở trên, nđại diện cho giá trị nvà mđại diện cho một giá trị nhỏ hơn nhoặc *. Điều này sẽ thực hiện lệnh vào phútm,m+n,m+2n,...
n KHÔNG chia 60
Nếu nkhông chia 60, bạn không thể làm điều này một cách sạch sẽ với cron nhưng nó có thể. Để làm điều này, bạn cần đặt một bài kiểm tra trong cron nơi bài kiểm tra kiểm tra thời gian. Điều này được thực hiện tốt nhất khi nhìn vào dấu thời gian UNIX, tổng số giây kể từ đó 1970-01-01 00:00:00 UTC. Giả sử chúng ta muốn bắt đầu chạy lệnh lần đầu tiên khi Marty McFly đến Riverdale và sau đó lặp lại lệnh này mỗi nphút sau đó.
% date -d '2015-10-21 07:28:00' +%s
1445412480
Đối với một cronjob chạy mỗi 42phút thứ hai sau `` 2015-10-21 07:28:00 '', crontab sẽ trông như thế này:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
với minutetestcmdđịnh nghĩa là
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
# return UTC time
now=$(date "+%s")
# get the amount of minutes (using integer division to avoid lag)
minutes=$(( (now - starttime) / 60 ))
# set the modulo
modulo=$2
# do the test
(( now >= starttime )) && (( minutes % modulo == 0 ))
Ghi chú: Thời gian UNIX không bị ảnh hưởng bởi giây nhuận
Ghi chú: cron không có độ chính xác dưới giây