راهنمای جامع کرون جاب
Cronjob در واقع یک زمانبند (Scheduler) در سیستمعاملهای مبتنی بر لینوکس و یونیکس است که وظایف مختلف (مثل اجرای اسکریپتها، درخواستهای API یا کوئریهای دیتابیس) را در زمانهای دقیقی که برایش تعریف میکنید، به صورت کاملاً خودکار در پسزمینه اجرا میکند. در توسعه وب مدرن، کِرونجابها نقشی کلیدی در اتوماسیون وظایف وبلاگ دارند.۱. ساختار و آناتومی اصلی Cron
یک دستور زمانبندی Cron از ۵ ستاره تشکیل شده است که هر کدام با یک فاصله (Space) از هم جدا شدهاند و نماینده یک واحد زمانی مشخص هستند. ترکیب این ستارهها زمان دقیق اجرای دستورات را مشخص میکند:
۲. میانبرهای ساده و آماده (Shortcuts)
به جای درگیری با اعداد و ساختارهای پیچیده، میتوانید از کلمات کلیدی استاندارد زیر برای زمانبندیهای روتین استفاده کنید:
-
@hourly 0 * * * *اجرای دستور سر هر ساعت — دقیقاً زمانی که دقیقه به صفر میرسد
-
@daily 0 0 * * *اجرای دستور هر روز ساعت ۱۲ نیمهشب — شروع روز جدید
-
@weekly 0 0 * * 0اجرای دستور هر هفته یکشنبه نیمهشب — شروع هفته جدید
-
@monthly 0 0 1 * *اجرای دستور هر ماه روز اول، ساعت ۱۲ نیمهشب — شروع ماه جدید
-
@yearly 0 0 1 1 *اجرای دستور هر سال اول ژانویه، ساعت ۱۲ نیمهشب — شروع سال جدید
-
@reboot —اجرای دستور فقط یک بار بلافاصله پس از راهاندازی مجدد سرور — مناسب برای تسکهای یکباره هنگام بوت
۳. نمونههای کاربردی در سرورهای سنتی (VPS / Linux)
در سرورهای اوبونتو یا لینوکسی، با اجرای دستور crontab -e فایل زمانبندی باز میشود و میتوانید دستورات زیر را در آن قرار دهید:
الف) انتشار خودکار پستهای زمانبندی شده (Scheduled Posts)
برای اینکه سیستم هر ۵ دقیقه یکبار با ابزار curl اندپوینت وبلاگ شما را صدا بزند و پستهای رزرو شده را منتشر کند:
ب) بکاپگیری شبانه از دیتابیس (PostgreSQL)
برای پشتیبانگیری خودکار از دیتابیس با ابزار pg_dump در ساعت ۲:۳۰ بامداد هر روز:
۴. کِرونجاب در محیطهای ابری مدرن (Serverless Cron)
در پروژههای مدرن Next.js که روی پلتفرمهای ابری (Serverless) مستقر میشوند، سرور ثابتی برای اجرای دستورات لینوکسی وجود ندارد. در این معماری، پلتفرمها به صورت نیتیو آدرسهای URL مشخصی از پروژه شما را در زمانهای تعیین شده صدا میزنند.
۱. پلتفرم Vercel (انتخاب استاندارد Next.js)
برای تنظیم کِرونجاب در ورسل، کافیست فایلی به نام vercel.json را در ریشه (Root) پروژه خود ایجاد کنید. ورسل به صورت خودکار این فایل را میخواند و اندپوینت شما را صدا میزند:
در این کانفیگ، ورسل سر هر ساعت (0 * * * *) یک درخواست GET به مسیر /api/cron/publish-posts ارسال میکند.
۲. پلتفرم Render
پلتفرم Render ساختار متفاوتی دارد. به جای فایل کانفیگ، شما در پنل کاربری خود یک سرویس جدید از نوع Cron Job ایجاد میکنید. در تنظیمات آن، دستور اجرای اسکریپت بکاند خود را وارد میکنید:
سپس در فیلد زمانبندی پنل، مقدار کِرون را روی گزینههایی مثل @daily یا ستارههای مرسوم تنظیم میکنید تا اسکریپت مستقل از وبسایت اصلی اجرا شود.
۳. پلتفرم Railway
در پلتفرم Railway، مدیریت کِرونجابها معمولاً از طریق کانتینرهای داکر یا متغیرهای محیطی انجام میشود. با افزودن ویژگی زمانبندی به تگ سرویس یا استفاده از پکیجهایی مانند cron در اِندپوینتهای Node.js، ریلوِی تضمین میکند که کانتینر شما برای انجام کارهای دورهای (مثل دستور npm run db:migrate) همیشه بیدار بماند.
۴. سرویس GitHub Actions (راهحل رایگان و همهفنحریف)
اگر کدهای خود را روی گیتهاب میزبانی میکنید، میتوانید از ابزار CI/CD گیتهاب به عنوان یک کِرونجاب کاملاً رایگان استفاده کنید. کافیست یک فایل در مسیر .github/workflows/cron-job.yml بسازید:
با این کار، خودِ گیتهاب سر هر هفته یک سیستم اوبونتو بالا میآورد، دستور curl را اجرا کرده و اِندپوینت وبسایت شما را فعال میکند.