مدیریت سرویس ها در FreeBSD

سرویس ها در سیستم عامل FreeBSD تحت کنترل فرایند init است. فرایند init اولین فرایندی است که در سیستم ایجاد شده و سپس کنترل بقیه فرایند ها در انجام می دهد. به عبارتی فرایندی است با PID=1 که والد تمامی دیگر فرایند ها در سیستم است. تمامی سرویس ها مانند DNS, DHCP, SSH و غیره تحت کنترل این فرایند هستند. سرویس های تحت کنترل فرایند init در زیر دایرکتوری etc/rc.d/ یک فایل اسکریپت دارند. به عبارتی سرویس های زیر این دایرکتوری قابلیت کنترل شدن توسط دستور service همانند آنچه که درباره لینوکس گفته شد را دارند. شکل زیر فهرستی از فایل های مربوط به سرویس های تحت کنترل init را مانند sshd نشان می دهد.

freebsd_service_control1

دستور های زیر به ترتیب سرویس  sshd را برای restart, stop, start و reload شدن سرویس sshd را نشان می دهند.

service sshd start

service sshd stop

service sshd restart

service sshd reload

 تفاوت restart و reload در این است که با restart شدن سرویس، سرویس ابندا stop شده و سپس مجدد start می شود که باعث قطع شدن کاربران متصل به سرویس می شود. اما reload کردن دیگر منجر به قطع شدن کاربران نمی شود. دستور های بالا در زمان اجرای سیستم، سرویس مورد نظر را کنترل می کند. اگر بخواهیم سرویس در زمان بوت شدن به صورت خودکار start (فعال) شود، باید فایل etc/rc.conf/ را ویرایش کنیم. به طور مثال اگر بخواهیم سرویس sshd در زمان بوت شدن به طور خودکار فعال شود، باید خطی مطابق زیر در فایل وجود داشته باشد.

“sshd_enable=”YES

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

SERVICENAME_enable=”YES|NO

این فایل تنها مربوط به فعال شدن خودکار سرویس ها در زمان بوت شدن نیست و شامل hostname ماشین FreeBSD و تنظیمات مربوط به اینترفیس های شبکه است. به عنوان مثال، نخست دستور زیر را اجرا کنید تا وضعیت سرویس sshd را پیدا کنیم.

service status sshd

OUTPUT

Will not ‘status’ sshd because sshd_enable is NO

پیام خطای بالا به این معنی است که یا خط زیر برای سرویس sshd در فایل وجود ندارد و یا اینکه به جای YES کلمه NO وجود دارد.

“sshd_enable=”YES

پس لازم است ابتدا خط بالا را به فایل با مجوز root اضافه کنید. حال مجدد دستور service sshd status را اجرا کنید و پیغام زیر را نشان می دهد.

sshd is not running

پس می توان نتیجه گرفت که در صورتی دستور service کار می کند که خط SERVICENAME_enable=”YES” برای سرویس مورد نظر در فایل وجود داشته باشد و از این پس سرویس در زمان بوت شدن خودکار فعال شده و می توان در زمان اجرای سیستم عامل آنرا کنترل کرد.