Cron job کارهایی هستند که بهصورت خودکار براساس یک برنامه زمانبندی اجرا میشوند. به کمک کرون جاب میتوانید گردش کار خود را سادهتر کرده و بر روی کارهای مهمتر تمرکز کنید. فرقی ندارد مدیر سیستم باشید یا یک توسعهدهنده، cron jobs میتواند ابزاری قدرتمند برای خودکار سازی وظایف و افزایش کارایی باشد.
در ادامه به معرفی کامل کرون جاب میپردازیم و بررسی میکنیم که چگونه در صرفهجویی در زمان و سادهسازی کارها به شما کمک میکند. ابتدا قصد داریم به بررسی این که cron job چیست و سپس به نحوه اجرای cron job بپردازیم.
Cron چیست؟
کرون یک دیمون (Daemon) یا فرایند پسزمینه است که در سیستمعاملهای یونیکس اجرا میشود. از این فرایند برای برنامهریزی وظایفی تحت عنوان Cron Job استفاده میشود تا بهطور خودکار در یک زمان یا بازه زمانی مشخص اجرا شوند.
Cron Job چیست؟
Cron job ها کارهای خودکاری هستند که بر اساس یک برنامه از پیش تعریفشده اجرا میشوند. از این کارها معمولا برای مواردی مانند تهیه نسخه پشتیبان، ارسال ایمیل و انجام وظایف نگهداری از سیستم استفاده میشوند. کرون جابها برای خودکارسازی کارهای تکراری و همچنین انجام کارهایی که باید طبق برنامه اجرا شوند مفید هستند. یک کرون جاب میتواند هر کاری را که از خط فرمان اجرا میشود انجام دهد. از کارهای ساده مانند ارسال ایمیل تا کارهای پیچیده مانند پشتیبانگیری از یک پایگاه داده.
این کارها معمولا با استفاده از یک فایل crontab یا cron tables پیکربندی میشوند. این فایل برنامه و دستور هر کار را بهصورت دقیق مشخص میکند. Cron job ها توسط cron daemon، یک فرایند پسزمینه در سیستمعاملهای مشابه یونیکس، اجرا میشود.
دلایل استفاده از Cron Job چیست؟
همانطور که گفته شد از کرون جابها برای خودکار سازی کارهای تکراری بر اساس یک برنامه زمانبندی استفاده میشود. دلایل مختلفی وجود دارد که با توجه به آنها از کرون جابز استفاده میشود. در ادامه به بررسی برخی از این موارد میپردازیم.
اتوماسیون: کرون جاب به شما امکان میدهد کارهای تکراری خود را بهصورت خودکار انجام دهید. بهاینصورت میتوانید در زمان صرفهجویی کنید و خطاهای پیش رو را کاهش دهید.
زمانبندی: کرون جاب به شما امکان میدهد تا وظایف را در زمان یا بازه زمانی مشخص زمانبندی کنید. بهاینصورت کارها بهصورت منظم در زمان تعیینشده انجام میشوند.
سفارشیسازی Cron Job : کرون جابها بسیار قابل تنظیم هستند و به شما این امکان را می دهند که برنامه و دستور را برای هر کاری مشخص کنید.
قابلیت اطمینان: Cron jobs توسط Cron Daemon اجرا میشوند که فرایندی پایدار و آزموده شده است. بنابراین، میتوانید اطمینان داشته باشید که وظایف شما طبق برنامهریزی انجام میشوند.
علاوهبراین موارد، کرون جاب میتواند ابزار مفیدی برای خودکار سازی وظایف مختلف در گردش کار شما باشد. بهعنوان مثال، ممکن است از Cron Job برای اجرای اسکریپتی که هر روز صبح یک گزارش تولید میکند، یا برای بررسی بهروزرسانیها در وبسایت خود استفاده کنید.
نحوه ایجاد و مدیریت Cron Job
برای استفاده از cron jobs ابتدا باید یک فایل crontab ایجاد کنید و سپس برنامه و دستور کار خود را مشخص کنید. این کار را میتوانید با استفاده از یک ویرایشگر متن مانند nano یا vi انجام دهید.
برای ایجاد و مدیریت کارهای cron، باید از یک ویرایشگر متن برای تغییر فایل crontab استفاده کنید.
در ادامه مراحل ایجاد کرون جاب آورده شده است:
۱. فایل crontab را با استفاده از یک ویرایشگر متن، با crontab -e مانند nano یا vi باز کنید.
۲. یک خط جدید برای کرون جاب خود به فایل اضافه کنید. نحوه انجام این کار بهصورت زیر است:
* * * * * command | | | | |ــــــــــــday of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0) | | | |ــــــــــــــ*month (1 - 12) | | |ــــــــــــــــ*day of month (1 - 31) | |ــــــــــــــــــ*hour (0 - 23) |ــــــــــــــــــــ*min (0 - 59)
دقیقه: زمان اجرای فرمان بر اساس دقیقه، از 0-59.
ساعت: ساعتی که دستور اجرا خواهد شد، از 0 تا 23 در یک نماد 24 ساعته متغیر است.
روز ماه: تاریخ ماهی که کاربر میخواهد دستور اجرا شود، از 1 تا 31.
ماه: ماهی که کاربر میخواهد دستور اجرا شود. از 1 تا 12 متغیر است که نماینده ژانویه تا دسامبر است.
روز هفته: روز هفته برای اجرای دستور، از 0 تا 6. مقدار نشاندهنده یکشنبه تا شنبه است. در برخی سیستمها، مقدار 7 نشاندهنده یکشنبه است.
3. برنامه و دستور کرون جاب خود را مشخص کنید. بهعنوان مثال، برای اجرای یک اسکریپت هر روز در نیمه شب، باید از این دستور استفاده کنید:
0 0 * * * / usr/bin/myscript.sh
4. فایل crontab را ذخیره کرده و از ویرایشگر متن خارج شوید.
برخی از ویرایشگرهای متن، مانند nano و vi، شما را ملزم به استفاده از یک کلید ترکیبی ویژه برای ذخیره و خروج از فایل میکنند. در اینجا ترکیبات کلیدی برای nano و vi آمده است:
برای بستن nano،از کلیدهای Ctrl+X و سپس Y و سپس Enter را فشار دهید.
برای بستن vi، کلید Esc و سپس :wq و سپس Enter را فشار دهید.
5. cron daemon بهطور خودکار cron job را طبق برنامه زمانی که شما مشخص کردهاید اجرا میکند.
نحوه کار Cron Jobs به چه صورت است؟
همان طور که پیشتر گفتیم، کرون یک دیمون است؛ یک فرآیند پس زمینه که وظایف غیر تعاملی را اجرا می کند، مشابه فرآیندهای پس زمینه مانند سرویسها در ویندوز.
یک فایل کرون یک فایل متنی است که دستوراتی را برای اجرای دوره ای در یک زمان خاص شامل میشود. فایل پیکربندی جدول کرون یا crontab به طور پیش فرض /etc/crontab است.
فقط مدیران سیستم می توانند فایل crontab سیستم را ویرایش کنند. با این حال ، از آنجا که سیستم عاملهای یونیکس و مبتنی بر یونیکس چندین مدیر را پشتیبانی میکنند ، کاربران می توانند فایلهای خود را برای زمانبندی کارهای خاصی ایجاد کنند.
با کرونجاب ها ، کاربران می توانند فرایندهایی نظیر نگهداری سیستم ، نظارت بر فضای دیسک و پشتیبان گیری را در بازههای منظم خودکارسازی کنند. به دلیل راحتی کرونجابها در اجرای اتوماتیک فرایندها، آنها برای رایانه هایی که باید به صورت ۲۴ ساعته روشن باشند و کار کنند ، مانند سرور مجازی، ایده آل هستند.
با وجود این که cron job ها بیشتر در میان سیستم ادمینها محبوب هستند، برای توسعه دهندگان وب نیز کاربرد دارند و مورد استفاده قرار میگیرند.
برای مثال ، آنها میتوانند سه کار کرون را برای پشتیبان گیری خودکار از یک سایت به صورت روزانه در نیمه شب ، بررسی لینکهای خراب هر دوشنبه در نیمه شب و پاک کردن حافظه کش آن هر جمعه در ظهر تنظیم کنند.
در عین حال که استفاده از کرونها بسیار راحت است اما محدودیتهایی نیز برای آنها وجود دارد:
کوتاه ترین بازه بین کارها 60 ثانیه است. کاربران فقط میتوانند تنظیمات بازه کرون را به یک دقیقه یا بیشتر تنظیم کنند.
کارهای از دست رفته نیاز به تنظیم دستی دارند. مدیران نمی توانند کارهای کرون را به چندین رایانه در یک شبکه توزیع کنند. بنابراین ، اگر رایانه ای که کرون را اجرا می کند دچار اختلال شود ، کارهای زمانبندی شده اجرا نمی شوند. شما باید کارهای از دست رفته را به صورت دستی راه اندازی مجدد کنید.
هیچ مکانیزم تلاش مجدد خودکاری وجود ندارد. کرون طراحی شده است تا در یک برنامه مشخص اجرا شود. اگر یک کار شکست بخورد ، تا زمان بعدی که زمانبندی شده است ، اجرا نخواهد شد. این باعث می شود کرون برای کارهایی با روند افزایشی نامناسب باشد.
هیچ متغیر محیطی وجود ندارد. Crontab نمی تواند متغیرهای محیطی را از چندین فایل حاوی داده های پیکربندی که برای اجرای صحیح برخی از برنامه ها لازم است ، بخواند.
عملگرهای کرون جاب
در بالا با سینتکس (Syntax) کرون جاب آشنا شدید. همچنین میتوانید از ابزارهای رایگان مانند Crontab Generator یا Crontab.guru به منظور ایجاد اعداد دقیق برای زمان و تاریخ دستور خود استفاده کنید.
علاوه بر سینتکس، باید عملگرهای Cron Job را برای تغییر مقدار در هر فیلد بشناسید. برای اطمینان از اجرای دستورات خود باید از این عملگرها در تمام فایلهای crontab خود بهدرستی استفاده کنید. برخی از این عملکرها را در ادامه معرفی کردهایم:
ستاره (*): این عملگر تمام مقادیر ممکن را در یک فیلد نشان میدهد. برای مثال در قسمت Minute یک ستاره بنویسید تا cron job هر دقیقه اجرا شود.
کاما (،): این عملگر برای فهرست کردن چندین مقدار است. بهعنوان مثال، نوشتن 1.5 در فیلد روز هفته، کار را برای اجرای هر دوشنبه و جمعه برنامهریزی میکند.
خط ربط (-): کاربران میتوانند محدودهای از مقادیر را تعیین کنند. 6-9 را در قسمت Month بنویسید تا از ژوئن تا سپتامبر یک Cron Job اجرا شود.
جداکننده (/): این جداکننده یک مقدار را تقسیم میکند. اگر میخواهید هر دوازده ساعت یک اسکریپت اجرا کنید، */12 را در قسمت Hour بنویسید.
آخرین (L): کاربران میتوانند از این عملگر در قسمتهای روز ماه و روز هفته استفاده کنند. مثلا نوشتن 3L در قسمت روز هفته یعنی آخرین چهارشنبه ماه.
روز هفته (W): عملگری که نزدیکترین روز هفته را از یک زمان معین تعیین میکند. بهعنوان مثال، اگر اول ماه یکشنبه باشد، نوشتن 1W در فیلد روز از ماه، دستور را در روز دوشنبه سوم اجرا میکند.
هش (#): یک عملگر برای فیلد روز هفته، که یک روز خاص از ماه را با استفاده از عددی بین 1 تا 5 تعیین میکند. برای مثال، 1#2 به معنای دومین دوشنبه ماه است.
علامت سوال (؟): این عملگر no specific value را برای فیلدهای روز از ماه و روز از هفته وارد میکند. معمولاً با زمان راهاندازی Cron Daemon جایگزین میشود.
رشتههای خاص کرون جاب
رشتههای ویژه برای برنامهریزی کرون جابها در بازههای زمانی مشخص، بدون تعیین مقادیر دقیق استفاده میشوند. برای استفاده از آنها، یک عبارت ساده که با یک @ شروع میشود را بنویسید. در ادامه چند رشته ویژه مفید برای استفاده در دستورات آورده شدهاند:
@hourly
کار هر ساعت یکبار اجرا خواهد شد.
@daily یا @midnight
این رشتهها کار را به صورت روزانه یا در نیمهشب اجرا میکنند.
@weekly
رشتهای برای برنامهریزی وظایف یکبار در هفته در نیمهشب یکشنبه.
@monthly
این رشته خاص یک دستور را در روز اول هر ماه یکبار اجرا میکند.
@yearly
از این رشته برای اجرای یک کار در سال یکبار در نیمهشب اول ژانویه استفاده کنید.
@reboot
این رشته کرون جاب را یکبار در حین راهاندازی سیستم اجرا میکند.
مزایای Cron Job چیست؟
مانند هر ابزار دیگری، کرون جابز هم مزایا و معایبی دارد. برخی از مزایای استفاده از کرون جاب عبارتند از:
سهولت در استفاده: تنظیمات و پیکربندی کرون جاب آسان است.
تطبیقپذیری: از Cron job میتوان برای خودکارسازی طیف وسیعی از وظایف استفاده کرد.
قابلیت اطمینان: کرون جابها قابل اعتماد هستند، زیرا توسط کرون دیمون اجرا میشوند که فرایندی پایدار و آزمودهشده است.
معایب Cron Job
بااینحال، برخی از معایب بالقوه نیز برای استفاده از Cron Job وجود دارد:
پیچیدگی: پیکربندی Cron Jobs مخصوصا برای کارهای پیشرفتهتر پیچیده است.
محدودیتها: کرون جابها محدودیتهای خاصی دارند. بهعنوان مثال میتوان آنها را فقط در یک زمان یا بازه زمانی خاص برنامهریزی کرد.
وابستگیها: کرون جابها میتوانند به فرایندها یا منابع دیگری وابسته باشند. درصورت در دسترس نبودن این وابستگیها، مشکلاتی برای کارها ایجاد میشود.
نکاتی برای استفاده از Cron Job
در ادامه چند نکته برای استفاده موثر از Cron Job آورده شده است.
- از مسیر دهی مطلق برای دستورات خود استفاده کنید تا از اجرای درست آنها مطمئن شوید.
- قبل از برنامهریزی، Cron Job خود را تست کنید تا مطمئن شوید که بهدرستی اجرا میشود.
- برای سازماندهی فایل crontab خود میتوانید کارهای مشابه را گروهبندی کرده و سپس توضیحی برای اجرای هر کدام به آن اضافه کنید.
- از ابزار مدیریت Cron Job استفاده کنید تا ایجاد و مدیریت کارها آسانتر شود.
- برای آزمایش کرون جاب از گزینه –verbose استفاده کنید تا خروجی دقیقتری داشته باشید.
- بهدرستی خطاها و استثناها را در اسکریپتهای کرون جاب خود مدیریت کنید.
- از متغیر MAILTO در فایل crontab خود برای تعیین یک آدرس ایمیل جهت دریافت اعلانها در هنگام اجرای Cron Job استفاده کنید.
- از متغیر LOGFILE در فایل crontab خود استفاده کنید تا یک فایل log را مشخص کرده و خروجی کارها را در آن مشاهده کنید.
- از عملگر 2>&1 برای تغییر مسیر خروجی stderr (خطای استاندارد) به stdout (خروجی استاندارد) استفاده کنید. این کار میتواند برای رفع عیب (Debug) مفید باشد.
- استفاده از ابزاری مانند Monit را برای نظارت بر سلامت و عملکرد کرون جاب خود در نظر بگیرید.
تنظیم یک Cron Job با استفاده از سیپنل
برای افزودن یک کرون جاب در هاست سی پنل، مراحل زیر را دنبال کنید:
1. ابتدا باید وارد کنترل پنل cPanel شوید.
2. از داشبورد، Cron Job را جستوجو کنید یا به منوی Advanced بروید و روی نماد Cron Jobs کلیک کنید.
3. در مرحله بعد، ایمیلی را انتخاب کنید تا از طریق آن خروجی cron را دریافت کنید. اگر آدرس ایمیل ذکرشده در کنار ایمیل فعلی معتبر است، از آن خارج شوید. اگر میخواهید از آدرس ایمیل دیگری استفاده کنید، آن را در فیلد کنار ایمیل وارد کنید و پس از اتمام کار روی بهروزرسانی ایمیل کلیک کنید.
4. در بخش Add New Cron Job، میتوانید دستوری را که میخواهید اجرا کنید و همچنین فرکانس آن را مشخص کنید. با وارد کردن دستور مورد نظر خود در قسمت پایین فرم با عنوان Command شروع کنید. میتوانید هر دستور لینوکس را در اینجا فهرست کنید یا اگر فایلی دارید که میخواهید در زمان مشخصی اجرا شود، بهسادگی مسیر فایل را ارائه کنید.
5. در مرحله بعد، به قسمت فرم با عنوان Common Settings برگردید و از میان گزینههای موجود لیستشده در منوی کشویی، فرکانس (تعداد تکرار) مورد نظر خود را برای اجرای فرمان انتخاب کنید. این کار بهطور خودکار تنظیمات زمان دیگر را مطابق با انتخاب شما بهروز میکند.
6. همچنین، میتوانید با تنظیم بخشهای زیرین، دفعات تکرار را بهصورت دستی وارد کنید. دقیقه، ساعت، روز، ماه، و روز هفته را میتوان برای دستیابی به نتایج مورد نظر خود تغییر داد.
7. پس از تعیین موارد گفتهشده، بر روی دکمه Add New Cron Job کلیک کنید تا فرایند نهایی شود.
اکنون با استفاده از ابزار Cron Jobs در cPanel با موفقیت دستوری را برنامهریزی کردهاید. بهسادگی این فرایند را برای دستورات دیگر نیز تکرار کنید.
جمعبندی
Cron Daemon سرویسی در سیستمهای مبتنیبر یونیکس است که به شما امکان میدهد اسکریپتهای اتوماتیک را برای زمانبندی وظایف ایجاد کنید. در این مقاله توضیح دادیم که Cron Job چیست و متوجه شدیم که Cron Job ها در واقع وظایفی مانند بهروزرسانی، نصب یا نظارتبر یک سیستم هستند که با استفاده از این ابزار بهصورت خودکار اجرا میشوند.
برای خودکار سازی وظایف، دستور crontab را در فایل cron سیستم خود بنویسید. این دستور شامل اسکریپت اجرا و پنج ستاره است که به زمان اجرای Cron Job اشاره دارد. برای اجرای Cron Job، با استفاده از ترمینال، یک کلاینت SSH یا یک برنامه دیگر CLI با مجوز روت به سیستمعامل لینوکس خود متصل شوید. سپس، یک فایل crontab ایجاد کنید و اسکریپت را با استفاده از یک ویرایشگر متن مانند نانو اضافه کنید.