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

Cron Vs Anacron: วิธีกำหนดเวลางานโดยใช้ Anacron บน Linux


ในบทความนี้ เราจะอธิบาย cron และ anacron และยังแสดงวิธีการตั้งค่า anacron บน Linux อีกด้วย เราจะกล่าวถึงการเปรียบเทียบยูทิลิตี้ทั้งสองนี้ด้วย

หากต้องการกำหนดเวลางานตามเวลาที่กำหนดหรือในภายหลัง คุณสามารถใช้คำสั่ง 'at' หรือ 'batch' และในการตั้งค่าคำสั่งให้ทำงานซ้ำ ๆ คุณสามารถใช้คำสั่ง < สิ่งอำนวยความสะดวกcron และ anacron

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

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

หากต้องการสร้างไฟล์ crontab ส่วนตัว เพียงพิมพ์ดังต่อไปนี้:

crontab -e

วิธีการตั้งค่า Anacron ใน Linux

Anacron ใช้เพื่อรันคำสั่งเป็นระยะๆ โดยมีความถี่ที่กำหนดเป็นวัน มันทำงานแตกต่างจาก cron เล็กน้อย; ถือว่าเครื่องไม่ได้เปิดอยู่ตลอดเวลา

เหมาะสำหรับการรันงานตามกำหนดเวลารายวัน รายสัปดาห์ และรายเดือนที่ปกติรันโดย cron บนเครื่องที่ไม่รันตลอด 24 ชั่วโมงทุกวัน เช่น แล็ปท็อปและเครื่องเดสก์ท็อป

สมมติว่าคุณมีงานที่กำหนดเวลาไว้ (เช่น สคริปต์สำรอง) ที่จะรันโดยใช้ cron ทุกเที่ยงคืน อาจเป็นเมื่อคุณอยู่ในโหมดสลีป และเดสก์ท็อป/แล็ปท็อปของคุณปิดอยู่ตามเวลานั้น สคริปต์สำรองข้อมูลของคุณจะไม่ถูกดำเนินการ

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

Anacron ทำงานอย่างไรใน Linux

งาน anacron แสดงอยู่ใน /etc/anacrontab และสามารถกำหนดเวลางานได้โดยใช้รูปแบบด้านล่าง (ความคิดเห็นภายในไฟล์ anacrontab ต้องขึ้นต้นด้วย #)

period   delay   job-identifier   command

จากรูปแบบข้างต้น:

  • ระยะเวลา – นี่คือความถี่ของการปฏิบัติงานที่ระบุเป็นวันหรือเป็น @daily, @weekly หรือ @monthly วันละครั้ง สัปดาห์ หรือเดือน คุณสามารถใช้ตัวเลขได้เช่นกัน: 1 – รายวัน, 7 – รายสัปดาห์, 30 – รายเดือน และ N – จำนวนวัน
  • ความล่าช้า – คือจำนวนนาทีที่ต้องรอก่อนดำเนินการงาน
  • job-id – เป็นชื่อเฉพาะสำหรับงานที่เขียนในไฟล์บันทึก

หากต้องการดูไฟล์ตัวอย่าง ให้พิมพ์:

ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • คำสั่ง – เป็นคำสั่งหรือเชลล์สคริปต์ที่จะดำเนินการ
นี่คือสิ่งที่เกิดขึ้นจริง:
  • Anacron จะตรวจสอบว่างานได้รับการดำเนินการภายในระยะเวลาที่กำหนดในช่องระยะเวลาหรือไม่ ถ้าไม่เช่นนั้น ระบบจะดำเนินการคำสั่งที่ระบุในช่องคำสั่งหลังจากรอตามจำนวนนาทีที่ระบุในฟิลด์หน่วงเวลา
  • เมื่อดำเนินการงานแล้ว งานจะบันทึกวันที่ในไฟล์การประทับเวลาในไดเร็กทอรี /var/spool/anacron พร้อมด้วยชื่อที่ระบุในฟิลด์ job-id (ชื่อไฟล์การประทับเวลา)

ตอนนี้เรามาดูตัวอย่างกัน สิ่งนี้จะเรียกใช้สคริปต์ /home/aaronkilik/bin/backup.sh ทุกวัน:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

หากเครื่องปิดอยู่ในขณะที่งาน backup.sh คาดว่าจะรัน Anacron จะรัน 10 นาทีหลังจากเปิดเครื่อง โดยไม่ต้องรออีก 7 วัน

มีตัวแปรสำคัญสองตัวแปรในไฟล์ Anacrontab ที่คุณควรเข้าใจ:

  • START_HOURS_RANGE – กำหนดช่วงเวลาที่งานจะเริ่ม (เช่น ดำเนินงานในช่วงเวลาต่อไปนี้เท่านั้น)
  • RANDOM_DELAY – กำหนดความล่าช้าแบบสุ่มสูงสุดที่เพิ่มให้กับความล่าช้าของงานที่ผู้ใช้กำหนด (โดยค่าเริ่มต้นคือ 45)

ไฟล์ Anacrontab ของคุณจะมีลักษณะเช่นนี้

/etc/anacrontab: configuration file for anacron

See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

ต่อไปนี้เป็นการเปรียบเทียบระหว่าง cron และ anacron เพื่อช่วยให้คุณเข้าใจว่าเมื่อใดควรใช้อย่างใดอย่างหนึ่ง

It’s a daemon

มันไม่ใช่ภูต

Appropriate for server machines

เหมาะสำหรับเครื่องเดสก์ท็อป/แล็ปท็อป

Enables you to run scheduled jobs every minute

ช่วยให้คุณสามารถรันงานที่กำหนดเวลาไว้ได้ในแต่ละวันเท่านั้น

Doesn’t executed a scheduled job when the machine if off

หากเครื่องปิดเมื่อถึงกำหนดงานที่กำหนดเวลาไว้ เครื่องจะดำเนินการงานที่กำหนดเวลาไว้เมื่อเปิดเครื่องในครั้งถัดไป

Can be used by both normal users and root

สามารถใช้งานได้โดยรูทเท่านั้นเว้นแต่เป็นอย่างอื่น (เปิดใช้งานสำหรับผู้ใช้ปกติที่มีการกำหนดค่าเฉพาะ)

ความแตกต่างที่สำคัญระหว่าง cron และ anacron คือ cron ทำงานอย่างมีประสิทธิภาพบนเครื่องที่ทำงานอย่างต่อเนื่องในขณะที่ anacron ตั้งใจไว้ สำหรับเครื่องที่จะดับภายในหนึ่งวันหรือสัปดาห์

หากคุณทราบวิธีอื่น โปรดแบ่งปันกับเราโดยใช้แบบฟอร์มความคิดเห็นด้านล่าง