หากคุณต้องการเรียกใช้ cron ทุกn
นาทีมีตัวเลือกที่เป็นไปได้สองสามตัวเลือกขึ้นอยู่กับค่าของn
.
n
หาร 60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)
ที่นี่วิธีแก้ปัญหานั้นตรงไปตรงมาโดยใช้/
สัญกรณ์:
m-59/n * * * * command
ในข้างต้นn
แสดงให้เห็นถึงความคุ้มค่าn
และm
แสดงให้เห็นถึงมูลค่าที่มีขนาดเล็กกว่าหรือn
*
สิ่งนี้จะดำเนินการคำสั่งในนาทีm,m+n,m+2n,...
n
ไม่หาร 60
หากn
ไม่หาร 60 คุณไม่สามารถทำสิ่งนี้ได้อย่างหมดจดด้วย cron แต่เป็นไปได้ ในการทำเช่นนี้คุณต้องทำการทดสอบใน cron ซึ่งการทดสอบจะตรวจสอบเวลา วิธีนี้ทำได้ดีที่สุดเมื่อดูการประทับเวลา UNIX ซึ่งเป็นจำนวนวินาทีทั้งหมดตั้งแต่1970-01-01 00:00:00 UTC
นั้นมา สมมติว่าเราต้องการเริ่มเรียกใช้คำสั่งในครั้งแรกเมื่อ Marty McFly มาถึง Riverdale แล้วทำซ้ำทุก ๆn
นาทีต่อมา
% date -d '2015-10-21 07:28:00' +%s
1445412480
เพื่อให้ cronjob ทำงานทุก ๆ42
นาทีหลังจาก `` 2015-10-21 07:28:00 '' crontab จะมีลักษณะดังนี้:
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
โดยminutetestcmd
กำหนดเป็น
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
now=$(date "+%s")
minutes=$(( (now - starttime) / 60 ))
modulo=$2
(( now >= starttime )) && (( minutes % modulo == 0 ))
หมายเหตุ:เวลา UNIX ไม่ได้รับอิทธิพลจากวินาทีอธิกสุรทิน
หมายเหตุ: cron
ไม่มีความแม่นยำย่อยวินาที