Crontab ใน Linux: ตัวอย่างการจัดตารางงาน

crontab คืออะไร?

Cron ตั้งชื่อตามคำภาษากรีกว่า "Chronos" ซึ่งใช้เกี่ยวกับเวลา เป็นกระบวนการของระบบที่จะดำเนินงานโดยอัตโนมัติตามกำหนดเวลาที่กำหนด เป็นชุดคำสั่งที่ใช้สำหรับการรันงานการจัดกำหนดการปกติ Crontab ย่อมาจาก "ตาราง cron" อนุญาตให้ใช้ตัวกำหนดเวลางานซึ่งเรียกว่า cron เพื่อดำเนินงาน

Crontab ยังเป็นชื่อของโปรแกรมซึ่งใช้ในการแก้ไขกำหนดการนั้น ขับเคลื่อนด้วยไฟล์ crontab ซึ่งเป็นไฟล์กำหนดค่าที่ระบุคำสั่งเชลล์ให้ทำงานเป็นระยะตามกำหนดเวลาเฉพาะ

ทำไมต้องใช้ Cronjobs?

นี่คือเหตุผลในการใช้ Cronjobs ใน Linux:

  • ช่วยให้ระบบปฏิบัติการสามารถสำรองข้อมูลไฟล์บันทึกหรือฐานข้อมูลตามกำหนดเวลา
  • ลบไฟล์บันทึกเก่า
  • Archive และล้างตารางฐานข้อมูล
  • ส่งอีเมลแจ้งเตือนต่างๆ เช่น จดหมายข่าว อีเมลการหมดอายุรหัสผ่าน
  • การล้างข้อมูลแคชเป็นประจำ
  • Crontab เป็นตัวเลือกที่เหมาะสมที่สุดในการทำงาน Unix โดยอัตโนมัติ
  • ใช้สำหรับบำรุงรักษาระบบอัตโนมัติ

จะใช้ cron ใน Linux ได้อย่างไร?

ระบบ Linux pack มีตัวกำหนดเวลางานที่มีประโยชน์ชื่อ crontab Crontab ได้รับความนิยมเนื่องจากสามารถกำหนดเวลาให้รันกระบวนการอัตโนมัติในฐานะรูทได้ ดังนั้นการมีกระบวนการอัตโนมัติที่ทำงานในฐานะรูททำให้การเปลี่ยนแปลงระบบง่ายขึ้น คุณเพียงแค่ต้องเปลี่ยนงานแล้วรอจนกว่างานจะเริ่มต้นใหม่อีกครั้ง

รูปแบบ Linux Crontab

Crontab ของ Linux มีหกช่อง ห้าฟิลด์แรกกำหนดเวลาและวันที่ของการดำเนินการ และฟิลด์ที่ 6 ใช้สำหรับการดำเนินการคำสั่ง

ไวยากรณ์ของ Crontab:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

รูปแบบ Linux Crontab

  • แอสตริก (*): ใช้สำหรับจับคู่
  • กำหนดช่วง: ช่วยให้คุณกำหนดช่วงโดยใช้ยัติภังค์ เช่น 1-10 หรือ 30-40 หรือ jan-mar, mon-wed
  • กำหนดหลายช่วง: ช่วยให้คุณสามารถกำหนดช่วงต่างๆ ด้วยคำสั่งที่แยกจากกัน เช่น apr-jun,oct-dec

วิธีเพิ่ม/แก้ไข Crontab

ผู้ใช้สามารถแก้ไขงาน crontab ของตนเองได้ด้วยคำสั่ง crontab ต่อไปนี้:

$ crontab -u -e 

คำสั่งดังกล่าวจะเปิดการกำหนดค่า crontab ส่วนตัวของระบบคอมพิวเตอร์ของคุณ ซึ่งสามารถแก้ไขได้โดยใช้โปรแกรมแก้ไขข้อความเริ่มต้น

ไม่จำเป็นต้องรีสตาร์ท crontab เนื่องจากโปรแกรมจะหยิบการเปลี่ยนแปลงของคุณโดยอัตโนมัติเมื่อคุณใช้คำสั่งต่อไปนี้

$ crontab -l

หากต้องการลบงาน crontab ของคุณ ให้ใช้คำสั่งต่อไปนี้

$ crontab -r

หากต้องการเพิ่มหรืออัปเดตงานใน crontab ให้ใช้คำสั่งด้านล่าง

crontab -e

คำสั่งเพื่อแก้ไข crontab ของผู้ใช้รายอื่น

crontab -u username -e

วิธีแสดงรายการ Crontab

คำสั่งเพื่อดูรายการ crontab ของผู้ใช้ปัจจุบัน

crontab -l

คำสั่งเพื่อดูรายการ crontab ของผู้ใช้เฉพาะ:

crontab -u username -l

ตัวอย่าง Crontab ที่สำคัญ

นี่คือตัวอย่างที่สำคัญของ Crontab

Descriptไอออน คำสั่ง
คำสั่ง Cron เพื่อทำหน้าที่จัดตารางเวลาต่างๆ
คำสั่งด้านล่างให้ดำเนินการเวลา 7 น. และ 5 น. ทุกวัน
0 7,17 * * * /scripts/script.sh
คำสั่งให้ดำเนินการ cron ทุก ๆ 5 นาที
*/5* * * * *  /scripts/script.sh
คำสั่ง Cron scheduler ช่วยให้คุณดำเนินงานได้ทุกครั้ง Monday เวลา 5 น. คำสั่งนี้มีประโยชน์สำหรับการทำงานรายสัปดาห์ เช่น การล้างข้อมูลระบบ
0 5 * * mon  /scripts/script.sh
คำสั่งให้รันสคริปต์ของคุณในช่วงเวลา 3 นาที
*/3 * * * * /scripts/monitor.sh
คำสั่งเพื่อกำหนดเวลา cron ที่จะเรียกใช้งานในเดือนใดเดือนหนึ่ง
คำสั่งนี้เพื่อรันงานในเดือนกุมภาพันธ์ มิถุนายน และกันยายน บางครั้งเราจำเป็นต้องกำหนดเวลางานเพื่อดำเนินงานรายเดือนที่เลือกไว้
* * * feb,jun,sep *  /script/script.sh
คำสั่งให้ดำเนินการในวันที่เลือก ตัวอย่างนี้จะรันแต่ละรายการ Monday และวันพุธ เวลา 5 น.
0 17 * * mon,wed  /script/script.sh
คำสั่งนี้อนุญาตให้ cron ดำเนินการในวันเสาร์แรกของทุกเดือน
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
คำสั่งให้รันสคริปต์เป็นระยะเวลา 6 ชั่วโมง ซึ่งสามารถกำหนดค่าได้ดังด้านล่างนี้
0 */6 * * * /scripts/script.sh
คำสั่งนี้กำหนดเวลางานเพื่อดำเนินการสองครั้ง Monday และวันอังคาร ใช้การตั้งค่าต่อไปนี้เพื่อดำเนินการ
0 4,17 * * mon,tue /scripts/script.sh
คำสั่งกำหนดเวลาให้ cron ดำเนินการทุก ๆ 15 วินาที
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
คำสั่งให้จัดกำหนดการงานเป็นรายปี
@ การประทับเวลารายปีคือ = ถึง “0 0 5 1 *” ซึ่งจะดำเนินการในนาทีที่ห้าของทุกปี คุณสามารถใช้ส่งคำอวยพรปีใหม่ได้
@yearly /scripts/script.sh 
สั่งงานให้ดำเนินการเป็นประจำทุกเดือน
@การประทับเวลารายเดือนจะคล้ายกับ “0 0 1 * *” นิพจน์คำสั่งนี้อนุญาตให้ดำเนินการงานในนาทีแรกของเดือน
@monthly /scripts/script.sh
คำสั่งให้ดำเนินการหลาย ๆ งานโดยใช้ cron เดียว
* * * * * /scripts/script.sh; /scripts/scrit2.sh
คำสั่งเพื่อกำหนดเวลางานให้ดำเนินการเป็นรายสัปดาห์
@การประทับเวลารายสัปดาห์จะคล้ายกับ “0 0 4 * ดวงอาทิตย์” ใช้เพื่อดำเนินงานรายสัปดาห์ เช่น การล้างข้อมูลระบบ เป็นต้น
@weekly /bin/script.sh
งานจะถูกกำหนดให้ดำเนินการในแต่ละวัน
@การประทับเวลารายวันจะคล้ายกับ “0 2 * * *” มันรันงานในนาทีที่สองของทุกวัน
@daily /scripts/script.sh
อนุญาตให้งานดำเนินการทุกชั่วโมง
@การประทับเวลารายชั่วโมงจะคล้ายกับ “0 * * * *” คำสั่งนี้รันงานในนาทีแรกของทุกชั่วโมง
@hourly /scripts/script.sh
อนุญาตให้งานดำเนินการเมื่อรีบูตระบบ
นิพจน์ @reboot มีประโยชน์สำหรับงานเหล่านั้นที่ระบบต้องการรันเมื่อเริ่มต้นระบบของคุณ สิ่งนี้มีประโยชน์ในการเริ่มพื้นหลังงานโดยอัตโนมัติ
@reboot /scripts/script.sh

สรุป:

  • Cron ตั้งชื่อตามคำภาษากรีกว่า "Chronos" ซึ่งใช้เกี่ยวกับเวลา
  • Cronjobs ช่วยให้ระบบปฏิบัติการสามารถสำรองข้อมูลไฟล์บันทึกหรือฐานข้อมูลตามกำหนดเวลา
  • ชุดระบบ Linux มีตัวกำหนดเวลางานที่มีประโยชน์ชื่อ crontab ซึ่งสามารถกำหนดเวลาให้รันกระบวนการอัตโนมัติในฐานะรูทได้
  • Crontab ของ Linux มีหกช่อง ห้าฟิลด์แรกกำหนดเวลาและวันที่ของการดำเนินการ และฟิลด์ที่ 6 ใช้สำหรับการดำเนินการคำสั่ง