ในบทช่วยสอนนี้ เราจะให้ข้อมูลเบื้องต้นเกี่ยวกับทุกสิ่งที่คุณจำเป็นต้องเข้าใจสำหรับการจัดกำหนดการงานด้วย cron ซึ่งรวมถึงไวยากรณ์พื้นฐานของ cron การแก้ไขไฟล์ crontab กำหนดเวลางานด้วย cron พร้อมตัวอย่างบางส่วน ดูงาน cron เป็นต้น
พื้นฐานของงาน Cron
มาทำความเข้าใจพื้นฐานของงาน cron กัน
Crond คืออะไร?
Crond เป็น daemon ในระบบ Linux ที่ทำงานในพื้นหลังและตรวจสอบทุกนาทีเพื่อดูว่ามีงานใดที่กำหนดเวลาไว้ในขณะนั้นหรือไม่ หากมี จะทำงานนั้น มิฉะนั้น จะยังคงไม่ทำงาน
ไวยากรณ์งาน Cron
ไวยากรณ์สำหรับงาน cron มีดังนี้:
* * * * *สั่งการ/สคริปต์
จากซ้าย:
- แรก * สอดคล้องกับนาที (0-59)
- ที่สอง * สอดคล้องกับชั่วโมง (0-23)
- ที่สาม * ตรงกับวันของเดือน (1-31)
- ที่สี่ * ตรงกับเดือนของปี (1-12)
- ที่ห้า * ตรงกับวันในสัปดาห์ (0-6 วันอาทิตย์ถึงวันเสาร์)
ในการระบุค่าหลายค่าในฟิลด์ ให้ใช้สัญลักษณ์ตัวดำเนินการต่อไปนี้:
- เครื่องหมายดอกจัน (*): เพื่อระบุค่าที่เป็นไปได้ทั้งหมดสำหรับฟิลด์
- แดช (-): ถึง NS กำหนดช่วงของค่า
- เครื่องหมายจุลภาค (,): เพื่อระบุรายการค่า
- ตัวคั่น (/): เพื่อระบุค่าขั้นตอน
การแก้ไขไฟล์ Crontab
Crontab เป็นไฟล์ที่มีงานที่กำหนดเวลาไว้ในไวยากรณ์เฉพาะ ไฟล์ crontab มีสองประเภท; อันหนึ่งสำหรับงาน cron เฉพาะระบบ และอีกอันสำหรับงาน cron เฉพาะผู้ใช้
งาน cron ระบบ
งาน cron ทั่วทั้งระบบอยู่ใน /etc/crontab ไฟล์และ /etc/cron.d ไดเร็กทอรีและทำงานผ่าน /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly และ /etc/cron.monthly. เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถเข้าถึงไฟล์เหล่านี้ได้
ผู้ดูแลระบบสามารถกำหนดงาน cron โดยใช้คำสั่งต่อไปนี้:
$นาโน /ฯลฯ/crontabนี่คือไวยากรณ์ของงานใน /etc/crontab ไฟล์:
# นาที ชม. dayofmonth เดือน dayofweek username command* * * * *ผู้ใช้1ifconfig
งาน cron เฉพาะผู้ใช้
งาน cron เฉพาะผู้ใช้อยู่ใน / var / spool / cron / crontabs ไดเรกทอรี แม้ว่าคุณสามารถแก้ไขงานเหล่านี้ได้ด้วยตนเอง ขอแนะนำให้แก้ไขงานเหล่านี้โดยใช้คำสั่ง crontab -e
ผู้ใช้มาตรฐานสามารถกำหนดงาน cron โดยใช้คำสั่งต่อไปนี้:
$crontab-และตัวอย่างเช่น หากคุณเข้าสู่ระบบในฐานะผู้ใช้ทดสอบ การรันคำสั่ง crontab -e จะแก้ไขไฟล์ crontab สำหรับผู้ใช้ทดสอบ ในทำนองเดียวกัน หากคุณเข้าสู่ระบบในฐานะผู้ใช้รูท คำสั่ง crontab -e จะแก้ไขไฟล์ crontab สำหรับผู้ใช้รูท
ออกคำสั่งด้านล่างใน Terminal เพื่อแก้ไขไฟล์ crontab สำหรับผู้ใช้รายอื่น:
$sudocrontab-ยู <ชื่อผู้ใช้> -และตัวอย่างเช่น หากคุณเข้าสู่ระบบในฐานะผู้ใช้ test1 และต้องการแก้ไขไฟล์ crontab สำหรับผู้ใช้ test2 คำสั่งจะเป็น:
$sudocrontab-ยูทดสอบ2-และนี่คือไวยากรณ์ของงาน cron ที่สามารถเพิ่มในไฟล์ crontab:
# m h dayofmonth เดือน dayofweek command* * * * * ifconfig
คุณสามารถเห็นในงานเฉพาะผู้ใช้ที่ไม่มีชื่อผู้ใช้ที่ยื่น
คำสั่ง Crontab
คำสั่ง crontab ใช้เพื่อแก้ไข แสดงรายการ และลบงาน cron:
- crontab -e ในการแก้ไขไฟล์ crontab ของผู้ใช้ปัจจุบัน
- crontab -l เพื่อแสดงเนื้อหาของไฟล์ crontab
- crontab -u [ชื่อผู้ใช้] ในการแก้ไขไฟล์ crontab ของผู้ใช้รายอื่น
- crontab -r ในการลบไฟล์ crontab ของผู้ใช้ปัจจุบัน
- crontab -i เพื่อแสดงพรอมต์ก่อนที่จะลบไฟล์ crontab ของผู้ใช้ปัจจุบัน
การจัดตารางงานกับ Cron
ด้วย Cron คุณสามารถเรียกใช้งานตามเวลา วันที่ และช่วงเวลาที่กำหนดโดยมีหน่วยต่ำสุดเป็นนาที เช่น คุณสามารถเรียกใช้งานได้ทุกนาที
หากต้องการกำหนดเวลางานด้วย cron ให้เปิดไฟล์ crontab โดยใช้วิธีการที่กล่าวถึงในส่วนก่อนหน้า เมื่อคุณเปิดไฟล์ crontab คุณจะได้รับข้อความให้เลือกโปรแกรมแก้ไขข้อความ พิมพ์ตัวเลขเพื่อเลือกโปรแกรมแก้ไขข้อความที่คุณต้องการ เลื่อนลงไปที่ด้านล่างของไฟล์และเพิ่มงานในรูปแบบที่อธิบายข้างต้น แต่ละบรรทัดในไฟล์ระบุหนึ่งคำสั่ง ห้ารายการแรกในบรรทัดระบุเวลาที่กำหนด และรายการสุดท้ายระบุว่าควรรันคำสั่งหรือสคริปต์ใด
ตัวอย่าง:
บรรทัดต่อไปนี้ในไฟล์ crontab จะกำหนดเวลางาน cron เพื่อเรียกใช้คำสั่ง/สคริปต์ทุก ๆ 30 นาทีที่ผ่านมา 5 ชั่วโมงทุกวันในสัปดาห์ตั้งแต่วันจันทร์ถึงวันเสาร์
* /30 5 * * 1-6สั่งการ/สคริปต์
นาที
ในฟิลด์นี้ เราระบุนาทีเมื่อเราต้องการให้ดำเนินการคำสั่ง มันถูกระบุตั้งแต่ 0 ถึง 59 * ในฟิลด์นี้หมายถึงการรันงานทุกนาที ในบรรทัด crontab ด้านบน */30 บอกให้งาน cron รันคำสั่ง/สคริปต์ที่ระบุทุก ๆ 30 นาที
ชั่วโมง
ในฟิลด์นี้ เราระบุชั่วโมงเมื่อเราต้องการให้ดำเนินการคำสั่ง มันถูกระบุตั้งแต่ 0 ถึง 23 * ในฟิลด์นี้หมายถึงการรันงานทุกชั่วโมง ในบรรทัด crontab ด้านบน ค่า 5 บอกให้งาน cron รันคำสั่ง/สคริปต์ที่ระบุทุก ๆ ห้าชั่วโมง
วันของเดือน
ในฟิลด์นี้ เราระบุวันของเดือนที่ต้องการให้ดำเนินการคำสั่ง มันถูกระบุจาก 1 ถึง 31 * ในช่องนี้หมายถึงทุกวัน ในบรรทัด crontab ด้านบน * บอกให้งาน cron รันคำสั่ง/สคริปต์ที่ระบุทุกวัน
เดือนของปี
ในฟิลด์นี้ เราระบุเดือนเฉพาะเมื่อเราต้องการให้ดำเนินการคำสั่ง มันถูกระบุตั้งแต่ 1 ถึง 12 * ในช่องนี้หมายถึงทุกเดือน ในบรรทัด crontab ด้านบน * บอกให้งาน cron รันคำสั่ง/สคริปต์ที่ระบุทุกเดือน
วันในสัปดาห์
ในฟิลด์นี้ เราระบุวันในสัปดาห์ที่ต้องการให้ดำเนินการคำสั่ง มันถูกระบุตั้งแต่ 0 ถึง 6 จากวันอาทิตย์ถึงวันเสาร์ (0 สำหรับวันอาทิตย์และ 6 สำหรับวันเสาร์) * ในช่องนี้หมายถึงทุกวันในหนึ่งสัปดาห์ ในบรรทัด crontab ด้านบน * บอกให้งาน cron รันคำสั่ง/สคริปต์ที่ระบุทุกวันในหนึ่งสัปดาห์
ตัวอย่างงาน Cron
นี่คือตัวอย่างบางส่วนของงาน cron:
เรียกใช้งาน cron ทุก 15 นาที
ในการกำหนดเวลางาน cron ให้ทำงานทุก ๆ 15 นาที ให้เพิ่มบรรทัดด้านล่างในไฟล์ crontab:
* /สิบห้า * * * *สั่งการ/สคริปต์เรียกใช้งาน cron ตี 5 ทุกวัน
หากต้องการกำหนดเวลางาน cron ให้ทำงานตอนตี 5 ทุกวัน ให้เพิ่มบรรทัดด้านล่างในไฟล์ crontab:
0 5 * * *สั่งการ/สคริปต์เรียกใช้งาน cron 5 โมงเย็นทุกวัน
หากต้องการกำหนดเวลางาน cron ให้ทำงานเวลา 17.00 น. ทุกวัน ให้เพิ่มบรรทัดด้านล่างในไฟล์ crontab:
0 17 * * *สั่งการ/สคริปต์เรียกใช้งาน cron เวลา 9.00 น. ของวันแรกของทุกเดือน
หากต้องการกำหนดเวลางาน cron ให้ทำงานเวลา 9.00 น. ของวันแรกของทุกเดือน ให้เพิ่มบรรทัดด้านล่างในไฟล์ crontab:
0 9 1 * *สั่งการ/สคริปต์เรียกใช้งาน cron ทุก ๆ ชั่วโมงทุกวันที่ 15 มีนาคม
หากต้องการกำหนดเวลางาน cron ทุกชั่วโมงในวันที่ 15 มีนาคม ให้เพิ่มบรรทัดด้านล่างในไฟล์ crontab:
0 * สิบห้า 3 *สั่งการ/สคริปต์เรียกใช้งาน cron ทุก 5 ชั่วโมง
หากต้องการกำหนดเวลางาน cron ทุก 5 ชั่วโมง ให้เพิ่มบรรทัดด้านล่างในไฟล์ crontab:
0 * /5 * * *สั่งการ/สคริปต์เรียกใช้งาน cron ทุก 15 นาที
ในการกำหนดเวลางาน cron ให้ทำงานทุก ๆ 15 นาที ให้เพิ่มบรรทัดด้านล่างในไฟล์ crontab:
* /สิบห้า * * * *การใช้สตริง
สามารถใช้สตริงต่อไปนี้เพื่อกำหนดงานได้:
- @รายชั่วโมง: เพื่อดำเนินงานทุก ๆ ชั่วโมง กล่าวคือ 0 * * * *
- @เที่ยงคืน: เพื่อดำเนินงานวันละครั้ง กล่าวคือ 0 0 * * *
- @รายวัน: เท่ากับเที่ยงคืน
- @รายสัปดาห์: เพื่อดำเนินงานสัปดาห์ละครั้ง กล่าวคือ 0 0 * * 0
- @รายเดือน: เพื่อดำเนินงานเดือนละครั้ง กล่าวคือ 0 0 1 * *
- @รายปี: เพื่อดำเนินงานปีละครั้ง กล่าวคือ 0 0 1 1 *
- @รายปี: เช่นเดียวกับ @ รายปี
- @รีบูต: เพื่อดำเนินการงานหนึ่งครั้งในทุกการเริ่มต้น
ตัวอย่างเช่น หากต้องการเรียกใช้สคริปต์หรือคำสั่งทุกสัปดาห์ รายการในไฟล์ crontab จะเป็น:
@คำสั่งรายสัปดาห์/สคริปต์ไดเรกทอรี Cron ที่กำหนดไว้ล่วงหน้า
มีไดเร็กทอรี cron ที่กำหนดไว้ล่วงหน้าใน Linux ซึ่งสคริปต์ที่เก็บไว้จะถูกดำเนินการโดยอัตโนมัติ หากเราวางสคริปต์ใดๆ ไว้ใต้ไดเร็กทอรีเหล่านี้ สคริปต์นั้นจะถูกดำเนินการโดยอัตโนมัติตามเวลาที่กำหนด
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
ตัวอย่างเช่น ในการรันสคริปต์เดือนละครั้ง คุณจะต้องวางไว้ใน /etc/cron.monthly
ดูงาน Cron
ดูงานสำหรับผู้ใช้ปัจจุบัน
ใช้คำสั่งต่อไปนี้เพื่อดูงาน cron ที่กำหนดเวลาไว้ทั้งหมดสำหรับผู้ใช้ปัจจุบัน:
$crontab-NSดูงานสำหรับผู้ใช้รูท
หากต้องการดูงานที่กำหนดเวลาไว้ทั้งหมดของผู้ใช้รูท ให้ออกคำสั่งต่อไปนี้ในเทอร์มินัล:
$แมว /ฯลฯ/crontabคุณจะต้องเข้าสู่ระบบในฐานะผู้ใช้รูทหรือเรียกใช้คำสั่งเป็น sudo
ดูงานสำหรับผู้ใช้รายอื่น
หากต้องการดูงานที่กำหนดเวลาไว้ทั้งหมดของผู้ใช้รายใดรายหนึ่ง ให้ออกคำสั่งต่อไปนี้ใน Terminal แทนที่ด้วยชื่อผู้ใช้จริง:
$sudocrontab-ยู <ชื่อผู้ใช้> -NSในการรันคำสั่งนี้ คุณจะต้องมีสิทธิ์ sudo
ดูงาน cron รายชั่วโมง
หากต้องการดูงาน cron ทั้งหมดที่ได้รับการกำหนดค่าให้ทำงานเป็นรายชั่วโมง ให้ออกคำสั่งต่อไปนี้ใน Terminal:
$ลส -NS /ฯลฯ/cron.hourlyดูงาน cron รายวัน
หากต้องการดูงาน cron ทั้งหมดที่ได้รับการกำหนดค่าให้ทำงานทุกวัน ให้ออกคำสั่งต่อไปนี้ใน Terminal:
$ลส -NS /ฯลฯ/cron.daily/ดูงาน cron รายสัปดาห์
หากต้องการดูงาน cron ทั้งหมดที่ได้รับการกำหนดค่าให้ทำงานทุกสัปดาห์ ให้ออกคำสั่งต่อไปนี้ใน Terminal:
$ลส -NS /ฯลฯ/cron.weekly/ดูงาน cron รายเดือน
หากต้องการดูงาน cron ทั้งหมดที่ได้รับการกำหนดค่าให้ทำงานเป็นรายเดือน ให้ออกคำสั่งต่อไปนี้ใน Terminal:
$ลส -NS /ฯลฯ/cron.monthly/สำรองข้อมูลงาน Cron ทั้งหมด
ขอแนะนำให้สำรองข้อมูลงาน cron ทั้งหมดในไฟล์เพื่อให้คุณสามารถกู้คืนในกรณีที่ถูกลบ หากต้องการสำรองข้อมูลงานปัจจุบันทั้งหมด ให้ใช้ตัวดำเนินการเปลี่ยนเส้นทางเพื่อเปลี่ยนเส้นทางเอาต์พุตของ crontab -l ไปยังไฟล์
$crontab-NS >backup_cron.txtการลบงาน Cron ที่กำหนดเวลาไว้ทั้งหมด
ในการลบงาน cron ที่กำหนดเวลาไว้ทั้งหมด ให้ใช้แฟล็ก -r ดังนี้:
$crontab-NSอนุญาต Cron
เราสามารถจำกัดการเข้าถึงคำสั่ง crontab ผ่านสองไฟล์: / etc/cron.allow และ / etc/cron.deny
- /etc/cron.allow – เพิ่มผู้ใช้ (หนึ่งรายต่อบรรทัด) ที่คุณต้องการอนุญาตให้เข้าถึงคำสั่ง crontab ผู้ใช้เหล่านี้สามารถเรียกใช้งานตามกำหนดการได้
- /etc/cron.deny – เพิ่มผู้ใช้ (หนึ่งรายต่อบรรทัด) ที่คุณต้องการปฏิเสธการเข้าถึงคำสั่ง crontab ผู้ใช้เหล่านี้ไม่สามารถเรียกใช้งานที่กำหนดเวลาไว้
เครื่องกำเนิดไวยากรณ์ Crontab
มีบางเว็บไซต์ที่อนุญาตให้สร้างไวยากรณ์สำหรับ crontabs เว็บไซต์เหล่านี้ช่วยให้สร้างนิพจน์ crontab ได้ง่ายขึ้นโดยไม่ต้องจำไวยากรณ์ แม้ว่าจะมีเว็บไซต์ต่าง ๆ สำหรับตัวสร้างไวยากรณ์เช่น crontabgenerator.com , crontab-generator.org , และ cronmaker.com . สิ่งที่ฉันชอบมากที่สุดและพบว่ามีประโยชน์คือ crontab.guru . ตามการป้อนข้อมูลของผู้ใช้ จะสร้างนิพจน์ crontab ที่คุณสามารถคัดลอกและวางลงในไฟล์ crontab ได้
บทสรุป
ในบทช่วยสอนนี้ เราได้อธิบายพื้นฐานของงาน cron ไวยากรณ์ และวิธีตั้งค่า เราได้พูดคุยถึงวิธีการดูงาน cron การสร้างข้อมูลสำรอง และการลบออกหากไม่ต้องการอีกต่อไป