منبع اصلی نوشتار زیر در این لینک قرار دارد

مدیریت سرویس در ابونتو/دبیان با update-rc.d

update-rc.d معادل دستور chkconfig برای توزیع های ابونتو/دبیان است که سرویسی را در سطح اجرایی خاصی فعال/غیر فعال (on/off) می کند. تعداد 7 دایرکتوری به صورت rc?.d زیر دایرکتوری etc/ وجود دارند که هر کدام نشان دهنده یک سطح اجرایی است. تمامی فایل هایی که در زیر این دایرکتوری ها هستند بعنوان لینک هایی به فایل های زیر دایرکتوری etc/init.d/ بوده که یا با Sxx و یا با kxx شروع می شوند. اسکریپت هایی که با S شروع می شوند با ورود به سطح اجرایی مربوطه اجرا می شوند و آنهایی که با K شروع می شوند با خروج از سطح اجرایی غیر فعال می شوند. xx نشان دهنده عددی است که از 01 شروع و تا عدد دیگری ادامه دارد و اسکریپت ها به ترتیب این اعداد اجرا می شوند.

اما چرا باید از این دستور یا معادل آن یعنی chkconfig در توزیع های RHLE/CentOS/Fedora استفاده کنیم؟ وقتی سرویسی مانند Apache (وب سرور) را نصب می کنیم، برای آنکه پس از reboot سیستم و راه اندازی مجدد سیستم و سپس ورود به سطح اجرایی پیش فرض، سرویس بصورت خودکار فعال شود، به اینصورت که اگر سطح اجرایی پیشفرض 2 باشد، پس از بوت شدن سیستم و قرار گرفتن سیستم در سطح اجرایی مورد نظر، تمامی فایل هایی که با S شروع می شوند به ترتیب عددی خوانده و فعال می شوند و دیگر نیازی به فعال کردن دستی نیست. در کل به یاد داشته باشید که :

  • سطح اجرایی مجموعه ای از سرویس هاست + یک سری ویژگی مانند فعال یا غیر فعا بودن شبکه
  • برای start/stop/restart و reload کردن یک سرویس بصورت دستی در سطح اجرایی که در آن هستیم (سطح اجرایی کنونی) باید فایل های زیر دایرکتوری etc/init.d/ را start/stop/restart و reload کنیم نه فایل زیر دایرکتوری مربوط به سطح اجرایی کنونی که بصورت rc?.d هستند، چونکه فایل های زیر دایرکتوری های rc?.d لینکی به فایل زیر دایرکتوری etc/init.d/ می باشند.

چگونگی استفاده

  • برای فعال کردن سرویس در سطوح اجرایی 2,3,4 5 از دستور زیر استفاده کنید.

update-rc.d SERVICE_NAME defaults

update-rc.d apache2 defaults

خروجی دستور بالا برای سرویس apache2 بصورت شکل زیر است. همانطور که مشاهده می کنید تنها برای سطوح 2 تا 5 فایل ها با S شروع می شوند و برای صفر و یک و شش با K شروع می شوند ور ابتدای خروجی نوشته “Adding system startup for /etc/init.d/apache2

  • برای حذف یک سرویس از سطوح 2,3,4 و 5 از دستور زیر استفاده کنید

update-rc.d -f SERVICE_NAME remove

update-rc.d -f apache2 remove

  • در دو شکل بالا می بینید که فایل های سرویس برای هر دو S و K و در تمامی سطوح با اولویت عددی 20 اجرا خواهند شد. اما می توانید این اولویت را تغییر دهید. مثال زیر اولویت تمامی فایل های سرویس apach2 برای تمامی سطوح با اولویت 91 اجرا خواهند شد (می توانید جای apache2 هر سرویس دیگری قرار گیرد).

update-rc.d apache2 defaults 91

  • اما اگر می خواهید الویت را طوری تنظیم کنید که برای فایل های شروع با S اولویت 20 و برای فایل های شروع با K اولویت 80 باشد از دستور زیر استفاده کنید.

update-rc.d apache2 defaults 20 80

  • دستور زیر عین دستور بالاست تنها در شکل تعریف فرق می کند. دستور بالا به ترتیب برای سطوح 2,3,4 5 که همان defaults هستند اولویت 20 و برای سطوح صفر و یک و شش الویت 80 را در نظر گرفته است. دستور زیر نیز همین کار را انجام می دهد. در دستور زیر start یعنی فایل هایی که به S شروع می شوند و عدد سبز پس از آن اولویت و اعداد قهوه ای پس از اولویت سطوح defaults و پس از اعداد سطح یک نقطه آمده است. stop هم یعنی فایل هایی که با K شروع می شوند و تفسیر اغعداد بعدی مانند start و در نهایت یک نقطه آمده است. (نقاط اجباری بوده و دقت کنید فراموش نشوند)

. update-rc.d apache2 start202 3 4 5 .stop80 0 1 6

  • با استفاده از روش بالا می توانید سفارشی کنید. بطور مثال سرویس apache2 در سطح اجرایی 5 فعال نیست چون پس از start و پس از عدد اولویت، عدد 5 که نشانه سطح 5 است نیامده است. (یا هر گونه سفارشی دیگر)

. update-rc.d apache2 start 20 2 3 4 . start 30 5 . stop 80 0 1 6



برچسب ها : , , , , , ,