آشنایی با مفهوم Cron Job در لینوکس
Cron ابزاری در سیستمعاملهای مبتنی بر یونیکس همچون گنو/لینوکس است که امکان اجرای کامندها و اسکریپتها در آینده را به کاربر میدهد. با استفاده از کرون، کاربران لینوکس میتوانند در زمان مشخصی در آینده و یا در بازههای زمانی تکرارشنودهای اقدام به اجرای کامندها یا اسکریپتهای خاصی نمایند.
ماهیت کرون آن را برای کارهای مدیریت سیستم همچون بکاپگیری، دانلود فایل از اینترنت، ارسال ایمیل و … بسیار کاربردی میسازد.
کرون توسط یک فایل پیکربندی تحت عنوان 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