ค้นหาเว็บไซต์

11 ตัวอย่างงาน Cron Scheduling ใน Linux


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

การจัดการงานที่ใช้บ่อยด้วยตนเองเป็นงานที่น่ากังวลสำหรับผู้ดูแลระบบ และงานดังกล่าวสามารถกำหนดเวลาและรันได้โดยอัตโนมัติในเบื้องหลังโดยไม่ต้องมีการแทรกแซงของมนุษย์โดยใช้ cron daemon ใน Linux หรือระบบปฏิบัติการที่คล้ายกับ Unix

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

Cron ตื่นขึ้นมาทุกนาทีและตรวจสอบงานที่กำหนดเวลาไว้แบบนับได้ – Crontab (CRON TABle) เป็นตารางที่เราสามารถกำหนดเวลางานประเภทดังกล่าวที่ทำซ้ำได้ .

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

Crontab ในลินุกซ์

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

  • นาที (คงค่าไว้ระหว่าง 0-59)
  • ชั่วโมง (เก็บค่าระหว่าง 0-23)
  • วันของเดือน (เก็บค่าไว้ระหว่าง 1-31)
  • เดือนของปี (เก็บค่าระหว่าง 1-12 หรือ ม.ค.-ธ.ค. คุณสามารถใช้ตัวอักษรสามตัวแรกของชื่อแต่ละเดือนได้ เช่น ม.ค. หรือ มิ.ย.< /แข็งแกร่ง>.)
  • วันในสัปดาห์ (เก็บค่าระหว่าง 0-6 หรือ อาทิตย์-เสาร์ ในที่นี้คุณสามารถใช้ตัวอักษรสามตัวแรกของชื่อแต่ละวัน เช่น อาทิตย์หรือพุธ< /แข็งแกร่ง>. )
  • Command – /path/to/command หรือสคริปต์ที่คุณต้องการกำหนดเวลา

1. แสดงรายการรายการ Crontab

แสดงรายการหรือจัดการงานด้วยคำสั่ง crontab พร้อมตัวเลือก -l สำหรับผู้ใช้ปัจจุบัน

crontab -l

00 10 * * * /bin/ls >/ls.txt

2. แก้ไขรายการ Crontab

หากต้องการแก้ไขรายการ crontab ให้ใช้ -e ตัวเลือกที่แสดงด้านล่าง ตัวอย่างด้านล่างจะเปิดงานที่กำหนดเวลาไว้ในตัวแก้ไข VI ทำการเปลี่ยนแปลงที่จำเป็นและออกจากการกดปุ่ม :wq ซึ่งจะบันทึกการตั้งค่าโดยอัตโนมัติ

crontab -e

3. แสดงรายการงาน Cron ตามกำหนดเวลาของผู้ใช้

ในการแสดงรายการงานที่กำหนดเวลาไว้ของผู้ใช้เฉพาะที่เรียกว่า tecmint โดยใช้ตัวเลือกเป็น -u (ผู้ใช้) และ -l (รายการ)

crontab -u tecmint -l

no crontab for tecmint

หมายเหตุ: เฉพาะผู้ใช้ root เท่านั้นที่มีสิทธิ์สมบูรณ์ในการดูรายการ crontab ของผู้ใช้รายอื่น ผู้ใช้ปกติไม่สามารถดูผู้อื่นได้

4. ลบรายการ Crontab

ข้อควรระวัง: Crontab ที่มี -r พารามิเตอร์จะลบงานที่กำหนดเวลาไว้เสร็จสมบูรณ์โดยไม่มีการยืนยันจาก Crontab ใช้ตัวเลือก -i ก่อนที่จะลบ crontab ของผู้ใช้

crontab -r

5. แจ้งก่อนที่จะลบ Crontab

crontab ด้วยตัวเลือก -i จะแจ้งให้คุณยืนยันจากผู้ใช้ก่อนที่จะลบ crontab ของผู้ใช้

crontab -i -r

crontab: really delete root's crontab?

6. อักขระพิเศษที่อนุญาต (*, -, /, ?, #)

  • เครื่องหมายดอกจัน(*) – จับคู่ค่าทั้งหมดในช่องหรือค่าที่เป็นไปได้
  • ยัติภังค์(-) – เพื่อกำหนดช่วง
  • เครื่องหมายสแลช (/) – ฟิลด์ที่ 1 /10 หมายถึงทุก ๆ สิบนาทีหรือเพิ่มช่วง
  • จุลภาค (,) – เพื่อแยกรายการ

7. กำหนดการ Cron ทั่วทั้งระบบ

ผู้ดูแลระบบสามารถใช้ไดเร็กทอรี cron ที่กำหนดไว้ล่วงหน้าดังที่แสดงด้านล่าง

  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

8. กำหนดเวลางานตามเวลาที่กำหนด

งานด้านล่างจะลบไฟล์และไดเร็กทอรีว่างจาก /tmp เวลา 00:30 ทุกวัน คุณต้องระบุชื่อผู้ใช้เพื่อดำเนินการคำสั่ง crontab ในตัวอย่างด้านล่าง ผู้ใช้ root กำลังทำงาน cron

crontab -e

30 0 * * *   root   find /tmp -type f -empty -delete

9. สตริงพิเศษสำหรับกำหนดการทั่วไป

@reboot

คำสั่งจะทำงานเมื่อระบบรีบูต

@daily

วันละครั้งหรืออาจใช้ @midnight

@weekly

สัปดาห์ละครั้ง

@yearly

ปีละครั้ง เราสามารถใช้คีย์เวิร์ด @annually ได้เช่นกัน

จำเป็นต้องแทนที่ห้าฟิลด์ของคำสั่ง cron ด้วยคำหลักหากคุณต้องการใช้คำเดียวกัน

10. คำสั่งหลายคำสั่งด้วยเครื่องหมายแอมเปอร์แซนด์คู่ (&&)

ในตัวอย่างด้านล่าง command1 และ command2 จะทำงานทุกวัน

crontab -e

@daily <command1> && <command2>

11. ปิดการใช้งานการแจ้งเตือนทางอีเมล

ตามค่าเริ่มต้น cron จะส่งอีเมลไปยังบัญชีผู้ใช้ที่ดำเนินการ cronjob หากคุณต้องการปิดการใช้งานให้เพิ่มงาน cron ของคุณตามตัวอย่างด้านล่าง การใช้ตัวเลือก >/dev/null 2>&1 ที่ท้ายไฟล์จะเปลี่ยนเส้นทางเอาต์พุตทั้งหมดของผลลัพธ์ cron ภายใต้ /dev/null

[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1

บทสรุป: งานอัตโนมัติอาจช่วยให้เราดำเนินงานได้ดีขึ้น ปราศจากข้อผิดพลาด และมีประสิทธิภาพ คุณสามารถดูข้อมูลเพิ่มเติมได้ที่หน้าคู่มือของ crontab โดยพิมพ์คำสั่ง 'man crontab' ในเทอร์มินัลของคุณ


สงวนลิขสิทธิ์. © Linux-Console.net • 2019-2024