Skip to content

ตัวกำหนดเวลางาน ​

Task Scheduler (ตัวกำหนดเวลางาน) ใช้สำหรับทำให้งานตามรอบเป็นอัตโนมัติใน WSL เพื่อหลีกเลี่ยงงานบำรุงรักษาที่ทำซ้ำด้วยตนเอง โดยมีอินเทอร์เฟซการจัดการแบบเห็นภาพ ช่วยให้คุณสร้างและจัดการงานตามเวลาได้โดยไม่ต้องจำพารามิเตอร์บรรทัดคำสั่งที่ซับซ้อน

ตัวอย่างสถานการณ์ของฟีเจอร์นี้:

  • สำรองดิสทริบิวชันใน WSL ตามรอบ
  • รันสคริปต์หรือคำสั่งที่กำหนดเอง

งานทั้งหมดจะถูกรวบรวมไว้ภายใต้พาธ \WSLDashboard\UserTasks\ ของ Windows Task Scheduler เพื่อความสะดวกในการตรวจสอบและจัดการแบบรวมศูนย์ คุณสามารถดูสถานะงานแบบเรียลไทม์ในอินเทอร์เฟซได้ (พร้อม / กำลังรัน / ปิดใช้งาน)

คลังสคริปต์ชุมชน ​

คุณสามารถดาวน์โหลดสคริปต์ตัวอย่าง (สำรองดิสทริบิวชัน) จากคลังชุมชนด้านล่างเพื่อเริ่มต้นได้อย่างรวดเร็ว:

https://github.com/owu/wsl-community

นี่คือคลังโค้ดที่ผู้ใช้ร่วมกันสร้างขึ้น ยินดีต้อนรับการส่ง Pull Request เพื่อร่วมแบ่งปันสคริปต์หรือแนวทางปฏิบัติที่ดีที่สุด

การรันคำสั่ง ​

การกำหนดค่าคำสั่ง ​

งานตามเวลาแต่ละงานสามารถกำหนดค่าคำสั่งที่จะรันได้ (สคริปต์หรือโปรแกรมปฏิบัติการ) รองรับตัวเลือกต่อไปนี้:

รายการกำหนดค่าคำอธิบาย
คำสั่งที่จะรันพาธของสคริปต์หรือโปรแกรมปฏิบัติการที่จะรัน รองรับรูปแบบ .bat, .ps1, .cmd, .exe, .py ฯลฯ เลือกไฟล์ได้ผ่านปุ่ม "Browse (เรียกดู)"
พารามิเตอร์คำสั่งพารามิเตอร์เพิ่มเติมที่ส่งให้คำสั่ง (ไม่บังคับ)
สิทธิ์ผู้ดูแลระบบเมื่อทำเครื่องหมาย งานจะรันด้วยสิทธิ์สูงสุด เหมาะสำหรับการทำงานที่ต้องยกระดับ UAC

การดำเนินการกับงาน ​

หลังสร้างงานแล้ว คุณสามารถดำเนินการต่อไปนี้กับงาน:

การดำเนินการคำอธิบาย
รันทันทีบังคับให้งานรันทันที ไม่ขึ้นกับกฎการจัดตารางเวลา
เปิดใช้งาน/ปิดใช้งานหยุดหรือดำเนินการจัดตารางเวลาอัตโนมัติของงานต่อ
ลบลบงานออกจากตัวกำหนดเวลางาน

กฎการจัดตารางเวลา ​

นิพจน์ Cron ​

การจัดตารางงานใช้นิพจน์ Cron แบบ 5 ฟิลด์ มาตรฐานเพื่อกำหนดกฎการรัน รูปแบบดังนี้:

นาที ชั่วโมง วัน เดือน วันในสัปดาห์
ฟิลด์ช่วงค่าคำอธิบาย
นาที0 - 59รันในนาทีที่เท่าไหร่ของทุกชั่วโมง
ชั่วโมง0 - 23รันในชั่วโมงที่เท่าไหร่ของทุกวัน
วัน1 - 31รันในวันที่เท่าไหร่ของทุกเดือน
เดือน1 - 12รันในเดือนที่เท่าไหร่ของทุกปี
วันในสัปดาห์0 - 70 และ 7 ต่างก็หมายถึงวันอาทิตย์

แต่ละฟิลด์รองรับไวยากรณ์ต่อไปนี้:

  • * — ตรงกับทุกค่า (เช่น * * * * * หมายถึงรันทุกนาที)
  • */N — รันทุก ๆ N หน่วย (เช่น */5 * * * * หมายถึงรันทุก 5 นาที)
  • ตัวเลขเดียว — ตรงกับค่าเฉพาะ (เช่น 0 9 * * 1 หมายถึงรันทุกวันจันทร์เวลา 9:00)

หมายเหตุ: ไม่รองรับหลายค่าที่คั่นด้วยลูกน้ำ (เช่น 1,15) และนิพจน์ช่วง (เช่น 1-5) สำหรับข้อจำกัดเพิ่มเติมโปรดดูหมายเหตุด้านล่าง

รูปแบบการผสมที่รองรับ ​

ซอฟต์แวร์นี้ไม่ได้รัน Cron daemon ดั้งเดิม แต่แปลนิพจน์ Cron เป็นพารามิเตอร์ทริกเกอร์ของ Windows Task Scheduler (schtasks.exe) เพื่อการแมปที่แม่นยำ ตัวแยกวิเคราะห์รองรับเพียง 7 รูปแบบการผสม ที่กำหนดไว้ตายตัวดังนี้ ซึ่งครอบคลุมสถานการณ์งานตามเวลาส่วนใหญ่:

#รูปแบบคำอธิบายสถานการณ์ที่เหมาะสม
1* * * * *รันทุกนาทีงานประเภทเฝ้าระวัง ตรวจจับแบบเรียลไทม์
2*/N * * * *รันทุก ๆ N นาทีงานตรวจสอบตามรอบ
3M * * * *รันในนาทีที่ M ของทุกชั่วโมง (เช่น 3 * * * *)งานตอนชั่วโมงเต็ม
4M H * * *รันทุกวันที่เวลา H นาที M (เช่น 0 3 * * *)การบำรุงรักษารายวัน เช่น ล้างบันทึกตอนเช้ามืด
5M H * * DOWรันทุกสัปดาห์ในวันเฉพาะเวลา H นาที M (เช่น 0 12 * * 1)งานประจำสัปดาห์ เช่น สำรองข้อมูลทุกวันจันทร์
6M H D * *รันทุกเดือนในวันที่เฉพาะเวลา H นาที Mงานรายเดือน เช่น สร้างรายงานทุกวันที่ 1
7M H D MON *รันทุกปีในเดือนและวันที่เฉพาะเวลา H นาที Mงานรายปี เช่น รันในเดือนที่กำหนด

หากนิพจน์ไม่อยู่ใน 7 รูปแบบข้างต้น ระบบจะถือว่าเป็น Unsupported cron pattern และปฏิเสธการสร้าง

หมายเหตุ ​

เนื่องจากอิงการใช้งานกับ Windows Task Scheduler ตัวแยกวิเคราะห์ Cron ของซอฟต์แวร์นี้จึงต่างจาก Cron Linux มาตรฐานดังนี้:

1. ไม่รองรับรายการ (,) และช่วง (-) ​

Cron มาตรฐานอนุญาตให้กำหนดหลายจุดเวลาผ่านลูกน้ำ (เช่น 1,15,30 * * * * หมายถึงนาทีที่ 1, 15, 30) หรือกำหนดช่วงผ่านยัติภังค์ (เช่น 1-5 * * * * หมายถึงนาทีที่ 1 ถึง 5)

ข้อจำกัดของซอฟต์แวร์นี้: แต่ละฟิลด์กรอกได้เพียงตัวเลขเดียว, เครื่องหมายดอกจัน (*) หรือขั้น (step) (*/N) เท่านั้น ไม่รองรับลูกน้ำและยัติภังค์

2. ไม่รองรับการผสมอิสระ ​

Cron มาตรฐานอนุญาตให้ผสมฟิลด์ใดก็ได้อย่างอิสระ (เช่น * 3 * * * หมายถึงทุกนาทีในชั่วโมงตี 3) แต่ซอฟต์แวร์นี้รองรับเฉพาะ 7 รูปแบบตายตัวตามที่ระบุข้างต้น นิพจน์ที่ไม่อยู่ในขอบเขตนี้จะถูกปฏิเสธ

3. ความแตกต่างของการจัดตำแหน่งเวลาในรูปแบบขั้น (step) ​

ใน Cron มาตรฐาน */5 * * * * จะจัดตำแหน่งเข้ากับนาที 0, 5, 10, 15... ของนาฬิกาอย่างเคร่งครัด ซอฟต์แวร์นี้แปลเป็นพารามิเตอร์ /SC MINUTE /MO 5 ของ Windows และตรรกะการประมวลผลของ Windows คือนับช่วงเวลาตั้งแต่ตอนที่สร้างหรือเปิดใช้งานงาน

ตัวอย่างเช่น หากคุณบันทึกและเปิดใช้งานงานที่รันทุก 5 นาทีตอน 10:02 งานจะรันครั้งแรกที่ 10:07 จากนั้น 10:12 แทนที่จะจัดตำแหน่งกับ 10:05 ของนาฬิกามาตรฐาน