کرون جاب چیست؟ چگونه در دایرکت ادمین Cron Job ایجاد کنیم؟
Definition of Cron Jobs and Learn How to Create it, in Direct Admin
امیررضا مهدیان۲ هفته پیشآخرین به روز رسانی: ۱۴۰۳/۰۳/۲۶
کرون جابها (Cron Jobs) با هدف ایجاد اتوماسیون و خودکارسازی عملیات به سیستم عامل لینوکس اضافه شدهاند. اگر با این سیستم عامل آشنا نیستید، و بیشتر زمان خود را با سیستم عامل ویندوز گذراندهاید، میتوانید کرون جاب را با Schedule task مقایسه کنید.
انسانها از ابتدا به ایجاد اتوماسیون و خودکارسازی فرآیندها علاقه داشتهاند و این عادت همچنان همراه ماست!
علاوه بر سیستم کرون جاب فعال در پنل دایرکت ادمین، یک سیستم کرون جاب نیز در سایتهای فعال بر بستر وردپرس فعال است. همچنین، ماژولهای بسیاری در جهت اضافه کردن این سیستم اتوماسیون به سایتها وجود دارند که همه اینها اشاره به اهمیت Cron Jobs دارد.
توجه داشته باشید که کرون جابها تنها وظیفه به اجرا در آوردن اسکریپتها، یا به عبارتی وظایف (tasks) را بر عهده دارند و به خودی خود، قادر به انجام کاری نیستند. پس برای استفاده از Cron job ها، باید به زبانهای برنامه نویسی و اسکریپتها آشنایی داشته باشید.
در این مقاله از نت افراز بلاگ میخواهیم به بررسی تعریف کرون جاب و نحوه ایجاد یک کرون جاب، از طریق کنترل پنل دایرکت ادمین بپردازیم. در ادامه با ما همراه باشید.
کرون جاب (Cron Job) چیست؟
برای درک مفهوم کرون جاب، باید ابتدا با مفهوم کرون (Cron) آشنا شوید. کرون یک اصطلاح لینوکسی است که به زبان ساده به معنای “چرخه” یا “دوره” میباشد. مدت زمان هر کرون در سیستمهای مختلف متفاوت و قابل تعریف است. به عنوان مثال، مدیر یک سرور میتواند دوره تناوب هر کرون را با استفاده از دستورات لینوکسی تعریف نماید.
کرون در یک سیستم عامل لینوکسی میتواند ۱ دقیقه تعریف شده باشد و در سیستم دیگر، هر کرون برابر با ۱ سال باشد. این مسئله به سیاست مدیر سیستم بازمیگردد و میتواند بسیار متغیر باشد. اکنون که با مفهوم کرون آشنا شدید، به راحتی میتوانید متوجه Cron Job شوید.
اگر شما نیز مدیر و صاحب یک وبسایت یا ادمین یک شبکه و یک سرور باشید، مطمئنا اصطلاح Cron Job را قبلا شنیدهاید. در این مقاله، جزییات کامل تری از این امکان را برای شما شرح خواهیم داد.
یکی از مواردی که کاربرد زیادی در زمینه مدیریت شبکه و وبسایت یا سرور دارد، اجرای برخی دستورات به صورت زمانبندی شده و خودکار توسط سرور میزبان است.
برای مثال، شما میخواهید در طول شبانه روز در یک ساعت خاص یک دستور مشخص اجرا شود، پروسهای را طی کند و عملیات مد نظر شما را انجام دهد. یا یک دستور بصورت متوالی چند دقیقه یکبار اجرا شده و عملیاتی را اجرا نماید. اینجاست که CronJobها به کمک شما خواهند آمد. در اصل کاربرد اصلی CronJob ها، تعیین وظایف زمانبندی شده بهصورت منظم و مشخص است که دستورات مد نظر شما را در یک زمان مشخص در سرور اجرا خواهند کرد.
به صورت کلی، عملیات بسیار مختلفی را میتوان با کمک این امکان انجام داد. از جمله این عملیات میتوان به خودکارسازی بسیاری از موارد تکراری و اتوماسیون اشاره کرد. حتی بسیاری از مواردی که نیاز به بررسی روزانه دستی توسط انسان دارند را میتوان به صورت یک کد نوشت. بنابراین این ابزار خودکار اجرا شده، نیاز شما به نیروی انسانی را کاهش میدهد.
توجه کنید که در سیستمهای لینوکسی، وظایف طبقهبندی شده تحت عنوان Cron Job و در سیستم عامل ویندوز، وظایف طبقهبندی شده تحت عنوان Scheduled Tasks نامگذاری شده است و در هر دو سیستم عامل امکان اجرای دستورات مشخص در زمان مشخص فراهم میباشد.
به زبان ساده، به مجموعه کارهایی که در هر کرون (دوره) انجام میشود، کرون جاب میگویند.
کرون جابها امکان اجرای یک دستور (Command)، فایل و یا اسکریپت را به صورت اتوماتیک برای کاربران فراهم میکنند. هر کرون جاب، میتواند اجرای یک یا چندین دستور را به صورت زمانبندیشده، برای شما فراهم آورد.
شاید حائز اهمیتترین نکته در رابطه با Cron job ها، امکان شخصی سازی بسیار بالای آنها باشد. شما میتوانید، مسائلی همچون:
- زمان اجرای کرون جاب
- تعداد دفعات اجرای Cron Job
- ارسال یا عدم ارسال نتیجه اجرای کرون جاب
و بسیاری از موارد دیگر را با بالاترین جزئیات، به صورت مجزا برای هر کرون جاب تعریف نمایید.
حجم زیادی از کارها، در طول روز به کمک کرون جابها در حال انجام هستند. ارسال ایمیلها، بکاپهای اتوماتیک سیستمی و… پرکاربردترین مثالها برای اطلاع از اهمیت Cron job ها هستند.
در توضیح کرون جاب، به اطلاعات ارائه شده در این نوشته بسنده میکنیم و بدون اتلاف وقت، به سراغ یادگیری کار با کرون جابها در کنترل پنل دایرکت ادمین میرویم.
ایجاد کرون جاب در پنل دایرکت ادمین
اگر از همراهان ما هستید و سرویس میزبانی خود را از نت افراز تهیه کردهاید، کار برای شما بسیار راحت خواهد بود. چرا که پنل دایرکت ادمین به وسیله تیم پشتیبانی ما به صورت اختصاصی فارسی و راست چین شده و کار را برای کاربران بسیار راحت کرده است.
در قدم اول، باید “وارد پنل دایرکت ادمین” هاست خود شوید. پس از آن در صفحه اصلی، از قسمت تنظیمات پیشرفته (مطابق با تصویر)، بر روی گزینه “کرون جابها” کلیک نمایید. با این کار صفحه مدیریت Cron job ها برای شما در دسترس قرار خواهد گرفت.
در صفحه جدید، یک رابط کاربری قرار گرفته که از طریق آن میتوانید کرون جاب خود را پیکربندی (Config) کنید. این رابط کاربری موجب میشود که تنظیم کرون جاب، راحتتر شود و کاربرانی که از اسکریپتهای آماده نیز استفاده میکنند، بتوانند کرون جاب خود را راه اندازی کنند.
نحوه تنظیم هر یک از این موارد متفاوت از دیگریست، اما قوانینی برای مشخص کردن هر کرون جاب وجود دارد که ثابت هستند. این موارد عبارتند از:
- موارد مشخص کننده زمان، تنها اعداد و کاراکتر “*” (ستاره)، هستند.
- متغیر پیش فرض برای هر کرون، مقدار “*” است.
- عدم تغییر تمامی متغیرهای پیش فرض، سبب ایجاد کرون لوپ (Cron loop) خواهد شد، که در صورت وقوع این اتفاق، اسکریپت شما به صورت پیاپی اجرا خواهد شد و این مسئله میتواند موجب افزایش فشار سرور و داون شدن سایت شما شود. به همین دلیل، پنل به شما اجازه نمیدهد که برای کلیه مولفهها از عبارت ستاره استفاده کنید.
در ادامه با یک مثال عملی کار را پیش میبریم. برای نمونه، ما یک اسکریپت بکاپ با نام backup.php نوشتهایم که دستورات موجود در آن، سبب ایجاد یک نسخه بکاپ از سایت ما میشود. توجه داشته باشید که برای نوشتن یک اسکریپت لینوکسی، نیاز به مهارت زیادی در کار با لینوکس و یک زبان برنامه نویسی تحت وب دارید، پس حتما در زمان نوشتن اسکریپت، از یک متخصص باتجربه کمک بگیرید.
اکنون به سراغ کنترل پنل میرویم و بررسی میکنیم که به کمک پنل دایرکت ادمین، به چه روشهایی قادر به اجرای اسکریپت خود هستیم.
اجرای اسکریپت در تاریخ و زمان مشخص
سادهترین روش برای مشخص کردن زمان اجرای کرون جاب، اجرای آن در یک زمان ثابت و بدون تکرار است. مثلا میخواهیم، با استفاده از اسکریپت خود، یک بکاپ در ساعت ۴ و ۳۰ دقیقه روز اول هر ماه تهیه کنیم. به سادگی از طریق پنل، مولفههای کرون جاب را معادل مقادیر زیر قرار میدهیم:
- دقیقه : ۳۰
- ساعت : ۰۴
- روز از ماه : ۰۱
- ماه :*
- روز از هفته :*
توجه داشته باشید که کاراکتر ستاره، به معنای یک کرون کامل از هر متغیر میباشد. پس قرار دادن مقدار ستاره برای مولفه “ماه”، به معنای یک بار اجرا در هر ماه میباشد. اطلاعات بیشتر را در جدول پایین ارائه کردهایم.
مولفه | دوره کرون | مقادیر مجاز |
دقیقه | ۵۹ دقیقه | ۰-۵۹ |
ساعت | ۲۳ ساعت | ۰-۲۳ |
روز از ماه | حداکثر ۳۱ روز | ۱-۳۱ |
ماه | ۱۲ ماه | ۱-۱۲ |
روز از هفته | ۷ روز | ۰-۷ |
یک نکته مهم را همواره در ذهن داشته باشید. هسته لینوکس، به وسیله کشورهای غربی توسعه یافته که همین امر موجب شده، عملگرهای آن بر پایه قوانین آنها باشد. نمونهای از این مسئله در بحث روزهای هفته نمود میکند.
اجرای مکرر اسکریپت، در هر کرون
فرضا اسکریپتی نوشتهاید که نیاز به چندین بار اجرا در هر کرون دارد. مثل اسکریپتهایی که برای ارسال دستهای ایمیلها نوشته میشوند و کمک میکنند که ایمیلهای خبرنامه به صورت یکباره چندین بار در طول روز، هفته یا ماه ارسال شوند.
روش اول
برای این کار، باید از کاراکتر ستاره در کنار دفعات مورد نیاز برای هربار اجرای اسکریپت خود استفاده کنیم. با فرض اینکه میخواهیم ۴ بار در روز ایمیلهای خبرنامه برای کاربران سایت ارسال شوند، مولفههای ما به شکل زیر خواهند بود:
- دقیقه : *
- ساعت : ۶/*
- روز از ماه : *
- ماه :*
- روز از هفته :*
از آنجایی که مایلیم ایمیلهای خبرنامه به صورت ثابت و روزانه ارسال شوند، برای کلیه مولفهها مقدار ستاره را در نظر میگیریم. اما چگونه تعریف کنیم که ارسال ایمیلها باید ۴ بار در طول شبانه روز صورت بگیرد؟
برای این کار از عبارت ۶/* برای مولفه ساعت استفاده میکنیم. این مقدار به این معناست که اسکریپت ما باید در هر ۶ ساعت، یک بار اجرا شود. که با این کار، ۴ بار در طول شبانه روز، اسکریپت ما اجرا خواهد شد.
روش دوم
در روش قبلی، زمان دقیق اجرای اسکریپت مشخص نیست. فقط میدانیم که اسکریپت ما ۴ بار در طول ۲۴ ساعت اجرا خواهد شد. اما اگر بخواهیم این ساعات را خودمان تعیین کنیم باید چه کار کرد؟
در این شرایط باید از کاراکتر “,” در میان اعداد استفاده کنیم. با فرض اینکه میخواهیم اسکریپت ما در ساعت ۳، ۹، ۱۵ و ۲۱ اجرا شود، باید به شکل زیر عمل کنیم:
- دقیقه : *
- ساعت : ۲۱,۱۵,۹,۳
- روز از ماه : *
- ماه :*
- روز از هفته :*
با کمی شخصی سازی بیشتر، میتوانیم مولفه “روز از هفته” را معادل ۴ قرار دهیم که با این کار، ایمیلهای خبرنامه تنها در پنج شنبه هر هفته ارسال خواهد شد.
تنظیم کرون جاب، برای یک بازه زمانی خاص
چنانچه نیاز دارید یک اسکریپت در یک بازه مشخص به صورت متداول اجرا شود، باید از کاراکتر “-” (خط تیره) برای تعریف متغیر خود استفاده کنید. مثل همیشه با یک مثال به سراغ توضیح این مسئله میرویم.
اجرای متداول یک اسکریپت کار رایجی نیست، اما باید بدانید که پیاده سازی این کار، از طریق کرون جابها فراهم شده است. برای اجرای متداول اسکریپت خود در بازه زمانی ۱۷:۳۰ الی ۱۷:۳۵، پیکربندی کرون جاب ما باید به شکل زیر باشد:
- دقیقه : ۳۵-۳۰
- ساعت : ۱۷
- روز از ماه : *
- ماه :*
- روز از هفته :*
با این کار کرون جاب ما به صورت پیاپی در بازه زمانی مشخص شده اجرا خواهد شد. به این صورت که با اولین اجرای Cron Job، اسکریپت اجرا خواهد شد و یک کنترلر، مسئولیت بررسی به پایان رسیدن اسکریپت را بر عهده خواهد گرفت. همزمان با به پایان رسیدن اسکریپت، کنترلر این مسئله را به سیستم عامل اعلام خواهد کرد و کرون جاب مجدد اجرا خواهد شد. اینکه در این بازه زمانی، کرون جاب شما چندین بار اجرا شود، به فاکتورهای بسیاری بستگی دارد که بررسی آن، خارج از حوصله این مقاله است.
تعیین دستور و گامهای پایانی
پس از پیکربندی اجرای کرون جاب، نوبت به تعریف دستور میرسد. برای این کار باید اسکریپت خود را در پوشه مدنظر خود قرار دهید و آدرس فایل را مطابق الگوی زیر وارد نمایید:
/usr/local/bin/php /home/username/domains/domain.com/public_html/cron.php
بخش قرمز رنگ برای تمامی سایتها ثابت است، اما بخش آبی رنگ، برای هر سایت متفاوت خواهد بود.
پارامترهای آدرس دهی اسکریپت (قسمت آبی رنگ) به شکل زیر هستند:
home: مطابق با تصویر بالا، این پارامتر از صفحه ایجاد کرون جاب، قابل مشاهده است.
username: مطابق با تصویر بالا، این پارامتر از صفحه ایجاد کرون جاب، قابل مشاهده است.
domains: این مقدار ثابت است و نیاز به تغییر ندارد.
domains.com: آدرس دامنه سایت خود را وارد کنید. توجه داشته باشید که هر پسوند دامنه قابل قبول است و برای تنظیم کرون جاب، نیاز نیست که حتما از دامنه com استفاده نمایید.
public_html: این مقدار ثابت است و نیاز به تغییر ندارد. توجه داشته باشید، که چنانچه فایل اسکریپت خود را در دایرکتوری دیگری در داخل public_html قرار دادهاید، باید آدرس آن را در ادامه وارد کنید. مثلا اگر ما یک دایرکتوری با نام dir ایجاد کنیم و اسکریپت خود را در آن قرار دهیم، آدرس کرون جاب ما به شکل زیر خواهد بود:
/usr/local/bin/php /home2/netafra4/domains/netafrazblog.ir/public_html/dir/netafraz.php
توجه داشته باشید که انتهای آدرس شما باید به فایل اسکریپت ختم شود و حتما به فرمت فایل نیز اشاره شود. مثلا ما نام اسکریپت خود را netafraz قرار دادهایم و از آنجایی که این اسکریپت به زبان php نوشته شده است، در انتهای آن به فرمت فایل (php) نیز اشاره کردهایم.
نهایتا تنها کافیست که بر روی گزینه “افزودن” کلیک کنید.
توجه داشته باشید، مسیر اجرای php در سرورهای مختلف متفاوت است. در مثالی که ذکر کردیم مسیر به صورت:
/usr/local/bin/php
بود که این مسیر میتواند بسته به کانفیگ و تنظیمات نرم افزاری سرورها و نسخههای مختلف php نصب شده روی سرورها، متفاوت باشد. پس جهت اطمینان از صحت و صحیح بودن مسیر فوق حتما با شرکت هاستینگ خود مشورت نمایید تا از صحیح بودن مسیر و اجرا شدن کد مدنظرتان، اطمینان حاصل فرمائید.
ایجاد کرون جاب در پنل سی پنل:
در صورتی که کنترل پنل هاست شما سی پنل باشد نیز میتوانید از امکان CronJob استفاده کرده و کدی را به صورت زمانبندی شده در هاست اجرا نمایید.
در سرورهای سی پنل نیز میتوانید مطابق با تصویر زیر بر روی CronJob کلیک کنید:
سپس در این بخش، میتوانید زمان بندی مربوطه را مشخص کرده و در بخش Command نیز مسیر فایل مشخصی را جهت اجرای خودکار در سرویس هاست خود مشخص کنید. در نهایت با کلیک بر روی گزینه Add New Cron job، میتوانید عملیات یا Task زمانبندی شده مدنظرتان را ایجاد نمایید.
سخن پایانی
در این مقاله از نت افراز بلاگ، به بررسی کرون جابها و نحوه ایجاد کرون جاب در پنل دایرکت ادمین پرداختیم. استفاده صحیح از پتانسیل Cron job ها، به شما کمک میکند تا به راحتی بتوانید، بسیاری از کارها را به صورت زمانبندی شده و بدون دخالت نیروی انسانی انجام دهید.
این مسئله نهتنها باعث صرفه جویی در هزینهها میشود، بلکه موجب میشود که زمان خود را بهتر مدیریت کنید. چه لذتی بهتر از اینکه وقتی در حال استراحت هستید، همچنان سایت شما در حال فعالیت و پیشرفت باشد؟!
نهایتا امیدواریم که از این نوشته بهره کافی را برده باشید. هدف ما در تیم نت افراز، پاسخگویی به سوالات و برطرف کردن مشکلات اولیه شماست. پس چنانچه سوالی در رابطه با این نوشته دارید، از طریق بخش ارسال نظرات در پایین این برگه با ما در ارتباط باشید.
موفقیت همراه راهتان باد.
https://www.netafraz.com/blog/learn-how-to-create-cron-jobs-in-direct-admin/