زمان بندی کردن کارها و برنامه ها در لینوکس

زمان بندی کارها در لینوکس

زمان بندی کارها و برنامه‌ ها در هر سیستم عاملی از جمله سیستم عامل لینوکس ، امری ضروری می‌باشد. در خیلی از مواقع، ما نیاز داریم که در زمان‌های مشخص وظایفی(Tasks) را، سیستم عامل برایمان انجام داده و یا برنامه‌هایی را اجرا نماید. کارهایی مثل گرفتن نسخه‌ی پشتیبان، یا گزارش‌گیری از وضعیت لاگ‌های سیستم، ارسال ایمیل و یا اجرای برنامه‌ی مورد نظر، در زمان یا زمان‌های خاص، می‌توانند، نیاز به زمان بندی داشته باشند. مخصوصا در مدیریت سرورها، زمانبندی کردن وظایف،نظارت و رسیدگی به آن‌ها را راحت‌تر می‌سازد.

زمان بندی کارها در لینوکس ، توسط دیمون‌های crond و atd انجام می‌شود. از cron برای زمان بندی اغلب کارها و برنامه‌های تکرارپذیر، در لینوکس استفاده می‌گردد. دستور at ، زمانی استفاده می‌شود، که یک کار یا دستور، فقط برای یک مرتبه، اجرا گردد.

زمان بندی کارها در لینوکس با cron

دیمون crond، امکانات مختلف را، برای ارائه‌ی سرویس cron فراهم می‌سازد. cron دارای انعطاف زیادی در کار زمان‌بندی می‌باشد. به هر کار(Task) یا وظیفه cron job گفته می‌شود. cron jobها باعث خودکارسازی مدیریت و نگهداری از سیستم می‌گردند. هر کار (Task)، می‌تواند بر حسب دقیقه، ساعت، روز، هفته، ماه، روزی از هفته و یا ترکیبی از آن‌ها زمان‌بندی گردد.

فایل پیکربندی cron

کارها یا (Task) هایی که در یک سیستم زمان‌بندی می‌شوند، به دو دسته تقسیم می‌شوند. دسته‌ی اول کارهایی است که مربوط به یک کاربر خاص است و آن کاربر، نیاز به زمان‌بندی کردن آن‌ها دارد. فایل پیکربندی مربوط به هر کاربر در صورتی که از توزیع های ردهت یا فدورا استفاده گردد در مسیر var/spool/cron/ و در صورتی که از توزیع‌های دبیان و یا اوبونتو استفاده گردد در مسیر var/spool/cron/crontabs/ و به نام همان کاربر ایجاد خواهد شد. در این حالت برای زمان بندی کارهای مورد نیاز، از دستور crontab -e استفاده می‌نماییم. بعد از ایجاد Task جدید در فایل و ذخیره سازی آن، نیاز به restart مجدد سرویس crond نمی‌باشد و Task در صف زمان‌بندی قرار می‌گیرد.

دسته‌ی دوم مربوط به cron jobهای سیستمی است که اجرای آن‌ها، نیاز به سطح دسترسی root می‌باشد. فایل تنظیمات برای cron jobهای سیستمی، در مسیر etc/crontab/ قرار دارد. در زیر، یک فایل crontab را به طور نمونه مشاهده می‌کنید.

همان طور که مشاهده می‌نمایید، هر دستور یا برنامه را می‌توان در زمان تعیین شده با پارامترهای لازم، در این فایل قرار داده و در زمان‌های مورد نظر اجرا نماییم. به عنوان مثال در خط شماره‌ی 23 در ساعت 3:30 صبح، دستور usr/sbin/example/ با پرمیشن root هر روزه اجرا می‌گردد.

حالت کلی Task

حالت کلی Task زمان‌بندی شده، به صورت زیر است:

A B C D E، که در آن [59-0]A دقیقه، [23-0]B ساعت، [31-0]C روز، [12-0]D ماه، [7-0]E روز از هفته می‌باشد. پنج فیلد اول، می توانند به صورت یک و یا چند مقدار بیایند. علائمی که در هر فیلد می‌توانند به‌کار روند، به شرح زیر می‌باشد:
(*) در حالتی به کار می‌رود که مقدار زمان برای همیشه(always) باشد.
(/) در حالتی که بخواهیم یک Task، در بازه‌های چند مرحله‌ای از یک زمان باشد. مثلا برای فیلد دقیقه 10/* به معنی هر 10 دقیقه یک‌بار، می‌باشد.
(,) در صورتی‌که چند مقدار با کاما جدا شوند، به معنی اجرای Task در هر یک از مقادیر داده شده است. مثلا برای فیلد ساعت، 3,4 به معنی اجرای Task در ساعت 3 و ساعت 4 می‌باشد.
() این کاراکتر range زمان اجرا را، نشان می‌دهد. مثلا 6-3 برای فیلد روز، به معنای روز سوم تا روز ششم می‌باشد.


directory/Command/ ، مسیر دستور و یا اسکریپت مورد نظر، برای اجرا می‌باشد.

output نوع خروجی مشخص می گردد.

در مثال زیر، برای اجرای یک Task در هر 10 دقیقه، به صورت زیر، عمل می‌کنیم:

در سرورها معمولا نتیجه‌ی خروجی دستور را، بر روی یک فایل ذخیره می‌کنیم. در صورتی که بخواهیم ارسال خروجی دستور را، حذف نماییم، مانند زیر عمل می‌کنیم:

anacron

کارکرد anacron، شبیه cron می‌باشد، با این تفاوت که اگر در زمان تعیین شده، کامپیوتر، در حالت خاموش قرار داشت، به محض بالا آمدن سیستم، Taskهای زمان بندی‌شده، اجرا می‌شوند. نکته‌ای که باید ذکر شود، این است که، Taskهای انجام نشده، برای یک‌بار اجرا می‌شوند. مثلا اگر اجرای Task خاصی باید هر روز، در ساعت شش بعدازظهر، انجام شود و چهار روز این Task اجرا نشده باشد، anacron، آن را برای یک بار اجرا می‌کند. سرویس anacron برای سیستم‌هایی که همیشه روشن نیستند، مثل لپ‌تاپ‌ها و یا کامپیوترهای رومیزی، می‌تواند مناسب باشد. فایل کانفیگ anacron در مسیر etc/anacrontab/ قرار دارد.

زمان بندی با at

در صورتی که یک دستور و یا یک برنامه فقط یک بار نیاز به اجرا شدن داشته باشد، می‌توانیم از این دستور استفاده نماییم. برای نصب at در دبیان، از ذستور زیر استفاده می کنیم:

برای زمان‌بندی اجرای یک Task، در at از روش زیر استفاده می کنیم. با دسنور atq می‌توانیم تعداد Taskهای در حال انتظار را مشاهده نماییم.

دیدگاهتان را بنویسید