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]
- แอสตริก (*): ใช้สำหรับจับคู่
- กำหนดช่วง: ช่วยให้คุณกำหนดช่วงโดยใช้ยัติภังค์ เช่น 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 ใช้สำหรับการดำเนินการคำสั่ง