สับสนเกี่ยวกับความสัมพันธ์ระหว่าง cron และ anacron


19

ฉัน googling อย่างไร้ผลที่จะอธิบายคำอธิบายทั่วไปว่า cron และ anacron ทำงานร่วมกันอย่างไร หน้าคนลึกเกินไปสำหรับฉันที่จุดนี้

ฉันสับสนเพราะฉันเพิ่มงานลงใน crontab และได้ผล แต่เมื่อฉันลบออกจาก crontab พวกเขายังคงทำงานภายใต้ anacron ฉันเห็นงานใน /etc/cron.daily แต่ฉันไม่แน่ใจว่าพวกเขาไปถึงที่นั่นได้อย่างไร cron ทำงานบนระบบของฉันเสมอ แต่ไม่ใช่ anacron อันที่จริงฉันเห็น anacron เริ่มต้นโดย cron!

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

คำตอบ:


19

ทั้งสองcronและanacronเป็น daemons ที่สามารถกำหนดเวลาการดำเนินการงานที่เกิดซ้ำตามเวลาที่กำหนดโดยผู้ใช้

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

ในอีกทางหนึ่งanacronคือ 'สมัย' และถูกออกแบบมาสำหรับระบบที่ไม่ได้ทำงานตลอด 24 ชั่วโมงทุกวัน เพื่อให้anacronใช้งานได้ใช้ไฟล์ที่มีการประทับเวลาเพื่อค้นหาว่าเมื่อใดที่คำสั่งนั้นถูกดำเนินการครั้งล่าสุด นอกจากนี้ยังเก็บรักษาไฟล์/etc/anacrontabเช่นเดียวกับที่cronทำ นอกจากนี้cron.dailyทำงาน anacron ทุกวัน ดังนั้นanacronสามารถทำงานได้วันละครั้ง แต่cronสามารถทำงานได้บ่อยเท่าทุกนาที

จากman anacrontab:

เมื่อดำเนินการ Anacron จะอ่านรายการงานจากไฟล์กำหนดค่าปกติ / etc / anacrontab (ดูที่ anacrontab (5)) ไฟล์นี้มีรายการงานที่ Anacron ควบคุม แต่ละรายการงานระบุช่วงเวลาเป็นวัน, ความล่าช้าเป็นนาที, ตัวระบุงานที่ไม่ซ้ำกัน, และคำสั่งเชลล์

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

หลังจากที่คำสั่งออกแล้ว Anacron จะบันทึกวันที่ในไฟล์ประทับเวลาพิเศษสำหรับงานนั้นเพื่อให้สามารถทราบได้ว่าเมื่อใดที่จะเรียกใช้งานอีกครั้ง ใช้เฉพาะวันที่สำหรับการคำนวณเวลา ไม่ได้ใช้ชั่วโมง

ซึ่งหมายความว่าหากมีการจัดตารางงานให้เรียกใช้ทุกวันและปิดคอมพิวเตอร์ในช่วงเวลานั้นเมื่อมีการเรียกใช้ anacron จะเห็นว่างานนั้นถูกเรียกใช้มานานกว่า 24 ชั่วโมงแล้วและดำเนินงานอย่างถูกต้อง

ตัวอย่างเช่นหากคุณระบุสิ่งต่อไปนี้ใน/etc/anacrontab:

7       15      test.daily      /bin/sh /home/username/script.sh

และในวันที่script.shงานควรจะถูกดำเนินการหากระบบไม่ทำงานanacronจะดำเนินการscript.sh15 นาทีหลังจากระบบกลับมาทำงาน

อ้างอิงน้อย:


ขอบคุณที่การสอนแบบ Digital Ocean นั้นดีมากโดยเฉพาะอย่างยิ่ง ไม่แน่ใจว่าฉันพลาดมันไปได้อย่างไรฉันจึงชอบลิงค์นี้
หินอ่อนออร์แกนิก

ขอบคุณ โดย "cron.daily ทำงาน anacron ทุก ๆ ชั่วโมง" คุณผู้ชาย "cron.daily ทำงาน anacron ทุกวัน" แทนหรือไม่?
ทิม

ขอบคุณสำหรับสิ่งนี้. - ฉันได้ลบanacronVPS ทั้งหมดของฉันออกเนื่องจากพวกเขาเป็นระบบที่เปิดอยู่ตลอดเวลา (ไม่รู้ว่ามันไปถึงที่นั่นได้อย่างไรฉันไม่ได้ยินเลย) crontabรายการของฉัน(รายวันรายสัปดาห์ ... ) ตอนนี้ทำงานได้ตามเวลาที่คาดหวัง
Adambean
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.