زمانبندی وظایف نقشی حیاتی جهت خودکارسازی فرآیندها در سیستمهای شبهیونیکس ایفا میکند. در این میان، موضوع مقایسه Cron و Anacron برای بسیاری از مدیران سیستم اهمیت ویژهای دارد؛ زیرا انتخاب نادرست میتواند منجر به اجرا نشدن برخی وظایف یا کاهش دقت زمانبندی شود. اگرچه هر دو با هدف سادهسازی و خودکارسازی وظایف تکراری طراحی شدهاند اما از نظر کارکرد، دقت اجرا و موارد استفاده ایدهآل، تفاوتهای قابلتوجهی دارند.
این مقاله به مقایسه جامع Cron و Anacron میپردازد، نحوه عملکرد آنها را توضیح میدهد، نمونههای عملی ارائه میکند و روش انتخاب بین این دو را بررسی مینماید. درک صحیح این ابزارها به مدیران سیستم کمک میکند تا فرآیندهای خودکارسازی و قابلیت اطمینان سیستم را بهطور مؤثری بهبود دهند.
Cron چیست؟
جهت مقایسه Cron و Anacron ابتدا باید با Cron آشنا شوید. Cron یک ابزار برنامهریزی وظایف، مبتنی بر زمان (Time-based Job Scheduler) می باشد که بهطور خاص برای سیستمعاملهای شبه یونیکس طراحی شده است. این ابزار به طور گسترده برای خودکارسازی وظایف تکراری مانند پشتیبانگیری، بروزرسانیهای سیستمی و عملیات نگهداری سیستم مورد استفاده قرار میگیرد.
ویژگی کلیدی Cron، توانایی اجرای وظایف در فواصل زمانی از پیش تعیینشده با دقت بالا می باشد. این ویژگی باعث میشود تا Cron بهویژه برای محیطهایی که سیستم ۲۴ ساعته و ۷ روز هفته فعال است (مانند سرورها) مناسب باشد.

تصویر(1)
Cron از طریق فایلهای پیکربندی به نام crontab (مخفف “cron table”) عمل میکند. این فایلها شامل فهرستی از وظایف زمانبندیشده هستند که هرکدام با زمان و تناوب خاصی تعریف شدهاند. سرویس یا پردازهای به نام Cron daemon یا (crond) در پسزمینه سیستم اجرا میشود و بهصورت پیوسته این فایلهای crontab را بررسی میکند تا وظایف را در زمان تعیینشده اجرا نماید.
با استفاده از Cron، کاربران میتوانند وظایف را بر حسب دقیقه زمانبندی کنند؛ این موضوع تضمینکننده ثبات، کارایی و قابلیت پیشبینی بالا در عملیات خودکار است.
Cron چگونه کار میکند؟
در ادامه بررسی مقایسه Cron و Anacron، بهتر است نحوه عملکرد Cron را دقیقتر بشناسید. Cron برای تعریف وظایف از crontab استفاده میکند. هر کاربر در سیستم میتواند crontab اختصاصی خود را داشته باشد که شامل دستورات موردنظر و زمان اجرای آنها است.
سرویس crond بهطور مداوم در پسزمینه فعال بوده و ورودیهای crontab را بررسی میکند؛ بهمحض آنکه زمان سیستم با مقدار تعریفشده در crontab مطابقت یابد، دستور مربوطه را اجرا مینماید.
یک ورودی معمولی در crontab بهصورت زیر است:
* * * * * command-to-be-executed
- - - - -
| | | | |
| | | | +—- روز هفته (۰–۷) [یکشنبه = ۰ یا ۷]
| | | +—— ماه (۱–۱۲)
| | +——– روز ماه (۱–۳۱)
| +———- ساعت (۰–۲۳)
+———— دقیقه (۰–۵۹)

تصویر(2)
مثال از استفاده Cron
فرض کنید نیاز دارید که از پایگاه داده خود هر روز ساعت ۲:۰۰ بامداد نسخه پشتیبان تهیه نمایید. در این صورت میتوانید خط زیر را به فایل crontab اضافه کنید:
0 2 * * * /path/to/backup_script.sh
این ورودی تضمین میکند که اسکریپت پشتیبانگیری هر روز دقیقاً راس ساعت ۲:۰۰ بامداد اجرا شود. نمونه دیگر میتواند اجرای یک اسکریپت پاک سازی سیستم (Cleanup Script) در هر دوشنبه ساعت ۳:۰۰ بامداد باشد:
0 3 * * 1 /path/to/cleanup_script.sh
توانایی Cron در تعریف دقیق زمان اجرای وظایف، آن را به ابزاری ضروری برای مدیران سیستمها تبدیل کرده است. این سطح دقت زمانی، یکی از نکات کلیدی در مقایسه Cron و Anacron محسوب میشود.
Anacron چیست؟
Anacron نیز یک ابزار برنامه ریزی، مبتنی بر زمان می باشد که با هدف تکمیل عملکرد Cron و برطرفکردن محدودیت اصلی آن یعنی وابستگی به روشن بودن مداوم سیستم طراحی شده است.
برخلاف Cron، در Anacron حتی اگر سیستم خاموش باشد، وظایف از دسترفته با روشنشدن سیستم بهطور خودکار اجرا میشوند. این ویژگی باعث میشود Anacron گزینهای ایدهآل برای لپتاپها، رایانههای رومیزی یا سایر دستگاههایی باشد که بهطور پیوسته روشن نیستند.
Anacron بهویژه در مواقعی مفید است که لازم باشد وظایف حیاتی در نهایت اجرا شوند، حتی اگر اجرای آنها بهدلیل خاموش بودن سیستم در زمان مقرر به تأخیر افتاده باشد. این قابلیت آن را به ابزاری ارزشمند برای سیستمهایی تبدیل میکند که نمیتوان در آنها به تداوم عملکرد اطمینان داشت.
هرچند Anacron برای وظایفی که نیاز به دقت در سطح دقیقه دارند مناسب نیست اما برای کارهایی مانند پشتیبانگیریهای روزانه یا اسکریپتهای نگهداری دورهای ابزاری بسیار قابل اعتماد محسوب میشود.
Anacron چگونه کار میکند؟
حین مقایسه Cron و Anacron به ابزاری خواهید رسید که برای رفع یکی از محدودیتهای اصلی کرون طراحی شده است. Anacron از یک فایل پیکربندی (Configuration File) استفاده میکند که معمولاً در مسیر etc/anacrontab/ قرار دارد و وظایف در آن تعریف میشوند. برخلاف Cron که بر اساس دقیقه و ساعت عمل میکند، Anacron بر پایه روزها زمانبندی میشود و تضمین میکند که وظایف از دسترفته، بلافاصله با روشنشدن سیستم اجرا شوند.
قالب یک ورودی در فایل Anacron بهصورت زیر است:
period delay job-identifier command
توضیحات اجزای دستور:
- period: تناوب اجرای وظیفه بر حسب روز
- delay: مدت زمان تاخیر (به دقیقه) قبل از اجرای وظیفه با راهاندازی سیستم
- job-identifier: برچسب یا شناسهای منحصربهفرد برای شناسایی وظیفه
- command: اسکریپت یا دستور موردنظر برای اجرا

تصویر(3)
مثال از استفاده Anacron
فرض کنید قصد دارید اسکریپت پشتیبانگیری روزانهای را طوری اجرا نمایید که ۱۵ دقیقه پس از روشنشدن سیستم آغاز شود. در این صورت باید خط زیر را در فایل etc/anacrontab/ اضافه کنید:
1 15 daily-backup /path/to/backup.sh
این پیکربندی تضمین میکند که اسکریپت فوق هر روز یکبار اجرا شود، حتی اگر سیستم در روز قبل خاموش بوده باشد. توانایی Anacron در اجرای وظایف از دسترفته، آن را به ابزاری بسیار قابل اعتماد برای کارهای غیربحرانی تبدیل میکند.
به عنوان مثالی دیگر، فرض کنید قصد دارید بروزرسانیهای سیستمی را بهصورت هفتگی اجرا نمایید، فارغ از اینکه سیستم در زمان تعیینشده روشن باشد یا خیر. در این حالت، ورودی زیر را به Anacron اضافه میکنید:
7 10 weekly-updates /path/to/update_script.sh
در این مثال، بروزرسانی هر ۷ روز یکبار با تاخیر ۱۰ دقیقهای پس از روشنشدن سیستم اجرا خواهد شد. قابلیت Anacron در اجرای وظایف ازدسترفته، تضمین میکند که هیچ وظیفهای نادیده گرفته نشود؛ همین موضوع آن را به ابزاری ضروری برای سیستمهایی با روشن و خاموش شدن متناوب تبدیل کرده است.
مقایسه Cron و Anacron از نظر ویژگیها
هرچند Cron و Anacron اهداف مشابهی را دنبال میکنند اما از نظر عملکرد، دقت و کاربرد تفاوت های کلیدی دارند که باعث میشود هرکدام برای سناریوهای خاصی مناسبتر باشند. در این بخش از مقایسه Cron و Anacron، تفاوتها بهصورت خلاصه بررسی می شوند:
|
ویژگی |
Cron |
Anacron |
|
نوع سیستم |
سیستمهای همیشه روشن (مانند سرورها) |
سیستمهایی با زمان روشن بودن متناوب |
|
زمانبندی |
نیاز به روشن بودن سیستم در زمان تعیینشده دارد. |
وظایف ازدسترفته را در راهاندازی بعدی اجرا میکند. |
|
دقت اجرا |
بسیار دقیق (در سطح دقیقه و ساعت) |
دقت کمتر (در سطح روز) |
|
پیکربندی |
هر کاربر crontab اختصاصی دارد |
از یک پیکربندی سراسری استفاده میکند. |
|
موارد استفاده |
وظایف حساس به زمان |
وظایف مقاوم در برابر تأخیر |
جدول(1)
چه زمانی باید از Cron استفاده کرد؟
در چارچوب مقایسه Cron و Anacron، کرون انتخاب مناسبی است اگر شرایط زیر وجود داشته باشد:
-
سرورها یا سیستمهایی که همیشه روشن هستند.
-
وظایفی که به زمانبندی دقیق نیاز دارند (مانند تولید گزارشها و ارسال اعلانها).
-
وظایفی که اجرای آنها در زمان دقیق تعیینشده، حیاتی است.
چه زمانی باید از Anacron استفاده کرد؟
Anacron گزینه بهتری است برای:
-
سیستمهایی که ممکن است بهطور پیوسته روشن نباشند، مانند لپتاپها یا رایانههای شخصی.
-
وظایفی که در آنها اطمینان از اجرای نهایی، نسبت به دقت زمانی مهمتر است.
-
کارهای غیرفوری مانند پشتیبانگیریهای دورهای یا اسکریپتهای پاکسازی سیستم.

تصویر(4)
مقایسه Cron و Anacron با جایگزینهای آنها
درحالیکه Cron و Anacron ابزارهایی قابلاعتماد برای زمانبندی وظایف هستند، گزینههای دیگری نیز وجود دارند که بسته به نیاز سیستم ممکن است کارایی یا انعطاف بیشتری ارائه دهند:
-
Systemd Timers: مناسب برای سیستمهایی که از Systemd استفاده میکنند. این ابزار زمانبندی دقیقتری ارائه میدهد، با سرویسهای سیستم یکپارچه است و برای وظایفی که به هماهنگی در زمان بوت و ثبت لاگ دقیق نیاز دارند، ایدهآل می باشد.
-
Fcron: راهحلی ترکیبی که دقت Cron را با انعطافپذیری Anacron ترکیب میکند. برای سیستمهایی که همیشه روشن نیستند بسیار مناسب است زیرا اطمینان میدهد وظایف ازدسترفته در هنگام روشن شدن اجرا شوند.
-
Task Spooler: برای مدیریت صف وظایف طراحی شده است و امکان اجرای وظایف بهصورت پیاپی یا موازی را فراهم میکند. برای وظایف پسزمینهای که نیازمند اجرای ترتیبی هستند، بسیار مفید است.
-
Quartz Scheduler: یک راهکار مبتنی بر جاوا است که برای برنامههای سازمانی نیازمند عبارات پیچیده مشابه Cron، مناسب می باشد.
-
at: ابزاری برای زمانبندی وظایف با دقت بالا است. هرچند از تکرار وظایف پشتیبانی نمیکند اما برای اجرای دقیق در زمان مشخص کاربرد دارد.
نتیجهگیری نهایی درباره مقایسه Cron و Anacron
Cron و Anacron دو ابزار ارزشمند برای خودکارسازی وظایف در سیستمهای شبهیونیکس هستند. Cron برای عملیات حساس به زمان در سیستمهای همیشه روشن بهترین گزینه است، درحالیکه Anacron تضمین میکند وظایف حتی با خاموش بودن سیستم در زمان مقرر نیز نهایتا اجرا شوند.
شناخت دقیق تفاوتها در مقایسه Cron و Anacron به شما کمک میکند تا زیرساختی پایدارتر، قابل پیشبینیتر و مطمئنتر طراحی کنید و فرآیندهای خودکارسازی را با اطمینان بیشتری پیادهسازی نمایید.