در هر سیستمی تعدادی کارهای تکراری وجود دارد که دائماً باید انجام شوند. انجام مکرر یک کار کم کم طاقتفرسا میشود و نیروی انسانی را درگیر میکند. با پیشرفت تکنولوژی و برنامه نویسی سیستمی به نام کرون جاب یا Cron Job ایجاد شد تا بتواند کارهای تکراری شما را به صورت کامل در مدت مشخص انجام دهد. اما کرون جاب چیست و چگونه کار میکند؟ چگونه میتوانیم کرون جاب را فعال و پیکربندی کنیم؟ دانستن پاسخ این سؤالات برای هر فردی که با یک سیستم سروکار دارد الزامی است و میتواند در هزینه و زمان شما صرفه جویی کند. در این مقاله به طور کامل با Cron Job آشنا خواهید شد.
Cron Job یا کرون جاب چیست؟
Cron یک اپلیکیشن است که به کاربران اجازه میدهد تا دستوراتی را برای اجرای مکرر در زمان بندی مشخص وارد کنند. وظایف و کارهای تعریف شده در Cron را Cron Job مینامند. کاربران میتوانند هر عملیات و کاری را به دست کرون بسپارند و با مشخص کردن زمان، آن عملیات در زمان مشخص بدون نیاز به دخالت کاربر انجام شود.
این کار باعث صرفه جویی در وقت گرانبها میشود و به کاربران اجازه میدهد تا روی کارهای ضروری دیگر تمرکز کنند. این سیستم دائماً در حال اجرا است و هر ساعت در هر روز میتواند هر عملیاتی را انجام دهد.
Cron یک دیمون است - یک فرایند پس زمینه که کارهایی را اجرا میکند. فایل cron یک فایل متنی ساده است که حاوی دستوراتی برای اجرای دورهای در یک زمان خاص است. جدول پیش فرض کرون (crontab) در /etc/crontab لینوکس و سیستمهای مشابه قرار دارد.
موارد استفاده از Cron Job
از کرون جاب استفادههای مختلفی میشود. از آنجایی که این برنامه به هیچ عملیات خاصی محدود نشده است به راحتی میتوانید هر کاری را به آن بسپارید. برخی از معمولیترین عملیاتهایی که معمولاً توسط مدیران سرور به Cron Job سپرده میشوند عبارتاند از:
• برنامه ریزی برای پشتیبان گیری خودکار در ساعات مشخص
• عملیاتهای مربوط به تعمیر و نگهداری سیستم
• نظارت بر فضای دیسک
• پاک کردن خودکار کش
• سیستم بررسی لینکهای خراب در وب سایت
معایب Cron Job
هر سیستمی در کنار مزایایی که دارد معایب و محدودیتهایی نیز دارد که باید قبل از استفاده از کرون جاب آنها را در نظر گرفت.
• کوتاهترین فاصله بین کارها 60 ثانیه است. با cron، نمیتوانید یک کار را هر 59 ثانیه یا کمتر تکرار کنید.
• عملیاتها متمرکز روی یک سیستم هستند. کارهای کرون را نمیتوان در چندین رایانه تقسیم بندی کرد. بنابراین اگر رایانهای که cron را اجرا میکند از کار بیفتد، وظایف برنامه ریزی شده اجرا نمیشوند و کارهای از دست رفته فقط به صورت دستی قابل اجرا خواهند بود.
• مکانیسم تلاش مجدد خودکار کارهای انجام نشده وجود ندارد. Cron طوری طراحی شده است که در زمانهای کاملاً مشخص اجرا شود. اگر کاری به خطا بخورد یا انجام نشود تا زمان برنامه ریزی شده بعدی دیگر اجرا نخواهد شد. این محدودیت باعث میشود کرون برای بعضی از کارهای حساس مناسب نباشد.
در کنار این محدودیتها کرون یک راه حل عالی برای انجام کارهای ساده و غیر حساس در فواصل زمانی حداقل 60 ثانیه است. البته سیستمها و روشهای دیگری نیز همانند کرون وجود دارند که میتوانید از آنها به جای کرون استفاده کنید.
آموزش استفاده ازکرون جاب Cron Job
در ادامه به شما نشان خواهیم داد چگونه از کرون جاب در سرور استفاده کنید. کرون جاب دستورات پایهای دارد که میتوانید از آن استفاده کنید. راههای متفاوتی برای استفاده از کرون جاب وجود دارد. اصلیترین راه آن استفاده از ترمینال لینوکس یا SSH است. همچنین کرون جاب به صورت اپلیکیشن در سی پنل یا سایر کنترل پنلها موجود است که در محیطی گرافیکی میتوانید از آن استفاده کنید.
قبل از آموزش، لازم است فایلهای پیکربندی مختلف cron job را بشناسید:
• system crontab: از کرون تاب سیستم برای برنامهریزی کارهای ضروری در سیستم استفاده میشود که فقط با امتیازات روت قابل تغییر هستند.
• user crontab: از کرون تاب یوزر کاربرانی استفاده میکنند که نیاز دارند یک کرون جاب با امتیازات کاربر معمولی انجام دهند.
اگر میخواهید crontab سیستم را ویرایش کنید، مطمئن شوید که کاربر فعلی دارای امتیازات روت است.
برخی عملیاتهای کرون جاب
ایجاد یا ویرایش یک فایل crontab
برای ایجاد یا ویرایش یک فایل crontab ، دستور زیر را در خط فرمان وارد کنید:
crontab -e
اگر هیچ فایل crontab در سیستم شما یافت نشد، دستور به طور خودکار یک فایل جدید ایجاد میکند. برای ویرایش فایل crontab به یک ویرایشگر متن مانند vi یا nano نیاز دارید. هنگامی که برای اولین بار دستور crontab -e را وارد میکنید، از شما خواسته میشود که انتخاب کنید با کدام ویرایشگر متن میخواهید فایل را ویرایش کنید.
مشاهده لیستی از وظایف برنامه ریزی شده فعال
برای مشاهده لیستی از وظایف برنامه ریزی شده فعال در سیستم خود، دستور زیر را وارد کنید:
crontab -l
اگر سیستم شما چندین کاربر دارد، میتوانید لیست فایلهای crontab آنها را با وارد کردن دستور زیر بهعنوان کاربر ادمین مشاهده کنید:
crontab -u username -l
همچنین میتوانید با تایپ دستور crontab زیر به راحتی کارهای برنامه ریزی شده سایر کاربران را ویرایش کنید:
sudo su crontab -u username -e
برای اینکه به خود امتیازات root بدهید ، sudo su را به ابتدای دستور اضافه کنید. برخی از دستورات، از جمله دستور بالا، فقط توسط کاربران روت قابل اجرا هستند.
حذف تمام وظایف برنامه ریزی شده
در نهایت، برای حذف تمام وظایف برنامه ریزی شده در فایل crontab خود ، دستور زیر را تایپ کنید:
crontab -r
از طرف دیگر، یک کاربر روت میتواند اسکریپتهای خود را به دایرکتوریهای زیر منتقل کند تا اجرای آنها را برنامه ریزی کند:
• /etc/cron.hourly/ – همه اسکریپتها را هر ساعت یک بار اجرا میکند.
• /etc/cron.daily/ – یک بار در روز اجرا میکند.
• /etc/cron.weekly/ – یک بار در هفته اجرا میکند.
• /etc/cron.monthly/ – یک بار در ماه اجرا میکند.
سینتکس Crontab
برای ایجاد و تعریف یک کار در کرون جاب ابتدا باید سینتکس و نحوه قالب بندی cron را بشناسید. به تصویر زیر که سیستم تایم بندی کرون را بیان میکند دقت کنید:
سینکتس زمان crontab از 5 فیلد به ترتیب با مقادیر زیر تشکیل شده است:
• دقیقه: دقیقه از ساعتی که فرمان اجرا میشود، از 0 تا 59 متغیر است.
• ساعت: ساعتی که دستور در آن اجرا میشود، از 0 تا 23 در نماد 24 ساعته متغیر است.
• روز ماه: روزی از ماه که کاربر میخواهد دستور اجرا شود، از 1 تا 31.
• ماه: ماهی که کاربر میخواهد فرمان در آن اجرا شود، از 1 تا 12 متغیر است، بنابراین ژانویه تا دسامبر را نشان میدهد.
• روز هفته: روز هفته برای اجرای دستور، از 0 تا 6، که نشان دهنده یکشنبه تا شنبه است. در برخی سیستمها، مقدار 7 نشان دهنده یکشنبه است.
هیچ یک از فیلدها را خالی نگذارید. برای انتخاب همه مقادیر میتوانید ستاره قرار دهید.
برای مثال، اگر میخواهید یک cron job راهاندازی کنید تا root/backup.sh را هر جمعه ساعت 5:37 بعد از ظهر اجرا کند، دستور cron شما باید به این صورت باشد:
37 17 * * 5 root/backup.
در مثال بالا، 37 و 17 نشان دهنده 5:37 بعد از ظهر است. هر دو ستاره برای فیلدهای روز ماه و ماه، همه مقادیر ممکن را نشان میدهند. این بدان معنی است که کار باید بدون توجه به تاریخ یا ماه تکرار شود. در نهایت، 5 نشان دهنده جمعه است.
اگر از نوشتن دستی سینتکس cron مطمئن نیستید، میتوانید از ابزارهای رایگان مانند Crontab Generator یا Crontab.guru برای تولید اعداد دقیق برای زمان و تاریخ مورد نظر برای دستور خود استفاده کنید.
عملگرهای کرون جاب
برای تنظیم زمان صحیح برای دستور cron خود، دانش عملگرهای cron job ضروری است. آنها به شما اجازه میدهند تعیین کنید که کدام مقادیر را میخواهید در هر فیلد وارد کنید. در تمام فایلهای crontab باید از عملگرهای مناسب استفاده کنید.
• ستاره (*). از این عملگر برای نشان دادن تمام مقادیر ممکن در یک فیلد استفاده کنید. به عنوان مثال، اگر میخواهید کار cron شما هر دقیقه اجرا شود، در قسمت Minute یک ستاره بنویسید .
• کاما (،). از این عملگر برای فهرست کردن چندین مقدار و مشخص کردن چند مقدار در کنار هم استفاده کنید. به عنوان مثال، نوشتن 1،5 در فیلد روز از هفته، کار را برای انجام هر دوشنبه و جمعه برنامه ریزی میکند.
• خط فاصله (-). از این عملگر برای تعیین محدودهای از مقادیر استفاده کنید. به عنوان مثال، اگر میخواهید یک کار cron را از ژوئن تا سپتامبر راه اندازی کنید، نوشتن 6-9 در قسمت Month این کار را انجام میدهد.
• جداکننده (/). از این عملگر برای تقسیم یک مقدار استفاده کنید. به عنوان مثال، اگر میخواهید یک اسکریپت را هر دوازده ساعت یک بار اجرا کنید، */12 را در قسمت Hour بنویسید .
• آخرین (L) . این عملگر در فیلدهای روز ماه و روز هفته قابل استفاده است. مثلاً نوشتن 3L در قسمت روز هفته یعنی آخرین چهارشنبه یک ماه.
• روز هفته (W) . از این عملگر برای تعیین نزدیکترین روز هفته از یک زمان معین استفاده کنید. به عنوان مثال، اگر اول ماه یک شنبه باشد، نوشتن 1W در فیلد روز از ماه، دستور را در دوشنبه بعد (سوم) اجرا میکند.
• هش (#). از این عملگر برای تعیین روز هفته و به دنبال آن عددی از 1 تا 5 استفاده کنید. برای مثال، 1#2 به معنای دومین دوشنبه ماه است.
• علامت سؤال (؟). از این عملگر برای وارد کردن "بدون مقدار خاص" برای فیلدهای "روز ماه" و "روز هفته" استفاده کنید.
عملگرهای ویژه در کرون جاب
عملگرهای ویژهای نیز در کرون جاب وجود دارند که میتوانید به راحتی بدون نیاز به استفاده از سینتکس اصلی 5 مقداری کرون جا، از آنها استفاده کنید. برای استفاده از این مقادیر باید یک @ بنویسید و در ادامه از مقادیر قابل قبول زیر استفاده کنید:
• @hourly: کار هر ساعت یکبار اجرا خواهد شد.
• @daily یا @midnight: این عملگرها وظیفه را هر روز در نیمه شب اجرا میکنند.
• @weekly: از این عملگر برای اجرای کار یک بار در هفته در نیمه شب یکشنبه استفاده کنید.
• @monthly: این عملگر یک دستور را در روز اول هر ماه یک بار اجرا میکند.
• @yearly: از این عملگر برای اجرای کار یک بار در سال (در نیمه شب اول ژانویه) استفاده کنید.
• @reboot: با استفاده از این عملگر، کار در هنگام راه اندازی مجدد و فقط یک بار اجرا میشود.
جمع بندی
برنامه ریزی کارها برای اجرای خودکار توسط کرون جاب Cron Job یکی از واجبترین کارهایی است که هر سیستم به آن نیاز دارد. Cron jobs یک راه عالی برای مدیران سیستم و توسعه دهندگان وب برای مدیریت کارهای تکراری است. در این مقاله بررسی کردیم که مزایای کرون جاب چیست و برای بهره مندی از این مزایا تنها کاری که نیاز است انجام دهید این است که دستورات مناسب را وارد کرده و زمان اجرای آن را انتخاب کنید. در این مقاله هر آنچه برای معرفی کرون جاب نیاز داشتید بیان شد. البته Cron Job دنیای بزرگتری دارد و برای مسلط شدن به آن نیاز است مستندات آن را مطالعه کنید.
سؤالات متداول
Cron Job چه کاری انجام میدهد؟
Cron jobها دستورات لینوکس هستند که برای زمانبندی وظایف به کار میروند. آنها به شما کمک میکنند تا دستورات و اسکریپتهای تکراری را روی سرور خود خودکار کنید.
کاربرد * * * * * در کرون چیست؟
* * * * * یک علامت عام عبارت زمانبندی cron است، به این معنی که کار cron شما باید هر دقیقه از هر ساعت از هر روز هر ماه، هر روز هفته اجرا شود.
چگونه یک Cron Job را اجرا کنم؟
به عنوان کاربر Shell از طریق SSH وارد سرور خود شوید. یک ویرایشگر برای مشاهده فایل انتخاب کنید و کد مربوط به cron job خود را به فایل crontab خالی اضافه کنید. پس از اتمام، فایل را ذخیره کنید.