زمان بندی انجام دستورات با Cron

(1712 مجموع کلمات موجود در متن)
(9490 بار مطالعه شده است)  نسخه چاپی [1]
نام مقاله : زمان بندی انجام دستورات با Cron
نویسنده : نوید


I. زمان بندی !

زمانبندی (Schedule) را می توان هنر یک مدیر دانست ، البته نه به این معنا که کاربران نباید این کار را در فهرست مهارت های خود قرار دهند بلکه به این معنا که یکی از وظایف اصلی مدیران سیستم همانا زمان بندی انجام کار هاست. یک مدیر باید روزانه از سیستم خود یک نسخه ی پشتیبان بگیرد ، بازرسی های امنیتی سیستم را انجام دهد ، به فایل های گزارش روزانه یا log ها سرکشی کند و بسیاری کار دیگر که بر عهده ی اوست ، این جاست که زمان بندی کار ها به میان می آید ، شماهر چقدر هم که فرد باهوش و با دقتی باشید باز هم سیل کارهای مختلف در روز می تواند باعث فراموشی و یا اشتباه در کارتان شود ، این همان چیزیست که هرگز نباید رخ بدهد. برای جلوگیری از خطاهای انسانی این وظایف را به کامپیوتر می سپارند ، در سیستم عامل لینوکس و اغلب یونیکس ها از برنامه ای به نام cron برای زمانبندی کارها استفاده می شود. به این وسیله شما به راحتی می توانید با وارد کردن دستور برای یکبار این وظیفه را به کامپیوتر خود واگذار کنید ، از این پس این کامپیوتر شماست که دستورات را به موقع انجام می دهد.

corn .II و استفاده از آن !

همان طور که در بالا گفتیم برای زمانبندی در لینوکس از برنامه ی cron که نوشته ی Paul Vixie می باشد استفاده می کنیم. این برنامه در اغلب توزیع های لینوکس و یونیکس ها وجود دارد. این برنامه یک Deamon ( بخوانید/Daymen/ یا /Dimen/ ) دارد که همواره در پشت صحنه ی سیستم شما در حال اجراست و فایل های ورودی خود را چک می کند ، به محض مشاهده ی کاری در زمان خاص آن کار را انجام می دهد. به فایل های ورودی ، crontab می گویند ، شما باید دستورات خود را در این فایل ها اضافه کنید و زمان اجرای دستور را نیز قید کنید ، به محض فرارسیدن زمان اجرای دستور ، دایمن Cron این دستور یا دستورات را انجام خواهد داد. توجه داشته باشید که بعد از انجام تغییرات در فایل های Crontab نیازی به راه اندازی مجدد Cron Deamon وجود ندارد و cron خودش این تغییرات را تشخیص و به آن ها عمل خواهد کرد. در واقع cron هر دقیقه یک بار دایرکتوری های var/spool/cron/ و etc/cron.d/ و فایل etc/crontab/ را چک می کند ، ‌به این نوع Deamon ها بیدار باش یا "Wakes up" می گویند (بیدار باش ترجمه ای لغتی است و مفهوم wakes up حواس جمع بودن و دائم سر پست حاضر بودن است).

بسیار خوب تا به این جا روند انجام کار را بررسی کردیم. تنها کاری که شما باید انجام بدهید ویرایش فایل etc/crontab/ و اضافه کردن دستورات خود در این فایل است. برای درک بهتر نظر شما را به نمونه ای از این فایل در سیستم خودم جلب می کنم :

SHELL=/bin/bash
MAILTO=gnuiranorg
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
# check scripts in cron.hourly, cron.daily, cron.weekly, and
#cron.monthly
-*/15 * * * * root test -x
/usr/lib/cron/run-crons &&
/usr/lib/cron/run-crons >/dev/null 2>&1
59 * * * * root rm -f
/var/spool/cron/lastrun/cron.hourly
14 4 * * * root rm -f
/var/spool/cron/lastrun/cron.daily
9 4 * * 6 root rm -f
/var/spool/cron/lastrun/cron.weekly
44 4 1 * * root rm -f
/var/spool/cron/lastrun/cron.monthly
02 4 * * * root run-parts

شاید ظاهر این فایل کمی غیر معمول به نظر برسد امابا دانستن روش وارد کردن دستور خواهید دید که بسیار هم ساده و جالب است. نظری به خط آخر می اندازیم ؛ این خط با ۵ قسمت آغاز می شود: اولی دقیقه (۰ تا ۵۹) ، دومی ساعت (۰ تا ۲۳) ، سوم روز از ماه (۱-۳۱) ، چهارم ماه (۱-۱۲) و آخرین بخش نام روز از هفته ( ۰-۷ که ۰و۷ نمایش دهنده ی یکشنبه هستند) . برای ماه و روزهای هفته شما می توانید سه حرف اول این مقادیر به انگلیسی را نیز استفاده کنید. شما می توانید مقادیر کلی یا طول مدتی را با استفاده از موارد زیر استفاده کنید :

بعداز۵ قسمت اول نام کاربری که قرار است این دستور را اجرا نماید نوشته شده است و سپس دستوری که قرار است اجرا شود ( در این جا run-parts) بنابر این این برنامه هر روز و درساعت 4:02 صبح اجرا می شود. برای ایجاد یک دستور جدید کافیست آن را به فایل etc/crontab/ اضافه کنید ، برای این کار باید دارای مجوز ریشه باشید و برنامه ی شما با مجوز ریشه اجرا خواهد شد. اما این می تواند کمی برای کاربران معمولی سیستم ناراحت کننده باشد ، برای این که یک کار بر بتواند از این سیستم زمانبدنی استفاده کند بخش بعد را مطالعه فرمایید.


III. ایجاد فرمان ها توسط کاربر

برای ایجاد این فرمان ها شما باید از ابزار crontab استفاده کنید اما نه با ویرایش فایل ! قبل از ادامه همین جا باید با واژه ی cron job آشنا شوید ، همان طور که از معنی این لغت بر می آید cron job یک کار cron است در واقع به هر یک از فرمان هایی که در زمان خاص اجرا می شود یک cron job می گویند. در واقع ما برای هر کاری یک cron job می سازیم. ساختار کلی ابزار crontab به شکل زیر است :

crontab [-u user] [-l | -e | -r] [file]


شاید ظاهرش کمی شلوغ است اما اگر بدانید که وجود " [] " ها به این معنیست که شما می توانید این بخش را در ساختار دستور به کار ببرید یا اگر خواستید استفاده نکنید ;) در واقع اگر شما u User- را وارد نکنید ابزار crontab با کاربری که آن را اجرا کرده است اجرا می شود ولی اگر بخواهید با نام کاربری دیگر آن را اجرا کنید برای نمونه وارد می کنید u tux- و از این ابزار استفاده می کنید. اگر می خواهید به طور مستقیم برروی یک cron job کار کنید کافیست از دستوراتی که در کروشه ی دوم آمده اند استفاده کنید:

(علامت های | بدین معنی هستند که شما فقط یکی از آن سه گزینه را می توانید استفاده کنید. )راه دیگر این است که شما یک فایل وظایف یا cron job file ایجاد کنید و در محلی ذخیره کنید و آن را با همین ابزارو گزینه ی file وارد جداول وظایف بکنید :

crontab -u tux my_cron__file

شما می توانید حتی مقادیر متغییر های محیطی را نیز در یک فایل cron تغییر بدهید برای این کار کافیست از این الگو پیروی کنید :VARIABLE=value مثلا برای HOME مقدار home/tux/ را قرار بدهید .(HOME=/home/tux) . در نمونه ی زیر این فایل cron هر ۳۰ دقیقه ایمیل های آمده را فرا می خواند :

SHELL=/bin/bash
MAILTO=tux
HOME=/home/tux
0,30 * * * * /usr/bin/fetchmail -s


البته Paul فکری هم برای جلوگیری از پیچیدگی کار کرده ، اگر می خواهید هر روز ، هرماه ، هر نیمه شب یا هر بار که سیستم را روشن می کنید عملی انجام شود می توانید از مقادیر گفته شده در بالا یا مقادیر جدول زیر که به اطر سپردنشان راحت تر است استفاده کنید.

مقدار معادل
@reboot
در زمان هر بار بوت شدن سیستم
@yearle 0 0 1 1 *
@annually
مانند بالایی
@mounthly
0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@midnight همانند بالایی
@hourly 0 * * * *

بسیار خوب حالا می توانید کار هایتان را به کامپیوتر لینوکستان بسپارید و دیگر نگران تنظیم وقت خود نباشید ، خوب بازی با اعداد را شروع کنید تا کاملا به این ابزار مسلط شوید ;)



[۱] به کاراکتر استریسک یا * در گوشی های تلفن Star یا ستاره می گویند و نامیدن ستاره یا Star در کامپیوتر برای این کاراکتر اشتباه است.
[۲] اگر نمی خواهید با vi کار هایتان را انجام دهید کافیست ویرایشگر پیش فرض سیستم خود را از vi به ویرایشگر مورد علاقه ی خود تغییر دهید برای این کار باید متغییر محیطی VISUAL و EDITOR را تغییر دهید.

  
[ بازگشت به نرم افزار‌ کاربردی [2] | صفحه اصلی بخش مقالات [3] ]
امتیاز دهی 1/10
_LINKS
  [1] https://www.gnuiran.org/index.php?name=Sections&req=viewarticle&artid=28&allpages=1&theme=Printer
  [2] https://www.gnuiran.org/index.php?name=Sections&req=listarticles&secid=1
  [3] http://www.gnuiran.org/Articles