ไวยากรณ์ของวัน Crontab ของสัปดาห์


204

ฟิลด์วันของสัปดาห์ใน crontab ทำงานจาก0 - 6หรือ1 -7?

ฉันเห็นข้อมูลที่ขัดแย้งกันเกี่ยวกับเรื่องนี้ วิกิพีเดียระบุ0-6และเว็บไซต์อื่น ๆ 1-7ที่ฉันได้เห็นเป็น

นอกจากนี้สิ่งที่จะเป็นความหมายหรือใช้0หรือ7ไม่ถูกต้อง? คือ cron ยังคงทำงานอยู่หรือไม่

คำตอบ:


373

0และ7ทั้งสองยืนสำหรับวันอาทิตย์คุณสามารถใช้สิ่งที่คุณต้องการดังนั้นการเขียน 0-6 หรือ 1-7 มีผลเหมือนกัน

นอกจากนี้ตามที่แนะนำโดย @Henrik ก็เป็นไปได้ที่จะเปลี่ยนตัวเลขตามชื่อย่อของวันเช่นMON, THUฯลฯ :

0 - Sun      Sunday
1 - Mon      Monday
2 - Tue      Tuesday
3 - Wed      Wednesday
4 - Thu      Thursday
5 - Fri      Friday
6 - Sat      Saturday
7 - Sun      Sunday

กราฟิก:

 ┌────────── minute (0 - 59)
 │ ┌──────── hour (0 - 23)
 │ │ ┌────── day of month (1 - 31)
 │ │ │ ┌──── month (1 - 12)
 │ │ │ │ ┌── day of week (0 - 6 => Sunday - Saturday, or
 │ │ │ │ │                1 - 7 => Monday - Sunday)
 ↓ ↓ ↓ ↓ ↓
 * * * * * command to be executed

ในที่สุดหากคุณต้องการระบุวันต่อวันคุณสามารถแยกวันด้วยเครื่องหมายจุลภาคตัวอย่างเช่นSUN,MON,THUจะ exectute คำสั่งเฉพาะในวันอาทิตย์วันจันทร์ในวันพฤหัสบดี

คุณสามารถอ่านรายละเอียดเพิ่มเติมในบทความวิกิพีเดียเกี่ยวกับ Cron


4
ตกลงนั่นคือสิ่งที่ฉันไม่ได้รู้ว่าวันอาทิตย์สามารถเป็น 0 หรือ 7 ขอบคุณ
Marty Wallace

15
ระวังว่าคุณไม่สามารถทำได้: Sat-Sunเพียง6-7หรือSat,Sun
pkowalczyk

คุณช่วยยืนยันได้ไหมว่าตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่? คุณเปลี่ยนไม่กี่ครั้งในหมู่SUN, Sun, Sundayในการตอบสนองของคุณ
MichaelChirico

1
@MichaelChirico โอ้จุดดี การตรวจสอบบทความของ Wikipedia เกี่ยวกับ Cron ที่ฉันอ่านตัวย่อเดือนและวันธรรมดาไม่ได้ตรงตามตัวพิมพ์ใหญ่ -เล็ก
fedorqui 'ดังนั้นหยุดทำร้าย'

104
    :-) Sunday    |    0  ->  Sun
                  |  
        Monday    |    1  ->  Mon
       Tuesday    |    2  ->  Tue
     Wednesday    |    3  ->  Wed
      Thursday    |    4  ->  Thu
        Friday    |    5  ->  Fri
      Saturday    |    6  ->  Sat
                  |  
    :-) Sunday    |    7  ->  Sun

ดังที่คุณเห็นด้านบนและตามที่กล่าวไว้ก่อนหน้านี้ตัวเลข0และ7ได้รับมอบหมายทั้งสองในวันอาทิตย์ นอกจากนี้ยังมีรายการย่อภาษาอังกฤษของสัปดาห์ซึ่งสามารถใช้ใน crontab

ตัวอย่างการใช้ตัวเลขหรือตัวย่อ

15 09 * * 5,6,0             command
15 09 * * 5,6,7             command
15 09 * * 5-7               command
15 09 * * Fri,Sat,Sun       command

ตัวอย่างสี่ตัวอย่างทำสิ่งเดียวกันและดำเนินการคำสั่งทุกวันศุกร์เสาร์และอาทิตย์เวลา 9.15 น.

ในรายละเอียด

มีสองหมายเลข0และ7วันอาทิตย์จะมีประโยชน์สำหรับช่วงวันที่เริ่มต้นด้วยการเขียนหรือลงท้ายด้วย0 7ดังนั้นคุณสามารถเขียนช่วงที่เริ่มต้นด้วยวันอาทิตย์หรือลงท้ายด้วยเช่น0-2หรือ5-7ตัวอย่าง (ช่วงต้องเริ่มต้นด้วยจำนวนที่ต่ำกว่าและต้องลงท้ายด้วยที่สูงกว่า) ตัวย่อไม่สามารถใช้เพื่อกำหนดช่วงวันทำงานได้


1
เพื่อความชัดเจน“ ตัวย่อไม่สามารถใช้เพื่อกำหนดช่วงวันทำงานได้” คำสั่งที่นี่ดูเหมือนจะเป็นวิธีการที่บอกว่าหนึ่งไม่สามารถแยกตัวย่อโดยยัติภังค์ characters ลบตัวละครเพียงเครื่องหมายจุลภาคเท่านั้น ในคำอื่น ๆไม่สามารถลงไปFri,Sat,Sun Fri-Sun
Patrick Dark

8

นอกจากนี้คุณยังสามารถใช้ชื่อวันเช่นMonวันจันทร์วันTueอังคาร ฯลฯ มันเป็นมิตรกับมนุษย์มากกว่า


สิ่งนี้จะไม่ทำงานสำหรับการแจกแจงบางอย่าง ทดสอบกับ Ubuntu 14.04.3 LTS ฉันได้รับ "/tmp/crontab.Nuq9GE/crontab":24: วันที่ไม่ดีในสัปดาห์"
0x4B1D

3
@Nikita ตรวจสอบความผิดพลาดหรือการเว้นวรรคเพิ่มเติม ฉันมีทั้ง "จันทร์ - ศุกร์" และ "พฤหัสบดี" ใน crontab ของฉันบน Ubuntu 14.04.3 และทั้งสองทำงานได้ดี ฉันสงสัยว่ามีช่องว่างระหว่างตัวละครตัวใดตัวหนึ่งคุณจะพบข้อผิดพลาด
Dale Anderson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.