CodeShot

Crontab کاربری (crontab -e) در مقابل Cron سیستمی (/etc/cron.d و /etc/crontab)

Crontab کاربری با دستور crontab -e ویرایش می‌شود و همیشه با دسترسی همان کاربر اجرا می‌شود، در حالی که فایل‌های /etc/crontab و /etc/cron.d/* سطح سیستم هستند، ستون اضافه برای مشخص کردن کاربر اجراکننده دارند و معمولاً توسط پکیج‌ها یا مدیر سیستم برای وظایف سراسری استفاده می‌شوند.

ویژگیCrontab کاربری (crontab -e)Cron سیستمی (/etc/cron.d و /etc/crontab)
محل ذخیره/var/spool/cron/etc/crontab، /etc/cron.d/
ستون کاربر اجراکنندهندارددارد
نیاز به دسترسی rootخیرمعمولاً بله

کِی از Crontab کاربری (crontab -e) استفاده کنیم؟

وقتی می‌خواهید یک وظیفه زمان‌بندی‌شده شخصی (مثل بکاپ پوشه خودتان) بدون نیاز به دسترسی root تعریف کنید.

کِی از Cron سیستمی (/etc/cron.d و /etc/crontab) استفاده کنیم؟

وقتی یک بسته نصب‌شده یا اسکریپت مدیریتی نیاز دارد با کاربر مشخصی (مثلاً www-data) اجرا شود یا بخواهید تنظیمات را در کنترل نسخه (Git) نگه دارید.

مثال Crontab کاربری (crontab -e)

# ویرایش crontab کاربر فعلی
crontab -e
# هر روز ساعت ۲ بامداد
0 2 * * * /home/user/backup.sh

مثال Cron سیستمی (/etc/cron.d و /etc/crontab)

# /etc/cron.d/myapp — نیازمند ستون کاربر
0 3 * * * www-data /usr/bin/php /var/www/cleanup.php

اشتباه رایج

اشتباه رایج نوشتن نام کاربر در crontab شخصی است؛ در crontab -e نباید ستون کاربر اضافه شود، این ستون فقط در فایل‌های سیستمی مثل /etc/crontab و /etc/cron.d لازم است و نبودش باعث خطای اجرا می‌شود.

جمع‌بندی

برای وظایف شخصی از crontab -e و برای وظایف سراسری سیستم یا بسته‌های نصب‌شده از فایل‌های cron سیستمی با ستون کاربر استفاده کنید.