Score:2

คำจำกัดความวันที่ crontab สำหรับวันพุธที่สองของเดือนเท่านั้น

ธง cn

ฉันจะกำหนดวันที่ crontab สำหรับวันพุธที่สอง (ของทุกเดือน) เท่านั้นได้อย่างไร ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ

in flag
กำหนดการ cron เป็นเครื่องมือที่หยาบเกินไปสำหรับสิ่งนี้ คุณอาจต้องการใช้ `0 0 * * WED` เพื่อเรียกใช้งานทุกวันพุธ แต่ชี้ไปที่เชลล์สคริปต์ที่ตรวจสอบสัปดาห์ของเดือนก่อนที่จะเรียกใช้งานที่กำหนด
Soren A avatar
mx flag
ฉันคิดว่า 1. วันพุธของเดือนจะอยู่ระหว่างวันที่ 1 ถึง 7 เสมอ ดังนั้นวันพุธที่สองของเดือนจะต้องอยู่ระหว่างวันที่ 8 ถึง 14 ... ดังนั้นบางอย่างเช่น `0 0 8-14 * WED .....` ควรทำ แน่นอนว่าสองค่าแรก (นาทีและชั่วโมง) สามารถเป็นค่านาทีและชั่วโมงตามกฎหมายใดก็ได้
cn flag
@SorenA https://crontab.guru/#0_0_8-14_*_wed ซึ่งจะทำงานในวันที่ 8 ถึง 14 และวันพุธ :) คุณต้องปรับเปลี่ยนเล็กน้อย: https://crontab.guru/tips.html อาจต้องใช้ 7 บรรทัด ` 0 0 */8 * วันพุธ`, `0 0 */9 * วันพุธ`, `0 0 */10 * วันพุธ`, `0 0 */11 * วันพุธ`, `0 0 */12 * วันพุธ`, ` 0 0 */13 * พ.`, `0 0 */14 * พ.`
Score:3
ธง jp

ครอนได้ ไม่ ทำสิ่งนี้โดยกำเนิด แต่ตัวจับเวลา systemd ทำได้

ไวยากรณ์ cron 0 0 8-14 * พ จะ ไม่ งาน. จะตรงกับทุกวันพุธและทุกวันระหว่างวันที่ 8 ถึง 14 เนื่องจาก หน้าคน crontab พูดว่า

วันของการดำเนินการคำสั่งสามารถระบุได้สองฟิลด์ - วันของเดือนและวันในสัปดาห์ หากฟิลด์ทั้งสองถูกจำกัด (เช่น ไม่ขึ้นต้นด้วย *) คำสั่งจะทำงานเมื่อ ทั้ง ฟิลด์ตรงกับเวลาปัจจุบัน

ตัวจับเวลา systemd จัดการตรรกะแตกต่างกันและสามารถทำสิ่งที่คุณต้องการได้ ไวยากรณ์นี้จะตรงกับเที่ยงคืนของวันพุธที่สองของทุกเดือน

OnCalendar=วันพุธ *-*-8..14 00:00:00 น

ลิงค์

cn flag
ใช่ cron สามารถทำได้ ;-)
elmclose avatar
cn flag
ขอบคุณ Andrew ลิงค์ที่ดี เห็นว่าแค่ cron ไม่พอสำหรับงานนี้อย่างที่ผมสงสัย ฉันยังมีงานที่ต้องทำในวันศุกร์สุดท้ายของเดือน ฉันจะใช้หนึ่งในการตรวจสอบรองที่แนะนำและกรองตามวันที่ที่ถูกต้อง
Score:3
ธง cn

คุณขอ cron ดังนั้นการใช้ cron เท่านั้นคุณสามารถทำได้โดยใช้วันที่ของ bash เป็นการทดสอบครั้งที่ 2:

0 0 8-14 * * [ "$(date '+\%u')" = "3" ] && {สคริปต์ของคุณ}
  • ทุกชั่วโมงของวันที่ 8 ถึง 14
  • จากนั้นตรวจสอบวันพุธด้วยวันที่ทุบตี วันที่ 3 คือวันพุธ

ความคิดเห็นจาก Soren A คือ ผิดนิดหน่อย (แต่หน้าคนก็ผิดเช่นกัน) 0 0 8-14 * พ = âเวลา 00:00 น. ทุกวันของเดือนตั้งแต่ 8 ถึง 14 และ ในวันพุธâ จากลิงค์สุดท้าย:

เคล็ดลับที่ 1: ถ้าส่วนวันของเดือนหรือวันในสัปดาห์ขึ้นต้นด้วย * จะเป็นจุดตัดกัน มิฉะนั้นพวกเขาจะรวมตัวกันเป็นสหภาพ * * 3 * 1 ทำงานทุกวันที่ 3 ของเดือนและวันจันทร์ (สหภาพ) ในขณะที่ * * */2 * 1 ทำงานทุกวันที่ 2 ของเดือน เฉพาะในกรณีที่เป็นวันจันทร์ (สี่แยก) ด้วย เดอะ หน้าจัดการ ไม่ถูกต้องเกี่ยวกับรายละเอียดนี้ ข้อมูลเพิ่มเติม.

elmclose avatar
cn flag
มันหรูหราและกะทัดรัดมาก ฉันจะลองดู ขอบคุณ Rinzwind
Andrew Lowther avatar
jp flag
"เคล็ดลับที่ 1" จาก https://crontab.guru/tips.html น่าสนใจมาก คุณอาจต้องการรวมไว้ในคำตอบของคุณเพื่อสนับสนุนการอ้างสิทธิ์ "หน้าคนก็ผิด"
cn flag
@AndrewLowther ใช่ ตอนแรกฉันคิดเรื่องนี้และตัดสินใจว่าจะไม่ทำ แต่คุณพูดถูก จึงเพิ่ม :+
elmclose avatar
cn flag
เครื่องหมายแบ็กสแลชใน [ "$(date '+\%u')" = "3" ] จำเป็นหรือไม่
cn flag
ใช่ ดู `man 5 crontab` "เครื่องหมายเปอร์เซ็นต์ (%) ในคำสั่ง เว้นแต่จะมีการ Escape ด้วยแบ็กสแลช (\) จะถูกเปลี่ยนเป็นอักขระขึ้นบรรทัดใหม่ และข้อมูลทั้งหมดหลังจาก % แรกจะถูกส่งไปยังคำสั่งเป็นอินพุตมาตรฐาน"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา