การจัดกำหนดการงานเป็นระยะโดยใช้ Cron ใน Linux
cron
เป็นโปรแกรมลินุกซ์ที่ใช้ในการกำหนดเวลาคำสั่งหรือสคริปต์ที่จะดำเนินการในภายหลัง นอกจากนี้ยังสามารถใช้เพื่อกำหนดเวลาการรันคำสั่งและสคริปต์เป็นระยะ โปรแกรมที่กำหนดเวลาไว้โดยใช้ cron มักเรียกว่า งานครอน. การใช้งานหลักคืองานการดูแลระบบ เช่น การสำรองข้อมูลปกติ การอัปเดตซอฟต์แวร์เป็นประจำ และงานบำรุงรักษาอื่นๆ ที่คล้ายคลึงกัน
บทนำ
cron
ทำงานเป็น daemon ใน Linux เช่นเป็นกระบวนการพื้นหลัง อนุญาตให้ผู้ใช้กำหนดเวลางานได้โดยตรงด้วยคำสั่ง crontab ซึ่งเปิดไฟล์การกำหนดค่าชื่อ Cron File ในตัวแก้ไข ไฟล์ Cron แยกถูกสร้างขึ้นสำหรับผู้ใช้แต่ละคน
การสร้างไฟล์ Cron และไวยากรณ์พื้นฐาน
ดิ crontab
คำสั่งสามารถดำเนินการได้ด้วย -e
ตั้งค่าสถานะเพื่อแก้ไขไฟล์ Cron ที่มีอยู่ หากไฟล์นั้นไม่มีอยู่ ไฟล์นั้นจะถูกสร้างขึ้น หากผู้ใช้เรียกใช้คำสั่งเป็นครั้งแรก และหากมีโปรแกรมแก้ไขไฟล์ติดตั้งอยู่บนระบบ Linux หลายตัว คำสั่งจะขอให้ผู้ใช้เลือกโปรแกรมแก้ไขเริ่มต้นจากรายการโปรแกรมแก้ไข
หลังจากเลือกเอดิเตอร์แล้ว ไฟล์ cron สำหรับผู้ใช้จะถูกสร้างขึ้นและเปิดขึ้น ขณะนี้คุณสามารถระบุงานในไฟล์ได้
ไวยากรณ์ทั่วไปสำหรับการระบุงาน Cron คือ:
โดยพื้นฐานแล้ว จะทำงานที่ 'นาที' (0-59), 'ชั่วโมง'(0-23), 'วันของเดือน'(1-31), เดือน(1-12), วันในสัปดาห์, (0-7, สำหรับวันอาทิตย์ สามารถใช้ 0 หรือ 7 ได้) ในงาน Cron เพื่อให้เข้าใจง่ายขึ้น ลองมาดูตัวอย่าง:
1 2 3 4 5 เสียงสะท้อน "สวัสดี"
แปลว่า คำสั่ง เสียงสะท้อน "สวัสดี"
จะดำเนินการทุกวันที่ห้าของสัปดาห์ (วันศุกร์) และทุกวันที่ 3 ของเดือน ทุกเดือนที่ 4 ของปี (เมษายน) เวลา 02:01 น. (ชั่วโมงที่ 2 นาทีแรก)
หากต้องเรียกใช้คำสั่งเดียวกันทุกวันเวลา 02:01 น. ไวยากรณ์จะมีลักษณะดังนี้:
1 2 * * * echo "สวัสดี"
ดิ *
หมายถึง 'เสมอ' หรือ 'สำหรับทุกคน' เช่น ตลอดเดือน ทุกวันในสัปดาห์ เป็นต้น
ตัวดำเนินการคำสั่ง (,
) สามารถใช้เพื่อป้อนรายการค่าเมื่องานควรจะทำซ้ำ ตัวอย่างเช่น:
0 2,3,4 * * * echo "สวัสดี"
การดำเนินการนี้จะเรียกใช้โปรแกรมเวลา 02:00 น., 03:00 น. และ 04:00 น. ทุกวัน
ในทำนองเดียวกัน ยัติภังค์ (-
) โอเปอเรเตอร์ สามารถใช้เพื่อระบุช่วงที่งานจะทำซ้ำได้ ตัวอย่างเช่น:
0-20 2 * * * echo "สวัสดี"
ซึ่งจะรันโปรแกรมเวลา 02:00 น. 02:01 น. 02:02 น. เป็นต้นไปจนถึง 02:20 น.
ในที่สุด เราก็มี เครื่องหมายทับ ( /
) ตัวดำเนินการ ตัวดำเนินการนี้ใช้เพื่อระบุค่าช่วงเวลาตามงานที่จะทำซ้ำ เช่น. */15
ในช่องนาทีหมายความว่างานควรทำซ้ำทุกๆ 15 นาที 2-10/2
ในช่องชั่วโมงระบุว่างานจะทำซ้ำระหว่างเวลา 02:00 น. ถึง 10:00 น. หลังจากทุกช่วง 2 ชั่วโมง (2:00 น. 4:00 น. 6:00 น. 8:00 น. 10:00 น.)
*/15 2-10/2 * * * เสียงสะท้อน "สวัสดี"
หลังจากที่คุณสร้างรายการในไฟล์ Cron แล้ว ให้บันทึกไฟล์และออกจากตัวแก้ไข
คุณควรเห็น a 'การติดตั้ง crontab ใหม่' ข้อความในเทอร์มินัลหลังจากบันทึกและออกจากไฟล์ crontab
มาโคร
มาโครบางตัวถูกกำหนดไว้ล่วงหน้าใน Cron ซึ่งระบุช่วงเวลาที่จำเป็นโดยทั่วไป เช่น ทุกชั่วโมง ทุกวัน ทุกเดือน เป็นต้น
หากต้องการเรียกใช้งานวันละครั้งเมื่อเริ่มต้นวัน เช่น เวลา 00:00 น. ให้ใช้มาโคร @รายวัน
. ซึ่งเทียบเท่ากับ 0 0 * * *
.
คุณสามารถใส่สิ่งนี้ในไฟล์ Cron ในลักษณะเดียวกับที่อธิบายไว้ก่อนหน้านี้
ในทำนองเดียวกัน สามารถใช้มาโครอื่นๆ ได้ เช่น @รายชั่วโมง
(นาทีที่ 0 ของทุก ๆ ชั่วโมง) @รายเดือน
(00:00 น. ของวันแรกของเดือน) @รายสัปดาห์
(00:00 น. ของวันแรกของสัปดาห์ @รายปี
(00:00 น. ของวันที่ 1 มกราคม ของทุกปี) @reboot
(ทุกครั้งที่เปิดเครื่องคอมพิวเตอร์)
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีเพิ่ม Cron Jobs สำหรับการดำเนินการปกติใน Linux การใช้ Cron Jobs อย่างเหมาะสมมีประโยชน์แม้กับงานที่ต้องดำเนินการด้วยตนเองที่น่ารำคาญที่สุดที่ผู้ใช้ต้องเผชิญ เช่น การลบบันทึกเก่าเป็นประจำ การเก็บถาวรข้อมูลเย็นทุกประเภท (ข้อมูลที่ไม่ค่อยเข้าถึง) ฯลฯ