آنچه در این مقاله میخوانید [پنهانسازی]
در دنیای مدیریت سرورها و سیستمهای لینوکسی، یکی از ابزارهای حیاتی برای خودکارسازی وظایف، Cron Job است. این ابزار به مدیران سیستم و توسعهدهندگان اجازه میدهد تا دستورات یا اسکریپتها را در زمانهای مشخص و بهصورت خودکار اجرا کنند. با استفاده از Cron، میتوانید وظایفی مانند پشتیبانگیری، ارسال ایمیل، بروزرسانی سیستم یا اجرای برنامهها را بهصورت زمانبندیشده انجام دهید.
در این مقاله، با ساختار و عملکرد Cron Job آشنا میشویم، کاربردهای آن را بررسی میکنیم، نحوه ایجاد و ویرایش کرونجابها را توضیح میدهیم و نکات مهم برای بهینهسازی آنها را مرور میکنیم. اگر به دنبال یادگیری زمانبندی خودکار وظایف در لینوکس هستید، این راهنما دقیقاً همان چیزی است که نیاز دارید.
سرفصل های مقاله
Cron Job چیست؟
Cron مخفف “Chronos”، خدای زمان در یونان باستان یک ابزار زمانبندی وظایف در سیستمعاملهای شبه یونیکس است.
> Cron Job یا کرونجاب به هر دستور یا اسکریپتی گفته میشود که توسط Cron daemon در زمان مشخص اجرا میشود.
Cron daemon (crond) در پسزمینه سیستم اجرا میشود و فایلهای کرون کاربران را بررسی کرده و بر اساس آنها وظایف زمانبندیشده را اجرا میکند.
ساختار زمانبندی در Cron چگونه است؟
هر Cron Job دارای یک زمانبندی خاص است که با ۵ فیلد عددی و یک دستور مشخص میشود. قالب کلی یک کرونجاب به شکل زیر است:
* * * * * command-to-execute
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── روزهای هفته (0 – 7) (0 و 7 هر دو یکشنبه هستند)
│ │ │ └──────── ماه (1 – 12)
│ │ └──────────── روز ماه (1 – 31)
│ └──────────────── ساعت (0 – 23)
└──────────────────── دقیقه (0 – 59)
مثال:
0 2 * * * /home/user/backup.sh
این Cron Job اسکریپت backup.sh را هر روز ساعت ۲ صبح اجرا میکند.
نحوه ایجاد و ویرایش Cron Job
برای ایجاد یا ویرایش کرونجاب خود، از دستور زیر استفاده میکنیم:
crontab -e
این دستور فایل کرون مخصوص کاربر فعلی را باز میکند. هر خط از این فایل یک Cron Job جداگانه است.
برای مشاهده کرونجابهای فعال:
crontab -l
برای حذف همه کرونجابهای فعلی:
crontab -r
نمونه های کاربردی Cron Job
در اینجا چند مثال کاربردی از Cron Job آورده شده است:
- اجرای اسکریپت هر روز ساعت مشخص:
0 7 * * * /home/user/script.sh
- پاکسازی لاگهای قدیمی هر هفته:
0 3 * * 0 rm -f /var/log/*.log
- ارسال ایمیل روزانه:
30 8 * * * /home/user/send_report.sh | mail -s “گزارش روزانه” user@example.com
- اجرای Cron Job هر ۵ دقیقه:
*/5 * * * * /home/user/check_status.sh
محل ذخیره فایل های کرون در لینوکس
در سیستمعاملهای لینوکسی، Cron Jobها میتوانند در مکانهای مختلفی تعریف شوند:
- فایل کاربران : crontab -e مخصوص هر کاربر
- فایلهای سیستمی:
/etc/crontab
/etc/cron.d/
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.weekly/
/etc/cron.monthly/
توجه داشته باشید که فایلهای etc/crontab/ دارای یک فیلد اضافی برای مشخص کردن نام کاربر اجراکننده هستند.
نکات مهم در استفاده از Cron Job
- حتماً مسیر کامل دستورات را در کرونجاب بنویسید مثلا ( /usr/bin/python3)
- خروجی کرونجابها را به فایل لاگ هدایت کنید:
* * * * * /path/to/script.sh >> /var/log/myscript.log 2>&1
- محیط اجرای کرونجاب محدود است؛ بنابراین متغیرهای محیطی را بهصورت دستی تعریف کنید یا از اسکریپتهایی استفاده کنید که آنها را در خود دارند.
بررسی سلامت و دیباگ Cron Job
اگر کرونجاب شما اجرا نمیشود، مراحل زیر را بررسی کنید:
- بررسی فایل لاگ سیستم:
grep CRON /var/log/syslog
- بررسی پرمیشن فایل اسکریپت
- افزودن لاگنویسی دستی در فایل اسکریپت برای بررسی اجرا
- اطمینان از وجود bin/bash/!# در ابتدای اسکریپتها
Cron Job و اتوماسیون DevOps
در حوزه DevOps و مدیریت سرور، استفاده از Cron برای زمانبندی وظایف خودکار، مثل اجرای تستها، پشتیبانگیری، پاکسازی کش یا اجرای CI/CD، یکی از اصول کلیدی است. ابزارهایی مانند Jenkins، GitLab CI یا Ansible نیز میتوانند با Cron ترکیب شوند تا اتوماسیون کاملتری ارائه دهند.
جمع بندی
Cron Job Cron Job در لینوکس یکی از پایهایترین و در عین حال قدرتمندترین ابزارهای زمانبندی است. با یادگیری نحوه تعریف، اجرای درست، دیباگ و بهینهسازی کرونجابها، میتوانید بسیاری از وظایف روزمره را بهصورت خودکار انجام داده و در زمان و انرژی صرفهجویی کنید. این مهارت برای هر مدیر سرور، توسعهدهنده یا متخصص DevOps ضروری است.