کرون جاب چیست؟
کرون جاب یه مکانیزم زمان بندی در سیستم عامل های شبه یونیکسه که به شما این امکان رو میده که دستورات یا اسکریپت ها رو به صورت خودکار و در زمان های معین اجرا کنید سرویس کرون در پس زمینه اجرا میشه و هر دقیقه یکبار بررسی میکنه که آیا وظیفه ای برای اجرا وجود داره یا نه
تفاوت Cron، Crontab و Cron Job
Cron: خود سرویس یا دیمونی که تو پس زمینه اجرا میشه
Crontab: فایل تنظیماتی که لیست وظایف زمانبندی شده توش ذخیره میشه هر کاربر فایل crontab مخصوص خودش رو داره
Cron Job: به هر وظیفه یا تسکی که تو crontab تعریف میشه یک کرون جاب میگن
دستورات اصلی مدیریت کرون جاب
دستور کاربرد
crontab -e ویرایش فایل crontab کاربر فعلی
crontab -l نمایش لیست کرون جاب های فعال
crontab -r حذف کامل تمام کرون جاب ها
crontab -u USERNAME -e ویرایش crontab کاربر دیگه (فقط روت) ساختار خط فرمان تو Crontab
هر خط تو فایل crontab از ۶ بخش تشکیل میشه:
دقیقه ساعت روز ماه روز_هفته دستور_یا_اسکریپت
دقیقه ۰ تا ۵۹
ساعت ۰ تا ۲۳
روز ماه ۱ تا ۳۱
ماه ۱ تا ۱۲ یا Jan-Dec
روز هفته ۰ تا ۷ (۰ و ۷ یکشنبه) یا Sun-Sat
کاراکترهای ویژه
* همه مقادیر (هر دقیقه، هر ساعت و...)
, لیست کردن مقادیر (مثلا ۱,۳,۵)
- بازه (مثلا ۱-۵)
/ بازه های منظم (مثلا /10 یعنی هر ۱۰ دقیقه یکبار)
مثالهای عملی
مثال ۱: اجرا هر روز ساعت ۲ بامداد
0 2 * * * /usr/bin/php /home/user/backup.php
مثال ۲: اجرا هر ۱۵ دقیقه یکبار
*/15 * * * * /usr/bin/python3 /home/user/monitor.py
مثال ۳: اجرا هر یکشنبه ساعت ۳ صبح
0 3 * * 0 /usr/bin/bash /home/user/weekly_cleanup.sh
مثال ۴: اجرا در روزهای ۱ و ۱۵ هر ماه ساعت ۴ عصر
0 16 1,15 * * /usr/bin/mysqldump --all-databases > /backup/db.sql
متغیرهای محیطی و نکات مهم
تنظیم PATH در کرون جاب
کرون محیط محدودی داره و ممکنه PATH رو نشناسه برای حل این مشکل در ابتدای فایل crontab PATH رو تنظیم کنید:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
لاگ گیری خروجی
خروجی کرون جاب ها معمولا به ایمیل کاربر فرستاده میشه برای ذخیره خروجی تو فایل:
0 2 * * * /path/to/script.sh >> /var/log/backup.log 2>&1
خطاهای رایج
اسکریپت اجرا نمیشه: مشکل دسترسی یا PATH
کرون جاب اجرا میشه ولی کاری انجام نمیده: مسیرهای نسبی را به مطلق تبدیل کنید
دستور تو ترمینال کار میکنه ولی تو کرون نه: محیط کرون محدودتره متغیرها رو صریح تعریف کنید
بررسی و عیب یابی کرون جاب ها
مشاهده لاگ کرون
لاگ کرون معمولا تو مسیر زیر ذخیره میشه:
grep CRON /var/log/syslog
در سیستم های مبتنی بر RedHat:
grep CRON /var/log/cron
چک کردن آخرین اجرا
میتونید از دستورات زیر برای بررسی استفاده کنید:
ls -la /var/log/backup.log tail -50 /var/log/backup.log
امنیت در کرون جاب
فایل های مجاز و غیرمجاز
/etc/cron.allow: کاربرانی که اجازه استفاده از کرون دارن
/etc/cron.deny: کاربرانی که دسترسی به کرون ندارن
نکات امنیتی
نکته: اسکریپتای کرون رو با حداقل دسترسی ممکن اجرا کنید
نکته: از اجرای اسکریپت هایی که ورودی کاربر میگیرند در کرون خودداری کنید
نگته: لاگ ها رو به صورت منظم بررسی کنید