آموزش کامل Cron Job: راهنمای تنظیمات در لینوکس، cPanel و DirectAdmin
Cron Job چیست و چرا برای سایت شما ضروری است؟
در مدیریت یک وبسایت یا سرور، بسیاری از کارها تکراری هستند: گرفتن بکاپهای روزانه، پاک کردن فایلهای کش، یا ارسال گزارشهای دورهای. انجام دستی این وظایف، وقتگیر و مستعد خطای انسانی است. اینجاست که Cron Job، ابزار قدرتمند اتوماسیون در لینوکس، به کمک شما میآید.
Cron Job یک زمانبندیکننده (Scheduler) است که به شما اجازه میدهد دستورات یا اسکریپتها را برای اجرا در زمانهای مشخص و به صورت کاملا خودکار تنظیم کنید. به زبان ساده، شما به سرور میگویید: «این دستور را هر شب ساعت ۳ بامداد برایم اجرا کن» و سیستم این کار را بدون دخالت شما انجام میدهد.
در این راهنمای کامل، شما یاد خواهید گرفت:
- مفاهیم و ساختار اصلی دستورات کرون جاب چیست.
- چگونه کرون جابها را در محیطهای مختلف مانند سرور لینوکس، cPanel و DirectAdmin تنظیم کنید.
- با مثالهای کاربردی، دستورات پیشرفته بنویسید و مشکلات رایج را حل کنید.
درک ساختار (Syntax) یک دستور کرون جاب
قبل از نوشتن اولین دستور، باید با ساختار آن آشنا شوید. هر Cron Job از دو بخش اصلی تشکیل شده است: زمانبندی و دستور. بخش زمانبندی خود شامل ۵ فیلد است:
* * * * * command_to_execute ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ └─── روز هفته (0 - 6) (یکشنبه=0 یا 7) │ │ │ └──────── ماه (1 - 12) │ │ └───────────── روز ماه (1 - 31) │ └────────────────── ساعت (0 - 23) └─────────────────────── دقیقه (0 - 59)
ستاره (*) در هر فیلد به معنای «هر» است (مثلا هر دقیقه، هر ساعت).
تنظیم Cron Job در سرور لینوکس
اگر از یک سرور مجازی (VPS) استفاده میکنید، کنترل کامل برای تنظیمات cron job از طریق ترمینال را دارید.
دستورات اصلی مدیریت Crontab
- crontab -e: برای ویرایش یا ساخت فایل کرون جاب کاربر فعلی.
- crontab -l: برای مشاهده لیست کرون جابهای فعال.
- crontab -r: برای حذف تمام کرون جابها (در استفاده از این دستور بسیار احتیاط کنید چون تمام کرونها را بدون پرسیدن سوال حذف میکند).
تنظیم Cron Job در cPanel و DirectAdmin (محیط گرافیکی)
برای کاربرانی که از هاست اشتراکی استفاده میکنند، سادهترین راه استفاده از کنترل پنل است. با اینکه کنترل پنلهایی مانند cPanel و DirectAdmin امکان ساخت Cron Job را فراهم میکنند، اما معمولا با محدودیتهایی همراه هستند (مانند حداقل فاصله زمانی ۱۵ دقیقه بین اجراها). برای داشتن کنترل کامل، اجرای اسکریپتهای سنگین و زمانبندیهای دقیق (مثلا هر دقیقه)، هیچ گزینهای بهتر از یک سرور مجازی شخصی نیست.
یک سرور مجازی آلمان با منابع اختصاصی و پایداری بالا، زیرساخت مناسبی را برای اجرای مطمئن و بدون وقفه کرون جابهای حیاتی شما (مانند بکاپگیری یا پردازش داده) فراهم میکند.
کرون جاب در cPanel
- وارد حساب cPanel خود شوید.
- در بخش “Advanced”، روی آیکون “Cron Jobs” کلیک کنید.
- از منوی کشویی “Common Settings” میتوانید یک زمانبندی آماده (مانند یک بار در روز) را انتخاب کنید یا فیلدهای زمانبندی را به صورت دستی پر کنید.
- در فیلد “Command”، دستور خود را وارد کنید (مثلاً: wget -q -O – https://yoursite.com/cron.php >/dev/null 2>&1).
- روی دکمه “Add New Cron Job” کلیک کنید.
کرون جاب در دایرکت ادمین (DirectAdmin)
- وارد حساب DirectAdmin خود شوید.
- در بخش “Advanced Features”، روی “Cronjobs” کلیک کنید.
- روی دکمه “Create Cron Job” کلیک کنید.
- فیلدهای زمانبندی (Minute, Hour, Day, و غیره) را پر کنید.
- در فیلد “Command”، دستور مورد نظر خود را بنویسید.
- روی “Create” کلیک کنید.
مثالهای کاربردی Cron Job (از مبتدی تا پیشرفته)
مثالهای پایه: زمانبندیهای ساده
اجرای یک اسکریپت هر دقیقه :
* * * * * /home/user/script.sh
اجرای یک دستور هر شب راس ساعت ۲:۳۰ بامداد:
30 2 * * * /usr/bin/backup-script
اجرای یک اسکریپت در ساعت ۴ بعد از ظهر روز اول هر ماه:
0 16 1 * * /home/user/monthly-report.sh
مثالهای پیشرفته: زمانبندیهای پیچیده با عملگرها
اجرا هر ۱۰ دقیقه (با عملگر /):
*/10 * * * * command
اجرا در ساعت ۸ صبح در روزهای کاری (با عملگر -):
0 8 * * 1-5 /path/to/script.sh
اجرا فقط در دقایق و روزهای مشخص (با عملگر ,):
0,15,30,45 * * * 6,0 command (در دقایق مشخص، فقط در شنبه و یکشنبه)
استفاده از کرون جاب برای بکاپ گیری خودکار
از کرون جاب برای بکاپ گرفتن خودکار از دیتابیسها و فایل ها میتونین استفاده کنید، این دستور برای کاربرانی که بصورت روزانه یا هفتگی نیاز به گرفتن بکاپ دارند، بسیار مفید است.
بکاپگیری خودکار از دیتابیس هر شب ساعت ۳ بامداد:
0 3 * * * mysqldump -u root -p database_name > /backup/db_backup_$(date +\%F).sql
مثالهای خاص: استفاده از رشتههای میانبر
برای زمانبندیهای رایج، میتوانید از این رشتههای آماده استفاده کنید:
- @hourly: اجرا در ابتدای هر ساعت.
- @daily: اجرا هر روز در نیمهشب (ساعت ۰۰:۰۰).
- @weekly: اجرا یکشنبه هر هفته در نیمهشب.
- @monthly: اجرا در روز اول هر ماه.
- @reboot: اجرا فقط یک بار، پس از هر بار راهاندازی سیستم.
مثال: @daily /home/user/full-backup.sh
عیبیابی: چرا کرون جاب من اجرا نمیشود؟
ذخیره خروجی در یک فایل لاگ
برای اینکه ببینید اسکریپت شما چه خروجیای تولید میکند یا با چه خطایی مواجه شده، آن را در یک فایل ذخیره کنید.
* * * * * /path/to/script.sh >> /home/user/my_script.log 2>&1
در این دستور، >> خروجی استاندارد را به انتهای فایل اضافه میکند و 2>&1 خطاهای استاندارد را نیز به همان فایل هدایت میکند.
غیرفعال کردن ایمیلهای اطلاعرسانی
اگر نمیخواهید برای هر بار اجرای کرون ایمیل دریافت کنید، خروجی را به /dev/null (یک فضای پوچ) ارسال کنید:
* * * * * /path/to/script.sh > /dev/null 2>&1
بررسی لاگ اصلی سیستم در لینوکس
برای اینکه ببینید آیا خود سرویس Cron در حال تلاش برای اجرای وظایف هست یا نه، میتوانید لاگ سیستم را بررسی کنید.
- در اوبونتو/دبیان: grep CRON /var/log/syslog
- در CentOS/RHEL: grep CRON /var/log/cron
توجه: Cron همیشه مسیرهای (PATH) استاندارد سیستم را نمیشناسد. همیشه مسیر کامل دستورات خود را بنویسید (مثلاً /usr/bin/php به جای php).
بصورت پیش فرض سرویس کرون جاب فعال هست، اما با دستورات زیر میتونین بررسی کنین که آیا سرویس cron
در حال اجرا است یا نه. در سیستم اوبونتو و دبیان، میتونین وضعیت را با استفاده از systemctl
یا دستورات service
بررسی کنید:
sudo systemctl status cron یا sudo service cron status
اگر وضعیت سرویس Active باشد پس این سرویس در حال اجرا هست ولی اگر inactive نوشت یعنی کرون جاب فعال نیست.
ابزارهای کمکی
برای ساخت آسان زمانبندیهای پیچیده، میتوانید از وبسایتهای آنلاینی مانند crontab.guru یا crontab-generator.org استفاده کنید.
حالا که به قدرت و انعطافپذیری Cron Job مسلط شدید، گام بعدی پیادهسازی این دستورات در یک محیط واقعی است. برای اجرای مطمئن وظایف خودکار و حیاتی، خرید VPS از بلوسرور با منابع پایدار و دسترسی کامل، بهترین بستر برای شما خواهد بود.
فهرست تیترها