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 ตั้งใจไว้ สำหรับเครื่องที่จะดับภายในหนึ่งวันหรือสัปดาห์
หากคุณทราบวิธีอื่น โปรดแบ่งปันกับเราโดยใช้แบบฟอร์มความคิดเห็นด้านล่าง