آموزش لینوکس 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
- signal event : یک رخداد غیر همزمان(asynchronous) است و منتشر کننده این رخداد، برای دیدن نتیجه صبر نکرده و به کار خود ادامه می دهد
initctl emit –no-wait my signal
- : method event یک رخداد همزمان (synchronous) است که معمولاً با یک task همراه می شود (شبیه توابع برنامه نویسی).می تواند براساس موفقیت یا عدم موفقیت task، به کمک return code کاری انجام دهد :
initctl emit my method ACTION=do something
- 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 – نویسنده : موسی رشوند
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.