if ( dina_opt( 'show_head_banner' ) ) { dina_header_banner(); } ?>

آموزش لینوکس LPIC1-101 – ابزار کنترلی initctl

بازدید: 153 بازدید
آموزش لینوکس LPIC1-101 – ابزار کنترلی initctl  

ابزار کنترلی initctl

همچنان که از نام آن مشخص است ، initctl ابزار کنترلی  Upstart است.

initctl ابزاری است که مدیر سیستم توسط آن با init صحبت می کند.

 initctl start JOB

 initctl list

 initctl stop JOB

 initctl restart JOB

فرمان بالا، اگر نمونه ای از Job در حال اجرا نباشد، خطا می دهد.

 initctl reload JOB

فرمان بالا همانند SIGHUP در System v است که مبتنی بر Runlevel ها بود.

 initctl status JOB

اطلاعات بیشتر در مورد  initctl

برای سادگی بیشتر، دستوراتی به initctl پیوند شده اند :

 ls -l /sbin | grep initctl

rwxr-xr-x.1 root root 138784 Mar 20 2012 initctl-

lrwxrwxrwx. 1 root root 7 Aug 5 2012 reload -> initctl

lrwxrwxrwx. 1 root root 7 Aug 5 2012 restart -> initctl

lrwxrwxrwx. 1 root root 7 Aug 5 2012 start -> initctl

lrwxrwxrwx. 1 root root 7 Aug 5 2012 status -> initctl

lrwxrwxrwx. 1 root root 7 Aug 5 2012 stop -> initctl

از Initctl می توان برای منتشر کردن رخدادها به صورت دستی نیز استفاده کرد. همچنین امکان تعیین سطح جزئیاتی که log می شود نیز وجود دارد:

 [initctl log-priority[debug/info/message/warn/error/fatal

که هر کدام از موارد ذکر شده در داخل [ ] می توانند مورد استفاده قرار گیرند.

برای توضیحات بیشتر به صفحه  man initctl مراجعه کنید.

event

رویداد یا همان event ، اعلام یا سیگنالی است که توسط  upstartبه job ها یا event  های دیگر فرستاده می شود. با منتشر شدن (emit) یک رخداد، تمامی job های سیستمِ upstart  تحت تأثیر قرار می گیرند.

نکته  مهمی که در مورد سیستم upstart وجود دارد این است که نمی توان کاری کرد که یک Job، رخدادی را نبیند .پس در صورت وقوع یک رخداد همه ی job ها آن را درک خواهند کرد.

مثال: موقع روشن شدن سیستم، upstart یک رخداد به نام startup منتشر می کند. از طرفی، job به نام rcS با پیکربندی زیر وجود دارد که نسبت به این رخداد حساس است :

start on startup

exec /etc/rc.d/rc.sysi

انواع  event

  1. signal event : یک رخداد غیر همزمان(asynchronous) است و منتشر کننده این رخداد، برای دیدن نتیجه صبر نکرده و به کار خود ادامه می دهد

 initctl emit –no-wait my signal

  1. : method event یک رخداد همزمان (synchronous) است که معمولاً با یک task همراه می شود (شبیه توابع برنامه نویسی).می تواند براساس موفقیت یا عدم موفقیت task، به کمک return code کاری انجام دهد :

 initctl emit my method ACTION=do something

 

 

  1. hook event : این رخداد همانند method event به صورت همزمان  (synchronous)است. این رخداد حالت میانی  method و  signal است. در واقع این رخداد، اعلانی است در مورد اینکه تغییری در سیستم در حال رخ دادن است ، اما بر خلاف رخداد signal، منتشر کننده ی آن قبل از ادامه به کار و انجام کار دیگر، منتظر آن می ماند تا کامل شود. بنابراین hook ها جهت اطلاع به بخش های مختلف سیستم هنگامی که یک رویداد در حال شروع یا پایان است، به کار می روند.

ترتیب منتشر شدن رخدادها

ترتیب منتشر شدن رخدادها قانون خاصی ندارد .ماهیت کلمه رخداد به معنی غیر پیش بینی بودن زمان و ترتیب آن است.

ترتیب اجرای Jobها بر اثر یک رخداد

سه Job به شکل زیر تعریف شده است :

etc/init/X.conf/

start on event-A

etc/init/Y.conf/

start on event-A

etc/init/Z.conf/

start on event-A

پرسش: در صورت منتشر شدن A-event ،job ها به چه ترتیبی اجرا می شوند؟

پاسخ: معلوم نیست و نباید ترتیب آنها مبنای چیزی قرار گیرد.

تمرین :Job ی به نام  farazبا پیکربندی زیر بسازید (etc/init/faraz.conf/)

start on event-A

stop on event-A

script

                sleep 30

end script

حالا در قدم بعدی، با فرمان زیر، رخداد event-A را منتشر کنید :

 initctl log-priority debug

 initctl emit event-A

پرسش : در صورت منتشر شدن رخداد event100، کدام  Job ابتدا اجرا خواهد شد؟

پاسخ : اول stopها پردازش می شوند.

ابزار کنترلی initctl – نویسنده :  موسی رشوند

دسته‌بندی لینوکس و یونیکس
اشتراک گذاری
نوشته‌های مرتبط

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

سبد خرید

سبد خرید شما خالی است.

ورود به سایت