فرمان های rc در netbsd:

سیستم عامل NetBSD هم مثل سایر سیستم عامل های خانواده BSD از سیستم rc برای کنترل کردن سرویس ها استفاده می کند. در این بخش در مورد راه اندازی سرویس و فایل های مهم آن توضیحاتی داده می شود.

مباحث پایه:

فایل های راه انداز سیستم همه در شاخه /etc قرار دارند، فایل هایی که به سیستم rc مربوط می شوند عبارت اند از:

  • /etc/rc
  • /etc/rc.conf
  • /etc/rc.d/*
  • /etc/rc.lkm
  • /etc/rc.local
  • /etc/rc.shutdown
  • /etc/rc.subr
  • /etc/defaults/*
  • /etc/rc.conf.d/*

مراحل استفاده از هر بخش به صورت زیر است:

در ابتدا زمانی که سیستم راه اندازی می شود، هسته همه دستگاه های جانبی را چک کرده و بعد فرمان init را راه اندازی می کند که در مرحله بعد فرمان etc/rc راه اندازی می شود.

در بخش بعدی فرمان rc با استفاده از rcorder الویت سرویس ها را برای راه اندازی تعیین کرده و به ترتیب شروع به راه اندازی می کند.

فایل sc.subr شامل توابع معمولی است که توسط rc استفاده می شود.

تا این بخش برای راه اندازی سیستم است در زمان خاموش کردن سیستم ابتدا فرمان etc/rc.shutdown راه اندازی می شود، بعد با استفاده از فرمان های rc.d معکوس عملی که در زمان راه اندازی توسط rcorder انجام شد را انجام می دهد. توجه داشته باشید که اگر سیستم خود را با استفاده از فرمان halt خاموش کنید این فرمان اجرا نخواهد شد.

سایر فرامینی که خارج از شاخه rc.d وجود دارند:

فرمان rc.lkm  برای بارگذاری و از حالت بارگذاری خارج کردن ماژول های هسته استفاده می شود.

فرمان rc.local که آخرین فرمانی است که در زمان راه اندازی اجرا می شود. این فرمان می تواند توسط مدیر سیستم ویرایش شود.

فرمان rc.d توسط یک فایل مرکزی به نام etc/rc.conf کنترل می شود، فایل پیش فرض آن در آدرس  etc/defaults/rc.conf قرار دارد همه تنظیمات برای شما در این فایل نوشته است، توجه داشته باشید در فایل پیش فرض تغییراتی اعمان نکنید و تغییرات را در فایل rc.conf اعمال کنید.

یکی از دلایلی که از این سیستم برای راه اندازی سرویس ها استفاده می شود این است که در زمان راه اندازی سیستم سرویس های مورد نظر شما به صورت خودکار اجرا شود، مثلا برای اجرا شدن خودکار سرویس ssh   در زمان راه اندازی سیستم در ابتدا باید متغیر rc را در فایل پیش فرض جستجو کنید و آن را به فایل اصلی منتقل کنید به صورت زیر:

# cd /etc; grep ssh defaults/rc.conf
sshd=NO                 sshd_flags=””
# echo “sshd=YES” >> rc.conf

بعد از اضافه شدن این خط با راه اندازی مجدد سیستم شما برنامه ssh راه اندازی می شود. در بخش بعدی یاد خواهید گرفت سرویس های مورد نظر خود را به چه صورت در هر زمانی که دوست دارید راه اندازی کرده و یا از حالت راه اندازی خارج کنید.

فرمان های rc.d:

در برخی موارد شما نیاز دارید که سرویس مورد نظر خود را به صورت دستی راه اندازی کنید. در شاخه rc.d فرامین راه اندازی وجود دارد که هم به صورت اتوماتیک در زمان راه اندازی سیستم و هم به صورت دستی می توانید از آنها استفاده کنید. برای استفاده از آن ها ابتدا باید مقادیر مورد نظر خود را به فایل rc.conf اضافه کنید البته راهی هم وجود دارد که این مقادیر را اضافه کنید که در ادامه به آن اشاره می شود. در ادامه بعد از وارد کردن مقادیر مورد نظر برای راه اندازی سرور ssh با استفاده از فرمان های rc به صورت زیر عمل می شود:

# /etc/rc.d/sshd start
Starting sshd.

حال برای متوقف کردن سرویس ssh فرمان مورد نظر را به صورت زیر اجرا کنید:

# /etc/rc.d/sshd stop
Stopping sshd.
Waiting for PIDS: 123.

به این نکته توجه کنید که برای هر سرویس به نام آن یک فایل وجود دارد مثلا برای سرویس ssh فایلی به نام sshd وجود دارد. در همه موارد این فایل ها مقدار زیر را به عنوان متغیر قبول می کند:

  • start
  • stop
  • restart
  • status

در بعضی از موارد گزینه reload هم برای بعضی از سرویس ها وجود دارد که وظیفه آن بارگذاری مجدد فایل پیکربندی است. متغیر rcvar هم وجود دارد که متغیری که باید در فایل rc.conf نوشته شود را نمایش می دهد.

حالت One:

در برخی از مواقع شما نیاز دارید که یک سرویس فقط برای یک بار راه اندازی کنید و تغییری در فایل rc.conf ندهید برای این منظور کافی است که از کمه one در ابتدای هر فرمان مثل onestart و … استفاده کنید. به صورت زیر:

# /etc/rc.d/httpd onestart
Starting httpd.

حالت reload:

بعضی از سرویس ها این امکان را برای شما ایجاد می کند که بدون راه اندازی مجدد یک سرویس فایل پیکربندی را بارگذاری کنید، راه اندازی مجدد یک سرویس شاید باعث از بین رفتن و قطع موقت سرویس ارایه شده شود یا در بعضی از موارد وجود خطا در فایل پیکربندی باعث راه اندازی نشدن سرویس مورد نظر شما می شود. در سیستم rc این گزینه به صورت reload در نظر گرفته شده است در مثال زیر این فرمان نمایش داده است:

# /etc/rc.d/named reload
Reloading named config files.