คู่มือการใช้งาน Crontab – การตั้งเวลางานใน Linux

การทำงานเดิมๆ ซ้ำแล้วซ้ำเล่า ไม่ว่าจะเป็นรายวัน รายสัปดาห์ หรือรายเดือน ล้วนเป็นงานที่เมื่อเวลาผ่านไป ความล้าและเสื่อมถอยขึ้นอยู่กับความซับซ้อน ซึ่งเราละทิ้งมันไป วิธีแก้ไขปัญหานี้คือทำให้เป็นอัตโนมัติมากที่สุด เหมือนกับ Windows ช่วยให้เราทำงานบางอย่างโดยอัตโนมัติ ลินุกซ์ ยังเสนอตัวเลือกนี้ผ่าน Crontab แต่ไม่ใช่เฉพาะ

หากเราต้องการทำให้ Linux ทำงานโดยอัตโนมัติ ไม่ว่าจะเป็นการทำสำเนาสำรอง สร้างรายงาน แก้ไขการกำหนดค่าหรืออย่างอื่น วิธีแก้ไขคือใช้ Crontab ร่วมกับ Cron เนื่องจากเราต้องการสองอย่างซึ่งแตกต่างจาก Windows แอปพลิเคชันขั้นต่ำ

คู่มือการใช้งาน Crontab

Crontab คืออะไร?

Crontab เป็นไฟล์ข้อความที่สร้างการทำงานอัตโนมัติตามชุดของพารามิเตอร์ ซึ่งก็คือไฟล์ข้อความนั่นเอง อ่านโดย Cron . แอปพลิเคชันทั้งสองมีให้ใช้งานโดยกำเนิดในลีนุกซ์รุ่นทั่วไปส่วนใหญ่ ดังนั้นจึงไม่จำเป็นต้องติดตั้งที่เก็บใด ๆ บนคอมพิวเตอร์ของเราเพื่อให้สามารถใช้งานได้

Crontab เสนอชุดสคริปต์ให้เรา หนึ่งชุดต่อบรรทัด ซึ่งช่วยให้เรากำหนดเวลาที่แน่นอนที่เราต้องการได้เอง เพื่อทำงานอย่างใดอย่างหนึ่งหรือหลายอย่าง และการทำซ้ำเมื่อเวลาผ่านไป อันที่จริง ชื่อของมันมาจากคำภาษากรีก Cronos ซึ่งหมายถึงเวลา แต่ละสคริปต์มีข้อมูลเกี่ยวกับวันที่ที่แน่นอนซึ่งควรดำเนินการ ซึ่งระบุวันที่ด้วยชุดตัวเลข สำหรับตัวอย่าง ปุ่ม สคริปต์ต่อไปนี้จะทำงาน nfsfind ทุกวันอาทิตย์เวลา 5:30 น. ในตอนเช้า

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

ตัวเลขสองตัวแรกแสดงถึงชั่วโมงที่คำสั่งจะถูกดำเนินการ ตัวเลขแรกเป็นนาทีและวินาทีเป็นชั่วโมง รูปแบบเวลาที่ Crontab ใช้คือ 24 ชั่วโมง ดังนั้นหากเราต้องการทำงานตอน 5 โมงเย็น นี่จะเป็นเลข 17 เครื่องหมายดอกจันแทนค่าทั้งหมด ในขณะที่เลข 0 ตรงกับวันอาทิตย์

อย่าสับสนระหว่าง Cron กับ Crontab

ในขณะที่ Crontab ช่วยให้เราสามารถดำเนินการตามระบบของเราได้ ระบบอัตโนมัติ สิ่งเหล่านี้ถูกดำเนินการแม้ว่าจะไม่เฉพาะกับแอปพลิเคชัน Cron ซึ่งเป็นแอปพลิเคชันที่ทำงานในพื้นหลังและดำเนินการงานทั้งหมดที่เรากำหนดค่าไว้ก่อนหน้านี้ใน Crontab แอปพลิเคชันนี้ใช้เวลาระบบของเราในการดำเนินการ ดังนั้นจึงเป็นเรื่องสำคัญหากเราใช้เครื่องเสมือน ทั้งเวลาของเครื่องเกสต์และคอมพิวเตอร์ของเราจะเท่ากันเสมอ เนื่องจากมิฉะนั้น เวลาที่ตั้งโปรแกรมไว้จะไม่ตรงกัน ถูกต้อง.

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

ผู้ใช้บางคนไม่สามารถสร้างไฟล์ Crontab เพื่อให้งานระบบเป็นไปโดยอัตโนมัติ ผู้ดูแลระบบมีความเป็นไปได้ที่จะอนุญาตหรือปฏิเสธตัวเลือกนี้ผ่านไฟล์ cron.allow หรือ cron.den ตามลำดับ ไฟล์ที่พบใน /etc/cron.do /etc/ ขึ้นอยู่กับเวอร์ชันของการแจกจ่าย Linux ที่เรามี ติดตั้งบนคอมพิวเตอร์ของเรา

วิธีทำให้งานเป็นอัตโนมัติใน Linux

ดังที่เราได้กล่าวไว้ข้างต้น สคริปต์ Crontab จะเริ่มต้นด้วยวันที่ที่เราต้องการให้ดำเนินการตามด้วยคำสั่ง ไวยากรณ์ของ Crontab มีดังต่อไปนี้

การจัดการตารางเวลา

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • นาที ซึ่งอาจเป็นตั้งแต่ 0 ถึง 59
  • เวลา ดังที่เราได้กล่าวไปแล้ว Crontab ใช้เวลาแบบ 24 ชั่วโมง ดังนั้นช่วงของตัวเลขจึงอยู่ระหว่าง 0 ถึง 23
  • วันของเดือนไม่มีความลึกลับมากนักในพารามิเตอร์นี้ตั้งแต่ 1 ถึง 31
  • เดือนตั้งแต่ 1 ถึง 12
    • มกราคม
    • กุมภาพันธ์ 2
    • มีนาคม
    • เมษายน
    • พฤษภาคม
    • มิถุนายน
    • กรกฎาคม
    • สิงหาคม
    • กันยายน 9
    • ตุลาคม 10
    • พฤศจิกายน 11
    • 12 ธันวาคม
  • วันในสัปดาห์ตั้งแต่ 0 ถึง 6 วันอาทิตย์เป็นเลข 0 แม้ว่า Crontab บางเวอร์ชันจะอนุญาตให้ใช้เลข 7 ได้เช่นกัน ด้วยวิธีนี้ รหัสสำหรับวันในสัปดาห์คือ
    • วันอาทิตย์ที่ 0
    • 1 วันจันทร์
    • 2 วันอังคาร
    • 3 วันพุธ
    • 4 พฤหัสบดี
    • 5 วันศุกร์
    • 6 เสาร์

แต่นอกจากนี้ เรายังสามารถใช้เครื่องหมายดอกจัน (*) เพื่อระบุค่าที่เป็นไปได้ทั้งหมดของตัวแปรได้อีกด้วย หากเราต้องการกำหนดค่าหลายค่า เราสามารถทำได้โดยใช้เครื่องหมายจุลภาค (,) หรือช่วงของค่าที่คั่นด้วยเครื่องหมายยัติภังค์ (-) เราสามารถกำหนดขั้นตอนต่าง ๆ ได้ด้วย “/”

หากยังไม่ชัดเจน เราจะแสดงรหัสเวลาที่เราสามารถใช้ในการทำงานเป็นระยะๆ ตามช่วงเวลา

  • 0 * * * * การใช้รหัสเวลา สคริปต์จะดำเนินการทุกชั่วโมงในชั่วโมง
  • 0 0 * * * ทุกวัน สคริปต์จะถูกดำเนินการเพียงครั้งเดียว
  • 0 0 * * 0 สคริปต์ทำงานสัปดาห์ละครั้ง
  • 0 0 1 * * จะดำเนินการเดือนละครั้ง
  • 0 0 1 1 * สคริปต์จะดำเนินการปีละครั้ง

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

crontab nombre-archivo

หากเราไม่ต้องการสร้างใหม่ หรือเราสร้างไว้แล้วและต้องการแก้ไข ให้ใช้คำสั่งนี้

crontab -e

หากเราต้องการลบไฟล์ Crontab ที่สร้างขึ้น

crontab -d

ด้วยคำสั่งต่อไปนี้ เราสามารถแสดงรายการงานทั้งหมดที่รวมอยู่ในไฟล์ Crontab

crontab -d

ผู้ดูแลระบบสามารถจำกัดการใช้ระบบอัตโนมัติโดยแก้ไขไฟล์ cron.allow หรือ cron.den ไฟล์ที่พบใน /etc/cron.d/ หรือ /etc/ หากเราไม่ได้แก้ไขตำแหน่งก่อนหน้านี้

ทำงานอัตโนมัติ

ในการแก้ไขไฟล์ Crontab ที่เราสร้างขึ้น เราจะใช้โปรแกรมแก้ไขข้อความที่มีอยู่ในลีนุกซ์ทุกรุ่น แม้ว่าเราจะสามารถแก้ไขได้โดยตรงจาก Crontab โดยการเพิ่มตัวแปร -e

nano nombrearchivo

เราแนะนำรหัสตัวเลขพร้อมด้วยเครื่องหมายดอกจันและสคริปต์ที่เราต้องการดำเนินการ ต่อไป เราต้องให้สิทธิ์ Cron เพื่อเรียกใช้ มิฉะนั้นจะไม่ทราบว่ามีอยู่และจะไม่สามารถเรียกใช้ได้ ในการทำเช่นนี้เราจะใช้คำสั่ง

chmod ugo+x nombrearchivo

ในขั้นต้น การใช้ Crontab เพื่อทำให้งานเป็นแบบอัตโนมัติดูเหมือนจะไม่ง่ายเลย และเป็นการเตือนความจำของ Linux (เกือบทั่วไป) ที่ต้องใช้บรรทัดคำสั่งสำหรับทุกสิ่งในทางปฏิบัติ ดังนั้นจึงเป็นการจำกัดผู้ใช้จำนวนมากขึ้นจากการใช้ Linux เป็นระบบปฏิบัติการในหนึ่งวัน- พื้นฐานวันนี้ .

ตัวกำหนดตารางเวลางานของ Windows ใช้ส่วนต่อประสานกราฟิกที่ไม่ใช้งานง่ายหากไม่มีความรู้ที่จำเป็น อย่างไรก็ตาม มันใช้งานง่ายกว่าที่ Linux นำเสนอผ่านบรรทัดคำสั่ง

ตัวอย่างการทำงานของ Crontab และ Cron

สิ่งแรกที่เราต้องทำเพื่อให้งานอัตโนมัติใน Linux คือการสร้างไฟล์ที่เราจะรวมคำสั่งทั้งหมดที่เราต้องการให้ดำเนินการบนคอมพิวเตอร์ในเวลาที่เรากำหนดค่า ในตัวอย่างนี้ เราจะสร้างไฟล์ "ทดสอบ" ที่จะรับผิดชอบในการลบไฟล์และโฟลเดอร์ว่างทั้งหมดที่พบในไดเร็กทอรี tmp โดยเราจะป้อนคำสั่งต่อไปนี้

crontab prueba

ต่อไป เราต้องป้อนคำสั่ง (หรือคำสั่งที่คั่นด้วยเครื่องหมายอัฒภาค “;” โดยไม่มีเครื่องหมายอัญประกาศ) ในตัวอย่างนี้ เราจะใช้ Crontab เพื่อลบไฟล์ในโฟลเดอร์ tmp

find /tmp -type f -empty -delete

ต่อไป เราแก้ไขไฟล์เพื่อเพิ่มกำหนดการ กล่าวคือ เมื่อเราต้องการให้งานที่เราป้อนในไฟล์ดำเนินการ

crontab -e

เพื่อให้ดำเนินการทุกวันเวลา 10 โมงเช้าเราต้องเพิ่ม 0 10 * * * ก่อนสคริปต์โดยเว้นบรรทัดดังนี้

0 10 * * * find /tmp -type f -empty -delete

หากเราต้องการให้ดำเนินการในเวลาอื่น เราก็แค่แก้ไขตัวเลข 10 สำหรับชั่วโมง (ในรูปแบบ 24 ชั่วโมง) ที่เราต้องการให้ดำเนินการ เรายังสามารถใช้ รหัสเวลา ที่เราแสดงไว้ในส่วนการจัดการการเขียนโปรแกรมเพื่อกำหนดค่า สุดท้าย เราใช้คำสั่งต่อไปนี้เพื่อให้ Cron สามารถเรียกใช้ไฟล์การทำงานอัตโนมัติที่เราสร้างขึ้น

[code]chmod ugo+x prueba

ทางเลือกแทน Cron

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

อนาครอน

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

sudo apt install anacron

โครนี่

Cronie มอบประสบการณ์ที่สมบูรณ์มากกว่า Cron ให้กับเรา และชุดแอปพลิเคชันขนาดเล็ก (รวมถึง Anacron รวมอยู่ด้วย) และทำให้เราสามารถตั้งโปรแกรมเวิร์กโฟลว์ได้อย่างรวดเร็วและง่ายดายผ่าน Crontab ซึ่งแตกต่างจาก Anacron ในการติดตั้ง Cronie นั้นไม่มีอยู่ในที่เก็บ Linux ดังนั้นเราต้องไปที่หน้าเว็บของมัน GitHub เพื่อดาวน์โหลดหรือใช้คำสั่งต่อไปนี้

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz