توجه :
"نقل تمام یا بخشی از مطالب سایت تنها با لینک به مطلب و معرفی نویسنده آن مجاز است"
دوستانی که از طریق موتورهای جستجوگر به دنبال مطلبی خاص وارد سایت شده اند و هم اکنون به دلیل پویایی سایت مطلبی در آن مورد مشاهد نمیکنند میتوانند به FORUM سایت مراجعه کنند.
| مدیریت سرویس ها در زمان start-up در دبین و آبانتو بهمراه آموزش تصویری |
| نگارش یافته توسط رضا بهروزی | ||||||
|
سرویس های لینوکس را میتوان به وسیله اسکریپتهایی که در etc/init.d/ قرار دارند start , stop و reload کرد.
با این وجود , در مدت بالا آمدن سیستم یا وقتی که سطح اجرایی (runlevel) را تغییر می دهیم , سیستم اسکریپت ها را در /etc/rcX.d/ جستجو می کند که X شماره سطح اجرایی می باشد.
فایل های درون etc/rcX.d در واقع لینک هایی به اسکریپتهای درون دایرکتوری etc/init.d/ می با شند.
این آموزش شرح خواهد داد که چطور شخصی میتواند سرویسی را در زمان بالا آمدن سیستم یا اصطلاحا start-up فعال , غیرفعال و کلا مدیریت کند.
وقتی که یک سرویس را در دبین و خانواده آن نصب می کنید , بطور پیش فرض در start-up فعال می شود.
بطور مثال اگر شما apache2 را نصب کنید , سرویس apache همان زمان شروع به
کار میکند و برای فعال شدن در شروع مجدد سیستم هم تنظیم می شود.
اگر شما از apache در همه زمان ها استفاده
نمی کنید , ممکن است بخواهید این سرویس در زمان start-up غیرفعال باشد و
براحتی فقط زمانی که به آن نیاز دارید با دستور زیر سرویس را فعال کنید :
شما می توانید این سرویس را درزمان بوت غیر فعال کنید به وسیله حذف تمامی لینک های سمبلیک در etc/rcX.d/SYYapache2/ یا با استفاده از sysv-rc-conf , update-rc.d و ....
مزیت استفاده از sysv-rc-conf , update-rc.d و ابزارهای مشابه در اینست که وظیفه حذف یا اضافه کردن تمام لینک های مورد نیاز به etc/init.d/ را بصورت خودکار انجام می دهد.
apache2 را بعنوان مثال در نظر می گیریم , وضعیت apache در etc/rcX.d/ را مورد بررسی قرار می دهیم :
ls -l /etc/rc?.d/*apache2
lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc0.d/K91apache2 -> ../init.d/apache2
چنانکه قابل مشاهده میباشد , برای سطوح اجرایی 0 , 1 و 6 لینک ها با حرف K شروع می شوند و سطوح اجرایی 2 , 3 , 4 و 5 با S آغاز میشوند.این دو حرف از Kill و Start گرفته شده است.
در دبین و آبانتو سطوح اجرایی 2 , 3 , 4 و 5 از نوع چند کاربره می باشد و سطح اجرایی 2 بصورت پیش فرض تعیین شده است.
سطح اجرایی 0 برای خاموش کردن سیستم می باشد.
سطح اجرایی 1 مد تک کاربر میباشد.
سطح اجرایی 6 برای شروع مجدد سیستم می باشد.
با استفاده از دستور runlevel می توان سطح اجرایی فعلی را مشخص کرد.خروجی این دستور همانند زیر است :
N نشان دهنده حالت عادی یا normal و S نشان
دهنده حالت تک کاربره یا single می باشد.عدد بعد از این حروف نشان دهنده
سطح اجرایی در حال حاظر می باشد.
همچنین با استفاده از فایل etc/inittab/ سطح اجرایی پیش فرض قابل مشاهده و تغییر است.
وقتی سیستم در حال بوت شدن می باشد به فایل
etc/inittab/ رجوع می کند و سطح اجرایی پیش فرض را می خواند که در اینجا
سطح اجرایی 2 می باشد , سپس به دایرکتوری etc/rc2.d/ می رود و تمامی
اسکرپیت ها را به ترتیب اولویت اجرا می کند.اولویت بر اساس شماره بعد از S
می باشد که هر چه عدد کوچکتر باشد زودتر اجرا می شود و اگر دو لینک هم عدد
باشند بر اساس حروف الفبا اولویت بندی می شوند.
ارزش این اولویت بندی در سرویس هایی که وابسته به دیگر سرویس ها می باشند مشخص می شود تا سرویس مادر زودتر اجرا شود.
در هنگام خاموش شدن سیستم این اولویت بندی برعکس می باشد بطوریکه لینک با عدد بزرگتر زودتر غیر فعال می شود.
مدیریت سرویس ها در زمان start-up با update-rc.d
1)حذف کردن سرویس از start-up
اگر شما می خواهید سرویس apache2 را بصورت کامل و دستی غیر فعال کنید , می بایست هر لینک در etc/rcX.d/ را حذف کنید.با استفاده از update-rc.d این کار بدین آسانی می باشد :
از f- برای مجبور کردن سیستم در حذف لینک ها حتی در صورت وجود etc/init.d/apache2/ استفاده می کنیم.
2)اضافه کردن سرویس به start-up
برای اضافه کردن سرویس به start-up میتوان از اولویت پیش فرض استفاده کرد یا اولویت مورد نظر خودمان را بکار برد.
2.1-با اولویت پیش فرض (Default priorities)
حال اگر بخواهیم سرویس را دوباره تنظیم کنیم تا زمان بوت فعال شود , به آسانی قابل انجام است :
update-rc.d apache2 defaults
Adding system startup for /etc/init.d/apache2 ...
/etc/rc0.d/K20apache2 -> ../init.d/apache2 /etc/rc1.d/K20apache2 -> ../init.d/apache2 /etc/rc6.d/K20apache2 -> ../init.d/apache2 /etc/rc2.d/S20apache2 -> ../init.d/apache2 /etc/rc3.d/S20apache2 -> ../init.d/apache2 /etc/rc4.d/S20apache2 -> ../init.d/apache2 /etc/rc5.d/S20apache2 -> ../init.d/apache2
2.2-با اولویت دلخواه (Custom priorities)
اما چنانکه میتوانید مشاهده کنید , مقدار پیش فرض 20 میباشد که در مقایسه با 91 نسبتا متفاوت است.
یک لینک S20 قبل از S91 فعال می شود و یک K91 قبل از k20 غیر فعال می شود.
برای اینکه apache2 را مجبور کنیم برای فعال و غیر فعال شدن با اولویت 91 عمل کند , همانند زیر عمل میکنیم :
update-rc.d apache2 defaults 91
Adding system startup for /etc/init.d/apache2 ... /etc/rc0.d/K91apache2 -> ../init.d/apache2 /etc/rc1.d/K91apache2 -> ../init.d/apache2 /etc/rc6.d/K91apache2 -> ../init.d/apache2 /etc/rc2.d/S91apache2 -> ../init.d/apache2 /etc/rc3.d/S91apache2 -> ../init.d/apache2 /etc/rc4.d/S91apache2 -> ../init.d/apache2 /etc/rc5.d/S91apache2 -> ../init.d/apache2
2.3-اولویت های متفاوت برای فعال کردن و غیر فعال کردن (Different priorities for Start and Kill)
متعاقبا , اگر بخواهید اولویت فعال شدن متفاوت از غیر فعال شدن باشد , می بایست بدین ترتیب عمل کنید :
(در اینجا اولویت 20 را برای start و 80 را برای kill در نظر می گیریم )
update-rc.d apache2 defaults 20 80
Adding system startup for /etc/init.d/apache2 ... /etc/rc0.d/K80apache2 -> ../init.d/apache2 /etc/rc1.d/K80apache2 -> ../init.d/apache2 /etc/rc6.d/K80apache2 -> ../init.d/apache2 /etc/rc2.d/S20apache2 -> ../init.d/apache2 /etc/rc3.d/S20apache2 -> ../init.d/apache2 /etc/rc4.d/S20apache2 -> ../init.d/apache2 /etc/rc5.d/S20apache2 -> ../init.d/apache2
3.Specifying custom runlevels
در پایان اگر شما تمایل دارید سرویس ها فقط
در سطوح اجرایی خاصی فعال و غیرفعال شوند , مثلا apache با اولویت 20 را
در سطوح اجرایی 2 , 3 , 4 و 5 فعال و در سطوح اجرایی 0 , 1 و 6 غیر فعال
کنیم:
update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .
Adding system startup for /etc/init.d/apache2 ... /etc/rc0.d/K80apache2 -> ../init.d/apache2 /etc/rc1.d/K80apache2 -> ../init.d/apache2 /etc/rc6.d/K80apache2 -> ../init.d/apache2 /etc/rc2.d/S20apache2 -> ../init.d/apache2 /etc/rc3.d/S20apache2 -> ../init.d/apache2 /etc/rc4.d/S20apache2 -> ../init.d/apache2 /etc/rc5.d/S20apache2 -> ../init.d/apache2
یا فقط در سطح اجرایی 2 اجرا شود :
update-rc.d apache2 start 20 2 .
Adding system startup for /etc/init.d/apache2 ... /etc/rc2.d/S20apache2 -> ../init.d/apache2
یا برای فعال شدن در سطوح اجرایی 2 , 3 و 4
با اولویت 20 و فعال شدن در سطح اجرایی 5 با اولویت 30 و غیرفعال شدن در
سطوح اجرایی 0 , 1 و 6 با اولویت 80 :
update-rc.d apache2 start 20 2 3 4 . start 30 5 . stop 80 0 1 6 .
Adding system startup for /etc/init.d/apache2 ... /etc/rc0.d/K80apache2 -> ../init.d/apache2 /etc/rc1.d/K80apache2 -> ../init.d/apache2 /etc/rc6.d/K80apache2 -> ../init.d/apache2 /etc/rc2.d/S20apache2 -> ../init.d/apache2 /etc/rc3.d/S20apache2 -> ../init.d/apache2 /etc/rc4.d/S20apache2 -> ../init.d/apache2 /etc/rc5.d/S30apache2 -> ../init.d/apache2
مدیریت سرویس ها در زمان start-up با sysv-rc-conf
ابزار sysc-rc-conf که برای مدیریت سرویس ها
در زمان start-up استفاده می شود , کارکردی شبیه chkconfig در لینوکس های
بر پایه ردهت دارد به علاوه دارا بودن ابزار گرافیکی تحت شل که مدیریت
سرویس ها را آسانتر می کند و اگر دستور sysv-rc-conf را بدون هیچ گزینه ای
استفاده کنیم این محیط گرافیکی همانند شکل زیر ظاهر می شود.
همانطور که مشاهده می کنید , مدیریت سرویس ها توسط این محیط گرافیکی در همه سطوح اجرایی ممکن و به آسانی قابل انجام است و نقطه قوت این ابزار اجرا شدن آن در محیط متنی که هیچ گونه محیط گرافیکی بر روی سیستم نصب نیست ,می باشد.
از Sysc-rc-conf بدون استفاده از این محیط هم میتوان برای مدیریت سرویس ها استفاده کرد که در ادامه به آن می پردازیم.
نصب این ابزار بدین گونه میباشد :
لازم به تذکر است که اگر با کاربر root به سیستم وارد نشده اید ابتدای هر دستور از sudo استفاده می کنیم.
برای مشاهده لیست سرویس ها و وضعیت آنها :
PersianAdmins:~# sysv-rc-conf --list
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:on 3:on 4:on 5:on 6:off .... .... umountroot 0:on 6:on urandom 0:on 6:on S:on winbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
یا مثلا مشاهده وضعیت یه سرویس خاص مثل mysql :
PersianAdmins:~# sysv-rc-conf --list mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
برای فعال کردن یک سرویس مثلا apache2 در سطوح اجرایی 2 و 5 بدین نحو عمل می کنیم :
یا برای غیر فعال کردن در سطوح اجرایی 2 و 5 :
همچنین شما می توانید در هر سطح اجرایی که دوست دارید سرویس را فعال یا
غیرفعال کنید.در اینجا سرویس apache2 را سطوح اجرایی 3 و 5 فعال می کنیم :
مدیریت سرویس ها در زمان start-up با rcconf
گزینه دیگر برای مدیریت سرویس ها rcconf
میباشد که بر خلاف update-rc.d بصورت ساده تر و ویژوال قابل انجام است ولی
نسبت به sysv-rc-conf دارای گزینه ها و امکانات کمتری است.
برای نصب rcconf بدین صورت عمل می کنیم :
برای اجرا شدن در شل rcconf را تایپ میکنیم و بعد از آن پنجره ای همانند شکل زیر ظاهر میشود و از طریق آن براحتی میتوانیم به مدیریت سرویس ها بپردازیم .
مدیریت سرویس ها در زمان start-up با file-rc
ابزار دیگر مدیریت سطوح اجرایی file-rc می باشد که برخلاف ابزارهای قبلی نه دستوری است و نه گرافیکی , بلکه تنظیمات توسط فایل etc/runlevel.conf/ صورت می پذیرد.
نمونه این فایل در اینجا قابل مشاهده می باشد.
نصب این ابزار مدیریتی :
نحوه نوشتن تنظیمات در فایل etc/runlevel.conf/ بدین صورت می باشد :
طریقه تنظیم start-up برای یک اسکریپت خاص
گاهی اوقات پیش میآید که میخواهیم یک
اسکریپت مورد نظرمون را طوری تنظیم کنیم که در زمان srart-up اجرا و فعال
شود , برای رسیدن به این هدف بدین گونه عمل میکنیم :
ابتدا اسکریپت مورد نظر را در etc/init.d/ میسازیم :
سپس محتویات اسکریپت مورد نظر را می نویسیم (محتویات زیر برای تست میباشد) :
bin/bash!#/
echo "this is a sample service"
echo reza > /reza/behroozi
حال مجوز لازم برای اجرای اسکریپت را به آن می دهیم :
حال برای اینکه در زمان start-up اجرا شود دستور زیر را بکار ببرید :
و برای اینکه بطور دستی این اسکریپت را مثلا در سطح اجرایی 2 تنظیم کنید تا فعال شود بدین ترتیب عمل می کنیم :
حال اگر با دستور init 6 سیستم را دوباره راه اندازی کنید در فایل reza/behroozi/ کلمه reza نوشته شده است.
:||:: ارسال به دوست
|
||||||
| < بعد | قبل > |
|---|
آخرين مراجعات
| search.live.com |
| oss.oetiker.ch |
| www.google.com.eg |
| www.google.com |
| www.google.ae |
| admins.ir |
| ..ersianadmins.com |
| ..ersianadmins.com |
آخرین ارسالهای انجمن
PersianAdmins






ارسال نظر