11 ตัวอย่างงาน Cron Scheduling ใน Linux
ในบทความนี้ เราจะมาทบทวนและดูวิธีที่เราสามารถกำหนดเวลาและรันงาน Linux ในเบื้องหลังโดยอัตโนมัติตามช่วงเวลาปกติโดยใช้คำสั่ง Crontab
การจัดการงานที่ใช้บ่อยด้วยตนเองเป็นงานที่น่ากังวลสำหรับผู้ดูแลระบบ และงานดังกล่าวสามารถกำหนดเวลาและรันได้โดยอัตโนมัติในเบื้องหลังโดยไม่ต้องมีการแทรกแซงของมนุษย์โดยใช้ cron daemon ใน Linux หรือระบบปฏิบัติการที่คล้ายกับ Unix
ตัวอย่างเช่น คุณสามารถสำรองข้อมูลระบบ Linux โดยอัตโนมัติ การอัปเดตกำหนดการ และการซิงโครไนซ์ไฟล์ และอื่นๆ อีกมากมายโดยใช้ Cron daemon ซึ่งใช้ในการรันงานที่กำหนดเวลาไว้จากบรรทัดคำสั่ง หรือใช้เครื่องมือออนไลน์เพื่อสร้างงาน cron
Cron ตื่นขึ้นมาทุกนาทีและตรวจสอบงานที่กำหนดเวลาไว้แบบนับได้ – Crontab (CRON TABle) เป็นตารางที่เราสามารถกำหนดเวลางานประเภทดังกล่าวที่ทำซ้ำได้ .
เคล็ดลับ: ผู้ใช้แต่ละคนสามารถมี crontab ของตนเองเพื่อสร้าง แก้ไข และลบงานได้ ตามค่าเริ่มต้น cron จะเปิดใช้งานสำหรับผู้ใช้ อย่างไรก็ตาม เราสามารถจำกัดผู้ใช้ได้โดยการเพิ่มรายการในไฟล์ /etc/cron.deny
Crontab ในลินุกซ์
ไฟล์ Crontab ประกอบด้วยคำสั่งต่อบรรทัดและมีหกฟิลด์จริงๆ และคั่นด้วยช่องว่างหรือแท็บ ห้าฟิลด์เริ่มต้นแสดงถึงเวลาในการรันงาน และฟิลด์สุดท้ายใช้สำหรับคำสั่ง
- นาที (คงค่าไว้ระหว่าง 0-59)
- ชั่วโมง (เก็บค่าระหว่าง 0-23)
- วันของเดือน (เก็บค่าไว้ระหว่าง 1-31)
- เดือนของปี (เก็บค่าระหว่าง 1-12 หรือ ม.ค.-ธ.ค. คุณสามารถใช้ตัวอักษรสามตัวแรกของชื่อแต่ละเดือนได้ เช่น ม.ค. หรือ มิ.ย.< /แข็งแกร่ง>.)
- วันในสัปดาห์ (เก็บค่าระหว่าง 0-6 หรือ อาทิตย์-เสาร์ ในที่นี้คุณสามารถใช้ตัวอักษรสามตัวแรกของชื่อแต่ละวัน เช่น อาทิตย์หรือพุธ< /แข็งแกร่ง>. )
- Command – /path/to/command หรือสคริปต์ที่คุณต้องการกำหนดเวลา
1. แสดงรายการรายการ Crontab
แสดงรายการหรือจัดการงานด้วยคำสั่ง crontab พร้อมตัวเลือก -l
สำหรับผู้ใช้ปัจจุบัน
crontab -l
00 10 * * * /bin/ls >/ls.txt
2. แก้ไขรายการ Crontab
หากต้องการแก้ไขรายการ crontab ให้ใช้ -e
ตัวเลือกที่แสดงด้านล่าง ตัวอย่างด้านล่างจะเปิดงานที่กำหนดเวลาไว้ในตัวแก้ไข VI ทำการเปลี่ยนแปลงที่จำเป็นและออกจากการกดปุ่ม :wq
ซึ่งจะบันทึกการตั้งค่าโดยอัตโนมัติ
crontab -e
3. แสดงรายการงาน Cron ตามกำหนดเวลาของผู้ใช้
ในการแสดงรายการงานที่กำหนดเวลาไว้ของผู้ใช้เฉพาะที่เรียกว่า tecmint โดยใช้ตัวเลือกเป็น -u
(ผู้ใช้) และ -l
(รายการ)
crontab -u tecmint -l
no crontab for tecmint
หมายเหตุ: เฉพาะผู้ใช้ root เท่านั้นที่มีสิทธิ์สมบูรณ์ในการดูรายการ crontab ของผู้ใช้รายอื่น ผู้ใช้ปกติไม่สามารถดูผู้อื่นได้
4. ลบรายการ Crontab
ข้อควรระวัง: Crontab ที่มี -r
พารามิเตอร์จะลบงานที่กำหนดเวลาไว้เสร็จสมบูรณ์โดยไม่มีการยืนยันจาก Crontab ใช้ตัวเลือก -i
ก่อนที่จะลบ crontab ของผู้ใช้
crontab -r
5. แจ้งก่อนที่จะลบ Crontab
crontab ด้วยตัวเลือก -i
จะแจ้งให้คุณยืนยันจากผู้ใช้ก่อนที่จะลบ crontab ของผู้ใช้
crontab -i -r
crontab: really delete root's crontab?
6. อักขระพิเศษที่อนุญาต (*, -, /, ?, #)
- เครื่องหมายดอกจัน(*) – จับคู่ค่าทั้งหมดในช่องหรือค่าที่เป็นไปได้
- ยัติภังค์(-) – เพื่อกำหนดช่วง
- เครื่องหมายสแลช (/) – ฟิลด์ที่ 1 /10 หมายถึงทุก ๆ สิบนาทีหรือเพิ่มช่วง
- จุลภาค (,) – เพื่อแยกรายการ
7. กำหนดการ Cron ทั่วทั้งระบบ
ผู้ดูแลระบบสามารถใช้ไดเร็กทอรี cron ที่กำหนดไว้ล่วงหน้าดังที่แสดงด้านล่าง
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. กำหนดเวลางานตามเวลาที่กำหนด
งานด้านล่างจะลบไฟล์และไดเร็กทอรีว่างจาก /tmp เวลา 00:30 ทุกวัน คุณต้องระบุชื่อผู้ใช้เพื่อดำเนินการคำสั่ง crontab ในตัวอย่างด้านล่าง ผู้ใช้ root กำลังทำงาน cron
crontab -e
30 0 * * * root find /tmp -type f -empty -delete
9. สตริงพิเศษสำหรับกำหนดการทั่วไป
- @reboot
คำสั่งจะทำงานเมื่อระบบรีบูต
- @daily
-
วันละครั้งหรืออาจใช้ @midnight
- @weekly
สัปดาห์ละครั้ง
- @yearly
ปีละครั้ง เราสามารถใช้คีย์เวิร์ด @annually ได้เช่นกัน
จำเป็นต้องแทนที่ห้าฟิลด์ของคำสั่ง cron ด้วยคำหลักหากคุณต้องการใช้คำเดียวกัน
10. คำสั่งหลายคำสั่งด้วยเครื่องหมายแอมเปอร์แซนด์คู่ (&&)
ในตัวอย่างด้านล่าง command1 และ command2 จะทำงานทุกวัน
crontab -e
@daily <command1> && <command2>
11. ปิดการใช้งานการแจ้งเตือนทางอีเมล
ตามค่าเริ่มต้น cron จะส่งอีเมลไปยังบัญชีผู้ใช้ที่ดำเนินการ cronjob หากคุณต้องการปิดการใช้งานให้เพิ่มงาน cron ของคุณตามตัวอย่างด้านล่าง การใช้ตัวเลือก >/dev/null 2>&1 ที่ท้ายไฟล์จะเปลี่ยนเส้นทางเอาต์พุตทั้งหมดของผลลัพธ์ cron ภายใต้ /dev/null
[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1
บทสรุป: งานอัตโนมัติอาจช่วยให้เราดำเนินงานได้ดีขึ้น ปราศจากข้อผิดพลาด และมีประสิทธิภาพ คุณสามารถดูข้อมูลเพิ่มเติมได้ที่หน้าคู่มือของ crontab โดยพิมพ์คำสั่ง 'man crontab' ในเทอร์มินัลของคุณ