زمانبندی (Schedule) را می توان هنر یک مدیر دانست ، البته نه به این معنا
که کاربران نباید این کار را در فهرست مهارت های خود قرار دهند بلکه به
این
معنا که یکی از وظایف اصلی مدیران سیستم همانا زمان بندی انجام کار هاست.
یک مدیر باید روزانه از سیستم خود یک نسخه ی پشتیبان بگیرد ، بازرسی های
امنیتی سیستم را انجام دهد ، به فایل های گزارش روزانه یا log
ها سرکشی کند و بسیاری کار دیگر که بر عهده ی اوست ، این جاست که زمان
بندی کار ها به میان می آید ، شماهر چقدر هم که فرد باهوش و با دقتی
باشید باز هم سیل کارهای مختلف در روز می تواند باعث فراموشی و یا اشتباه
در کارتان شود ، این همان چیزیست که هرگز نباید رخ بدهد. برای جلوگیری از
خطاهای انسانی این وظایف را به کامپیوتر می سپارند ، در سیستم عامل لینوکس
و اغلب یونیکس ها از برنامه ای به نام cron برای زمانبندی کارها استفاده
می
شود. به این وسیله شما به راحتی می توانید با وارد کردن دستور
برای یکبار این وظیفه را به کامپیوتر خود واگذار کنید
، از این پس این کامپیوتر شماست که دستورات را به موقع انجام می
دهد.
همان
طور که در بالا گفتیم برای زمانبندی در لینوکس از برنامه ی 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 |
شاید
ظاهر این فایل کمی غیر معمول به نظر برسد
امابا دانستن روش وارد کردن
دستور خواهید دید که بسیار هم ساده و جالب است. نظری به خط آخر می اندازیم
؛ این خط با ۵ قسمت آغاز می شود: اولی دقیقه (۰ تا ۵۹) ، دومی
ساعت (۰ تا
۲۳) ، سوم روز از ماه (۱-۳۱) ، چهارم ماه (۱-۱۲) و آخرین بخش نام روز از
هفته ( ۰-۷ که ۰و۷ نمایش دهنده ی یکشنبه هستند) . برای ماه و روزهای هفته
شما می توانید سه حرف اول این مقادیر به انگلیسی را نیز استفاده کنید. شما
می توانید مقادیر کلی یا طول مدتی را با استفاده از موارد زیر
استفاده
کنید :
بعداز۵ قسمت اول نام کاربری که قرار است این دستور را اجرا نماید نوشته
شده است و سپس دستوری که قرار است اجرا شود ( در این جا
run-parts) بنابر این این برنامه هر روز و درساعت 4:02 صبح
اجرا می
شود. برای ایجاد یک دستور جدید کافیست آن را به فایل etc/crontab/ اضافه
کنید ، برای این کار باید دارای مجوز ریشه باشید و برنامه ی شما با مجوز
ریشه اجرا خواهد شد. اما این می تواند کمی برای کاربران معمولی سیستم
ناراحت کننده باشد ، برای این که یک کار بر بتواند از این سیستم زمانبدنی
استفاده کند بخش بعد را مطالعه فرمایید.
برای ایجاد این فرمان ها شما باید از ابزار 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 |
البته 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 را تغییر
دهید.