زمان تخمینی مطالعه:‌ 5 دقیقه

مراحل بالا آمدن SysV یا سیستم عامل


مراحل بالا آمدن SysV یا سیستم عامل (SysV startup sequence):

1- در شروع /etc/inittab تمام دستورالعمل های /sbin/init را اجرا می کند. این اسکریپت اول روی runlevel پیش فرض (در دروس آینده runlevel ها را توضیح می دهیم) سوییچ می کند. که در سیستم عامل های سری debian مقدار پیش فرض runlevel 2 و در سیستم عامل های سری redhat مقدار پیش فرض برابر 5 می باشد.

Debian

id:2:initdefault:

Redhat

id:5:initdefault:

2- در ادامه اسکریپت زیر اجرا می شود (برای تمام runlevel ها)، که وظیفه آن تنظیم سخت افزار های جانبی، اجرا کردن پارامتر های کرنل، تنظیم hostname و شروع کار دیسک ها می باشد.

Debian

/etc/init.d/rcS

Redhat

/etc/rc.d/rc.sysinit 
/etc/rc.sysinit

3- در ادامه برای runlevel N اسکریپت /etc/init.d/rc N اجرا می شود، که وظیفه آن استارت کردن تمام سرویس ها یی است که در فهرست استارتاپ (startup directory) تعریف شده اند.

Debian

/etc/rcN.d/

Redhat

/etc/rc.d/rcN.d/

4- فهرست استارتاپ (startup directory) شامل لینک های نمادینی symlink (symbolic link) به init در فایل /etc/init.d/هستند که به ترتیب شماره اجرا می شوند.

لینک هایی که با K صدا زده می شوند با حالت stop و لینک هایی که با S صدا زده می شوند با حالت start شروع می شوند.

در زیر قسمتی از این اتفاق را می بینید:

خروجی

lrwxrwxrwx.      1 root root      14 Feb 11 22:32 K88sssd -> ../init.d/sssd
lrwxrwxrwx.      1 root root      15 Nov 28 14:50 K89rdisc -> ../init.d/rdisc
lrwxrwxrwx.      1 root root      17 Nov 28 15:01 S01sysstat -> ../init.d/sysstat
lrwxrwxrwx.      1 root root      18 Nov 28 14:54 S05cgconfig -> ../init.d/cgconfig
lrwxrwxrwx.      1 root root      16 Nov 28 14:52 S07iscsid -> ../init.d/iscsid
lrwxrwxrwx.      1 root root      18 Nov 28 14:42 S08iptables -> ../init.d/iptables

نکته: آخرین اسکریپتی که اجرا می شود S99local -> ../init.d/rc.local می باشد، بنابراین برای این که یک برنامه خاص در بوت استارت شود می توانیم آن را در این اسکریپت قرار دهیم.

5- در مرحله بعد فقط در زمان بوت (نه زمان سوییچ بین runlevel ها)اسکریپت زیر اجرا می شود:

/etc/init.d/boot.local

که در سیستم عامل های سری SUSE به 2 دستور تقسیم می شود که یکی قبل از اجرای اسکریپت های startup directory ها هست و یکی بعد از آن.

/etc/init.d/before.local
/etc/init.d/after.local

برای حذف یا اضافه کردن یک سرویس به چرخه بوت از دستورات زیر استفاده کنید:

Debian

update-rc.d service defaults
update-rc.d -f service remove

Redhat

chkconfig --add service
chkconfig --del service

وقتی در بوت یک سرویس را حذف یا اضافه می کنید در startup directory یک symlink به صورت پیش فرض زیر حذف یا اضافه می شود:

لینک های نمادین (symlink) K برای runlevel های 0 , 1 , 6 و لینک های نمادین (symlink) S برای runlevel های 2 , 3 , 4 , 5 و سرویس توسط سوپر سرور xinetd اجرا می شود.

پارامتر های دستور سرویس یا Service

لیست دستورات service که توسط init ساپورت می شوند:

لیست دستورات اجباری یا Mandatory سرویس ها:

start سرویس را استارت می کند.

stop سرویس را متوقف می کند.

restart سرویس را ریستارت (اول stop سپسstart ) می کند.

status وضعیت سرویس را به همراه PID آن نشان می دهد.

force-reload اگر سرویس پشتیبانی کند تنظیمات آن را دوباره می خواند (reload) در غیر این صورت سرویس را ریستارت می کند.

لیست دستورات اختیاری یا Optional سرویس ها:

condrestart یا try-restart سرویس را فقط در صورتی که در حالت اجرا (start) باشد ریستارت می کند.

reload تنظیمات سرویس را دوباره می خواند (reload).

زیر ساخت استاندارد لینوکس یا LSB (Linux Standard Base)

زیر ساخت استاندارد لینوکس یک فرمت مخصوص برای تعریف مقادیر پیش فرض یک اسکریپت init مثل /etc/init.d/foo تعریف می کند :

خروجی

### BEGIN INIT INFO
# Provides: foo
# Required-Start: bar
# Defalt-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Service Foo init script
### END INIT INFO

برای مثال runlevel های پیش فرض و مقادیر symlink های S , K می تواند به صورت زیر تعریف شود:

خروجی

 # chkconfig: 2345 85 15
 # description: Foo service

لطفا در راستای هرچه بهتر شدن کیفیت مطالب نظر خود را در رابطه با این سرفصل برای ما ارسال نمایید.