PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزشی مدیریت سرویس ها در زمان start-up در دبین و آبانتو بهمراه آموزش تصویری



آبجی
10th March 2010, 12:05 PM
سرویس های لینوکس را میتوان به وسیله اسکریپتهایی که در 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/init.d/apache2 start/#












شما می توانید این سرویس را درزمان بوت غیر فعال کنید به وسیله حذف تمامی لینک های سمبلیک در 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
lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc1.d/K91apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc2.d/S91apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc3.d/S91apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc4.d/S91apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc5.d/S91apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root 17 2007-07-05 22:51 /etc/rc6.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 می توان سطح اجرایی فعلی را مشخص کرد.خروجی این دستور همانند زیر است :




PersianAdmins:~# runlevel
N 2



N نشان دهنده حالت عادی یا normal و S نشان دهنده حالت تک کاربره یا single می باشد.عدد بعد از این حروف نشان دهنده سطح اجرایی در حال حاظر می باشد.

همچنین با استفاده از فایل etc/inittab/ سطح اجرایی پیش فرض قابل مشاهده و تغییر است.

وقتی سیستم در حال بوت شدن می باشد به فایل etc/inittab/ رجوع می کند و سطح اجرایی پیش فرض را می خواند که در اینجا سطح اجرایی 2 می باشد , سپس به دایرکتوری etc/rc2.d/ می رود و تمامی اسکرپیت ها را به ترتیب اولویت اجرا می کند.اولویت بر اساس شماره بعد از S می باشد که هر چه عدد کوچکتر باشد زودتر اجرا می شود و اگر دو لینک هم عدد باشند بر اساس حروف الفبا اولویت بندی می شوند.

ارزش این اولویت بندی در سرویس هایی که وابسته به دیگر سرویس ها می باشند مشخص می شود تا سرویس مادر زودتر اجرا شود.

در هنگام خاموش شدن سیستم این اولویت بندی برعکس می باشد بطوریکه لینک با عدد بزرگتر زودتر غیر فعال می شود.



برای مشاهده آموزش کلیک کنید (http://www.persianadmins.com/swf/start-up-debian.htm)

برای دانلود آموزش کلیک کنید (http://www.parsaspace.com/behroozi/swf/startup.zip)

لینک های پشتیبان













برای مشاهده آموزش کلیک کنید (http://www.parsaspace.com/behroozi//swf/start-up-debian.htm)

برای دانلود آموزش کلیک کنید (http://www.parsaspace.com/behroozi//swf/startup.zip)













مدیریت سرویس ها در زمان start-up با update-rc.d








1)حذف کردن سرویس از start-up

اگر شما می خواهید سرویس apache2 را بصورت کامل و دستی غیر فعال کنید , می بایست هر لینک در etc/rcX.d/ را حذف کنید.با استفاده از update-rc.d این کار بدین آسانی می باشد :










update-rc.d -f apache2 remove #





از 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 را بدون هیچ گزینه ای استفاده کنیم این محیط گرافیکی همانند شکل زیر ظاهر می شود.







http://www.persianadmins.com/picarticle/start-up/sysv-rc-conf.png
(http://www.persianadmins.com/picarticle/start-up/sysv-rc-conf.png)












همانطور که مشاهده می کنید , مدیریت سرویس ها توسط این محیط گرافیکی در همه سطوح اجرایی ممکن و به آسانی قابل انجام است و نقطه قوت این ابزار اجرا شدن آن در محیط متنی که هیچ گونه محیط گرافیکی بر روی سیستم نصب نیست ,می باشد.

از Sysc-rc-conf بدون استفاده از این محیط هم میتوان برای مدیریت سرویس ها استفاده کرد که در ادامه به آن می پردازیم.

نصب این ابزار بدین گونه میباشد :










apt-get install sysv-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 بدین نحو عمل می کنیم :






sysv-rc-conf apache2 on

یا برای غیر فعال کردن در سطوح اجرایی 2 و 5 :






sysv-rc-conf apache2 off

همچنین شما می توانید در هر سطح اجرایی که دوست دارید سرویس را فعال یا غیرفعال کنید.در اینجا سرویس apache2 را سطوح اجرایی 3 و 5 فعال می کنیم :




sysv-rc-conf --level 35 apache2 on



























مدیریت سرویس ها در زمان start-up با rcconf

گزینه دیگر برای مدیریت سرویس ها rcconf میباشد که بر خلاف update-rc.d بصورت ساده تر و ویژوال قابل انجام است ولی نسبت به sysv-rc-conf دارای گزینه ها و امکانات کمتری است.

برای نصب rcconf بدین صورت عمل می کنیم :






apt-get install rcconf



برای اجرا شدن در شل rcconf را تایپ میکنیم و بعد از آن پنجره ای همانند شکل زیر ظاهر میشود و از طریق آن براحتی میتوانیم به مدیریت سرویس ها بپردازیم .









http://www.persianadmins.com/picarticle/start-up/rcconf.png
(http://www.persianadmins.com/picarticle/start-up/rcconf.png)















مدیریت سرویس ها در زمان start-up با file-rc



















ابزار دیگر مدیریت سطوح اجرایی file-rc می باشد که برخلاف ابزارهای قبلی نه دستوری است و نه گرافیکی , بلکه تنظیمات توسط فایل etc/runlevel.conf/ صورت می پذیرد.

نمونه این فایل در اینجا (http://www.persianadmins.com/picarticle/start-up/runlevel.conf) قابل مشاهده می باشد.

نصب این ابزار مدیریتی :




apt-get install file-rc




نحوه نوشتن تنظیمات در فایل etc/runlevel.conf/ بدین صورت می باشد :






<sort><off-levels><on-levels><command>
20 0,1,6 2,3,4,5 /etc/init.d/apache2








مدیریت سرویس ها در زمان start-up با Sysvconfig

کسانیکه با توزیع های بر پایه ردهت مانند RHEL , Fedora , CentOS کار کرده اند برای راه اندازی ، توقف ، شروع مجدد و بارگزاری مجدد از دستور Service استفاده می کنند و وقتی وارد توزیع های بر پایه دبین مثل اوبونتو و دبین می شوند با این مشکل مواجه می شوند که مثلا برای شروع مجدد سرویس آپاچی باید این دستور را اجرا کنند
/etc/init.d/apache2 restart






* برای اضافه کردن دستور سرویس باید بسته Sysvconfig را نصب کنیم .برای این منظور بدین ترتیب عمل کنید :


apt-get install sysvconfig

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


service [service-name] restart
service [service-name] stop
service [service-name] start

بطور مثال برای شروع سرویس آپاچی بدین صورت عمل می کنیم :

service apache2 strat

البته مزیت استفاده از شیوه ابتدایی که در ابتدای آموزش بیان شد در اینست که نیازی نیست تا اسم سرویس را بطور کامل بیاد داشته باشیم بدلیل انکه وقتی در دایرکتوری مورد نظر قرار گرفتیم با زدن کلید Tab اسم سرویس کامل می شود.

ممکن است بگویید که در ردهت هم اینچنین مشکلاتی ممکن است رخ دهد ، ولی مشکل دبین در اینست که ورژن بسته هایی که نصب می کنید را در انتهای نام سرویس ذکر می کند که این مورد در ردهت وجود ندارد.



از دستور Sysvconfig بصورت گرافیکی هم می توان بهره گرفت.با اجرای دستور sysvconfig بدون اضافه کردن پارامتر محیط گرافیکی مانند شکل زیر ظاهر می گردد.


http://www.persianadmins.com/picarticle/sysvconfig/sysvconfig1.PNG




مشاهده می کنید که امکان فعال یا غیرفعال کردن سرویس ها در زمان Start up را خواهید داشت بهمراه تنظیمات مورد نیاز برای سطح های اجرایی



http://www.persianadmins.com/picarticle/sysvconfig/sysvconfig2.PNG


http://www.persianadmins.com/picarticle/sysvconfig/sysvconfig3.PNG















طریقه تنظیم start-up برای یک اسکریپت خاص


گاهی اوقات پیش میآید که میخواهیم یک اسکریپت مورد نظرمون را طوری تنظیم کنیم که در زمان srart-up اجرا و فعال شود , برای رسیدن به این هدف بدین گونه عمل میکنیم :

ابتدا اسکریپت مورد نظر را در etc/init.d/ میسازیم :






touch /etc/init.d/behroozi



سپس محتویات اسکریپت مورد نظر را می نویسیم (محتویات زیر برای تست میباشد) :





#!/usr/bash

echo "this is a sample service"

echo reza > /reza/behroozi





حال مجوز لازم برای اجرای اسکریپت را به آن می دهیم :






chmod +x /etc/init.d/behroozi

حال برای اینکه در زمان start-up اجرا شود دستور زیر را بکار ببرید :






update-rc.d behroozi defaults





و برای اینکه بطور دستی این اسکریپت را مثلا در سطح اجرایی 2 تنظیم کنید تا فعال شود بدین ترتیب عمل می کنیم :




ln -s /etc/init.d/behroozi /etc/rc2.d/S91behroozi



حال اگر با دستور init 6 سیستم را دوباره راه اندازی کنید در فایل reza/behroozi/ کلمه reza نوشته شده است.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد