سرفصل‌های آموزشی
آموزش لینوکس
Cron Job چیست؟

Cron Job چیست؟

Cron ابزاری در سیستم‌عامل‌های مبتنی بر یونیکس همچون گنو/لینوکس است که امکان اجرای کامندها و اسکریپت‌ها در آینده را به کاربر می‌دهد. با استفاده از کران، کاربران لینوکس می‌توانند در زمان مشخصی در آینده و یا در بازه‌های زمانی تکرارشنوده‌ای اقدام به اجرای کامندها یا اسکریپت‌های خاصی نمایند.

ماهیت کران آن را برای کارهای مدیریت سیستم همچون بکاپ‌گیری، دانلود فایل از اینترنت، ارسال ایمیل و ... بسیار کاربردی می‌سازد.

    نکته

Cron از واژه‌ٔ یونانی Cronus) Κρόνος) به معنی «زمان» گرفته شده است.

کران توسط یک فایل پیکربندی تحت عنوان Cron Table که در مسیر etc/crontab/ قرار دارد اجرا می‌شود؛ هر یک از خطوط فایل crontab نشانگر یک کامندی که در زمان خاصی اجرا خواهد شد.

برای مشاهدهٔ لیست کامندهایی که به عنوان کران جاب لینوکس ذخیره شده‌اند، می‌توان دستور زیر را در ترمینال وارد کرد:

$ crontab -l
no crontab for behzadmoradi

همان‌طور که می‌بینیم تاکنون هیچ کرانی برای کاربری به نام behzadmoradi در نظر گرفته نشده است. برای افزودن، ویرایش و یا حذف کران‌ها، می‌باید از دستور زیر استفاده کرد:

$ crontab -e

به محض اینتر کردن، ادیتور پیش‌فرض لینوکس، مثلاً nano، باز شده و امکان ویرایش فایل را می‌دهد:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

همان‌طور که مشخص است، صرفاً یکسری کامنت (توضیحات) در این فایل قرار داشته که با علامت # مشخص شده‌اند. برای افزودن کران جدید به این فایل، می‌بایست از ساختار زیر تبعیت کنیم:

* * * * * command

در تفسیر کران فوق باید گفت که دستور داده‌ایم تا اسکریپتی تحت عنوان command در فرمت زمانی * * * * * اجرا گردد! به عبارت دیگر، این فایل در هر دقیقه از هر ساعت از هر روز از هر ماه و روز هفته اجرا گردد. به طور خلاصه، این اسکریپت هر دقیقه اجرا خواهد شد. 


 ┌───────────── minute (0 - 59)
 │ ┌───────────── hour (0 - 23)
 │ │ ┌───────────── day-of-month (1 - 31)
 │ │ │ ┌───────────── month (1 - 12)
 │ │ │ │ ┌───────────── day-of-week (0 - 6 that 0 is Sunday and 6 is Saturday)
 │ │ │ │ │                                       
 │ │ │ │ │
 │ │ │ │ │
 * * * * * command

اسکریپت مذکور به صورت گویاتر به شکل فوق تفسیر خواهد شد.

online-support-icon