Cron یک سرویس زمانبندی کار مبتنی بر زمان است که در سیستم عامل های مشابه یونیکس یافت می شود. کاربران کارها (دستورها یا اسکریپت ها) را برنامه ریزی می کنند تا به صورت دوره ای در زمان ها، تاریخ ها یا فواصل زمانی ثابت اجرا شوند.
منشاء و تاریخچه اولیه کرون
اولین پیاده سازی cron به نسخه 7 یونیکس برمی گردد. اصطلاح "cron" از کلمه یونانی به معنی "chronos" گرفته شده است. این نسخه از یونیکس که در سال 1979 منتشر شد، دارای یک برنامه ساده cron بود که وظایف را در فواصل زمانی مشخص اجرا می کرد. عملکرد کرون بعداً توسط پل ویکسی در سال 1987 گسترش یافت. این نسخه که به عنوان Vixie Cron شناخته میشود، نسخهای است که امروزه بیشتر نصب میشود و نسخهای است که معمولاً زمانی که افراد «Cron» را ذکر میکنند به آن اشاره میشود.
بسط مفهوم کرون
Cron به کاربران اجازه میدهد تا تعمیر و نگهداری یا مدیریت سیستم را خودکار کنند - اگرچه ماهیت عمومی آن باعث میشود برای مواردی مانند دانلود فایلها از اینترنت و بارگیری ایمیل در فواصل زمانی منظم مفید باشد. یک محیط cron مانند یک جعبه شنی است که در آن کارهای cron از محیط معمولی پوسته خارج می شوند.
هر کاربر میتواند crontab خود را داشته باشد، و اگرچه این فایلها در /var/spool/ هستند، اما قرار نیست مستقیماً ویرایش شوند. نحو عبارات cron را می توان به دو نوع نحو اصلی تقسیم کرد: نحو cron یونیکس، و نحو پیچیده تر که به عنوان نحو عبارت cron یا نحو cron کوارتز شناخته می شود.
ساختار داخلی کرون و نحوه عملکرد آن
Cron بر اساس یک فایل پیکربندی ساده و در عین حال قدرتمند به نام فایل "crontab" عمل می کند. این فایل حاوی یک خط برای هر وظیفه ای است که باید اجرا شود، که از پنج فیلد زمان و تاریخ تشکیل شده است و به دنبال آن دستوری برای اجرا در زمان های مشخص وجود دارد.
پنج فیلد نشان دهنده:
- دقیقه بعد از ساعت (0 - 59)
- ساعت در روز (0 تا 23)
- روزهای در ماه (1 تا 31)
- ماه ها در سال (1 تا 12)
- روزهای هفته (0 تا 7، جایی که 0 و 7 یکشنبه هستند)
فیلد فرمان شامل وظیفه ای است که باید در زمان های مشخص شده در پنج فیلد اول اجرا شود.
ویژگی های کلیدی Cron
ویژگی های اصلی Cron عبارتند از:
- این اجازه می دهد تا وظایف به طور خودکار در پس زمینه در فواصل زمانی منظم اجرا شوند.
- این یک پلت فرم منعطف برای برنامه ریزی وظایف (اسکریپت ها یا دستورات) با واحدهای زمانی مختلف فراهم می کند.
- هر کاربر می تواند فایل crontab خود را داشته باشد.
- کارهای کرون را می توان بر اساس دقیقه، ساعت، روز هفته، روز ماه و ماه سال برنامه ریزی کرد.
- Cron یک راه ساده و موثر برای خودکارسازی وظایف مختلف سیستم ارائه می دهد.
انواع کرون
مشاغل کرون را می توان به طور کلی به صورت زیر دسته بندی کرد:
تایپ کنید | شرح |
---|---|
راه اندازی مجدد | در هنگام راه اندازی یک بار اجرا می شود. |
آناکرون | در فواصل زمانی مشخص شده در روز اجرا می شود. |
سیستم کرون | ذخیره شده در /etc/crontab و در فهرست /etc/cron.d/، در نظر گرفته شده است که در سراسر سیستم باشند. |
کاربر Cron | هر کاربر می تواند خود را داشته باشد و در /var/spool/cron/crontabs/ ذخیره می شود. |
استفاده از کرون، مشکلات و راه حل های آنها
Cron برای خودکار کردن وظایف مفید است، اما اگر با دقت استفاده نشود می تواند منجر به مشکلات شود. به عنوان مثال، پیکربندی نادرست cron job می تواند منجر به استفاده زیاد از CPU شود. همچنین، cron تنها خروجی کارهای خود را، در صورت وجود، برای کاربری که کارها را به عنوان آن اجرا می کند، ایمیل می کند. این می تواند باعث خطاهای از دست رفته در صورت عدم بررسی منظم شود.
راه حل های رایج برای این مسائل عبارتند از:
- بررسی مرتب استفاده زیاد از CPU و پیکربندی مجدد یا توقف کارهای غیر ضروری.
- اطمینان حاصل کنید که همه دستورات و اسکریپت ها به درستی اجرا می شوند قبل از اینکه آنها را به عنوان Cron jobs تنظیم کنید.
- تغییر مسیر خروجی به یک logfile یا راهاندازی یک سرور ایمیل برای نظارت مؤثرتر بر کارهای cron.
مقایسه با ابزارهای مشابه
زمانبندیهای دیگری شبیه به cron وجود دارند، مانند تایمرهای anacron و systemd. تفاوت های اولیه بین اینها را می توان به شرح زیر خلاصه کرد:
ابزار | شرح |
---|---|
کرون | مناسب برای کارهایی که در ساعات مشخصی از روز اجرا می شوند. کارهای از دست رفته را اجرا نمی کند. |
آناکرون | مناسب برای کارهایی که یک بار در روز / هفتگی / ماهانه اجرا می شوند. وقتی دستگاه دوباره آنلاین شود، کارهای از دست رفته را اجرا می کند. |
سیستم شده | مناسب برای سناریوهای پیچیده تر زیرا گزینه های بیشتری را ارائه می دهد و به خوبی با توزیع های لینوکس مدرن ادغام می شود. |
چشم انداز آینده و فناوری های مرتبط
همانطور که سیستم های مبتنی بر یونیکس به تکامل خود ادامه می دهند، کرون نیز پیشرفت می کند. علیرغم ظهور برنامهریزهای پیشرفتهتر وظایف مانند systemd، سادگی و قدرت Cron تضمین میکند که امروزه مورد استفاده رایج باقی میماند.
گرایش اخیر به سمت برنامه های کاربردی کانتینری و معماری میکروسرویس ها نیز راه های جدیدی را برای استفاده از کرون به ارمغان آورده است. به عنوان مثال، Kubernetes، یک پلت فرم ارکستراسیون کانتینر محبوب، دارای ویژگی معروف به CronJobs است که شبیه به Cron در سیستمهای مبتنی بر یونیکس است.
سرورهای پروکسی و کرون
سرورهای پروکسی را می توان به طور موثر در ترکیب با Cron برای خودکارسازی وظایف خاص استفاده کرد. به عنوان مثال، اگر اسکریپتی دارید که نیاز به دسترسی منظم به یک وب سایت یا API از طریق یک سرور پراکسی دارد، می توانید یک کار cron را برای اجرای آن اسکریپت در فواصل زمانی مشخص تنظیم کنید.
Cron همچنین می تواند برای چرخاندن پراکسی ها در فواصل زمانی مشخص استفاده شود و احتمال مسدود شدن هر پراکسی منفرد را کاهش دهد. به عنوان مثال، خدمات پروکسی OneProxy را می توان با Cron برای کارهایی مانند جمع کردن داده ها، خودکارسازی وظایف رسانه های اجتماعی و موارد دیگر خودکار کرد.
لینک های مربوطه
برای اطلاعات بیشتر در مورد کرون، منابع زیر را در نظر بگیرید: