راهنمای جامع کرون جاب
راهنمای جامع زمان بندی وظایف: از سرورهای لینوکسی تا پلتفرم های ابری
در توسعه وب مدرن، اتوماسیون وظایف نقشی کلیدی در مدیریت سرورها، همگام سازی دیتابیس ها و به روزرسانی پلتفرم ها دارد. زمان بندی (Scheduling) در سیستم عامل های مبتنی بر لینوکس و یونیکس به شما اجازه می دهد وظایف مختلف (مثل اجرای اسکریپت های Node.js، درخواست های API در Next.js یا کوئری های دیتابیس) را در زمان های دقیقی که برایش تعریف می کنید، به صورت کاملا خودکار در پس زمینه اجرا کنید.
۱. تفاوت کلیدی Cronjob و Crontab
بسیاری از توسعه دهندگان این دو اصطلاح را به جای هم استفاده می کنند، اما در معماری سرور تفاوت معنایی و عملکردی مشخصی دارند:
- مفهوم Cronjob (کرون جاب): به خود «وظیفه» یا «تسک» زمان بندی شده گفته می شود. وقتی شما یک دستور را تنظیم می کنید تا هر شب ساعت ۱۲ اجرا شود، در واقع یک کرون جاب ساخته اید.
-
مفهوم Crontab (کرون تب - Cron Table):
فایل متنی یا جدولی است که لیست تمام کرون جاب ها در آن ذخیره می شود. همچنین
crontabنام دستوری در محیط ترمینال است که با آن این فایل را ویرایش، مشاهده یا مدیریت می کنید. سیستم عامل با خواندن کرون تب متوجه می شود چه وظیفه ای (کرون جاب) در چه زمانی باید اجرا گردد.
۲. ساختار و آناتومی اصلی Cron
یک دستور زمان بندی از ۵ ستاره تشکیل شده است که هر کدام با یک فاصله از هم جدا شده اند و نماینده یک واحد زمانی مشخص هستند. ترکیب این ستاره ها زمان دقیق اجرای دستورات را مشخص می کند:
۳. کاراکترهای ویژه در زمان بندی (Operators)
برای ایجاد زمان بندی های پیچیده تر، لینوکس چند کاراکتر ویژه در اختیار ما قرار می دهد که شناخت آن ها برای نوشتن اسکریپت های بهینه تر بسیار مهم است:
- ستاره (*): یعنی «هر» واحد زمانی. مثلا ستاره در بخش ماه یعنی هر ماه.
- کاما (,): برای لیست کردن مقادیر متعدد. مثلا
1,3,5در بخش روزهای هفته یعنی دوشنبه، چهارشنبه و جمعه. - خط تیره (-): برای تعیین محدوده (Range). مثلا
9-17در بخش ساعت یعنی هر ساعت از ۹ صبح تا ۵ عصر. - اسلش (/): برای تعیین گام یا فواصل زمانی (Steps). مثلا
*/15در بخش دقیقه یعنی هر ۱۵ دقیقه یک بار.
۴. میان برهای ساده و آماده (Shortcuts)
به جای درگیری با اعداد و ساختارهای پیچیده، می توانید از کلمات کلیدی استاندارد زیر برای زمان بندی های روتین استفاده کنید:
اجرای دستور سر هر ساعت — دقیقا زمانی که دقیقه به صفر می رسد.
اجرای دستور هر روز نیمه شب — مناسب برای تولید گزارش ها یا آپدیت سورس کدهای گیتهاب.
اجرای دستور هر یکشنبه نیمه شب — ایده آل برای تسک های پاک سازی هفتگی دیتابیس.
اجرای دستور فقط یک بار پس از بوت سیستم — کاربردی برای راه اندازی مجدد سرویس های Node.js.
۵. مدیریت وظایف در سرورهای لینوکس و کنترل پنل ها
نحوه تعریف این زمان بندی ها بسته به محیط هاستینگ شما متفاوت است.
الف) سرورهای خام لینوکسی (VPS)
در سرورهای اوبونتو یا لینوکسی، مدیریت این تسک ها از طریق ابزار ترمینال انجام می شود:
crontab -e: باز کردن فایل زمان بندی برای ویرایش.crontab -l: مشاهده لیست تمام وظایف فعال.crontab -r: حذف کامل تمام وظایف کاربر فعلی.
نمونه: بکاپ گیری شبانه از دیتابیس (PostgreSQL)
برای پشتیبان گیری خودکار از دیتابیس با ابزار pg_dump در ساعت ۲:۳۰ بامداد هر روز و ذخیره آن با تاریخ همان روز در سرور اختصاصی: