الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إيقاف وتشغيل الخدمات في ال Runlevels !

بدأه Dr.Pain في 29 يونيو 2008 · 2 رد · 1,433 مشاهدة · في نظام تشغيل Unix & Linux
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ........

ملاحظة :

هذا الموضوع لا يشرح ال runlevels !!

للتنقل من level إلى أخر فاننا نستخدم الأمر :

init

فمثلا للخروج من ال level3 إلى ال level5 فاننا سوف نكتب شيئاً مماثلاً للاتي :

init 5

من المعروف أنه لدينا 6 Run Level ويمكن إستعراضهم كالتالي :

 less /etc/inittab

وهذا جزء من ناتج إستعارض الملف السابق

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)

وفي كل مرة نخرج من Level وندخل في أخر فأن هناك Services تعمل وأخرى تتوقف !!

ولكن يا ترى كيف يمكننا ضبط ال Services لكي تعمل أو تتوقف عند كل عملية دخول أو خروج من Level ؟

يتم هذا عن طريق المجلدات الموجود تحت المسار التالي :

 cd /etc/rc.d

وإذا قمنا بإستعراض المجلد السابق فأننا نحصل على التالي :

[root@MzmWebServer rc.d]# ls
init.d  rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local  rc.sysinit

نلاحظ أن هناك مجلدات مرقمة من صفر إلى ستة بحيث أن كل مجلد يمثل Level معين :

rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d

فلو أستعرضنا أحد تلك المجلدات ولنقل مثلا المجلد rc5.d لوجدنا شيئا مشابهاً للأتي وهذا قد يختلف من

جهاز إلى أخر :

[root@MzmWebServer rc.d]# ls rc5.d/
K02NetworkManager  K35vncserver  K85mdmpd			S12syslog	  S28autofs	  S90xfs
K05saslauthd	   K35winbind	K89netplugd		 S13irqbalance  S40smartd	  S95anacron
K10dc_server	   K36mysqld	 K90bluetooth		S13portmap	 S44acpid	   S95atd
K10psacct		  K50netdump	K94diskdump		 S14nfslock	 S54hpoj		S96readahead
K12dc_client	   K50snmpd	  K99microcode_ctl	S15httpd	   S55cups		S97messagebus
K20nfs			 K50snmptrapd  S04readahead_early  S15mdmonitor   S55named	   S97rhnsd
K20rwhod		   K50tux		S05kudzu			S18rpcgssd	 S55sshd		S98cups-config-daemon
K24irda			K50vsftpd	 S06cpuspeed		 S19rpcidmapd   S56rawdevices  S98haldaemon
K25squid		   K61ldap	   S08iptables		 S19rpcsvcgssd  S56xinetd	  S99local
K34dhcrelay		K73ypbind	 S09isdn			 S25netfs	   S80sendmail	S99webmin
K35dhcpd		   K74nscd	   S09pcmcia		   S26apmd		S85gpm
K35smb			 K74ntpd	   S10network		  S26lm_sensors  S90crond

نلاحظ أن المجلد كله عبارة عن links وهذه ال Links إما تبدأ بحرف ال :

K

وهذا يعني قم بإيقاف الخدمة Kill عند الدخول إلى هذا ال Level ,, !!

أو بحرف ال :

S

وهذا يعني قم بتشغيل الخدمة Start عند الدخول إلى هذا ال Level ,, !!

والان دعنا نستعرض المجلد الخاص بال Level رقم خمسة ودعنا نرى خدمة ال httpd ماهو حالها:

[root@MzmWebServer rc.d]# ls rc5.d
K02NetworkManager  K35vncserver  K85mdmpd			S12syslog	  S28autofs	  S90xfs
K05saslauthd	   K35winbind	K89netplugd		 S13irqbalance  S40smartd	  S95anacron
K10dc_server	   K36mysqld	 K90bluetooth		S13portmap	 S44acpid	   S95atd
K10psacct		  K50netdump	K94diskdump		 S14nfslock	 S54hpoj		S96readahead
K12dc_client	   K50snmpd	  K99microcode_ctl	S15httpd	   S55cups		S97messagebus
K20nfs			 K50snmptrapd  S04readahead_early  S15mdmonitor   S55named	   S97rhnsd
K20rwhod		   K50tux		S05kudzu			S18rpcgssd	 S55sshd		S98cups-config-daemon
K24irda			K50vsftpd	 S06cpuspeed		 S19rpcidmapd   S56rawdevices  S98haldaemon
K25squid		   K61ldap	   S08iptables		 S19rpcsvcgssd  S56xinetd	  S99local
K34dhcrelay		K73ypbind	 S09isdn			 S25netfs	   S80sendmail	S99webmin
K35dhcpd		   K74nscd	   S09pcmcia		   S26apmd		S85gpm
K35smb			 K74ntpd	   S10network		  S26lm_sensors  S90crond

نلاحظ أن خدمة ال httpd عندي سوف تعمل تلقائياً عند الدخول في ال level رقم خمسة وذلك لأن ال link الخاص بها يبدأ بحرف ال S :

S15httpd

والان ولجعل الخدمة هذه تتوقف كل ما علينا فعله هو إعادة تسمية الملف مرة أخرى كالتالي :

[root@MzmWebServer rc5.d]# mv S15httpd K15httpd
[root@MzmWebServer rc5.d]# ls
K02NetworkManager  K35smb		K74ntpd			 S10network	 S28autofs	  S90xfs
K05saslauthd	   K35vncserver  K85mdmpd			S12syslog	  S40smartd	  S95anacron
K10dc_server	   K35winbind	K89netplugd		 S13irqbalance  S44acpid	   S95atd
K10psacct		  K36mysqld	 K90bluetooth		S13portmap	 S54hpoj		S96readahead
K12dc_client	   K50netdump	K94diskdump		 S14nfslock	 S55cups		S97messagebus
K15httpd		   K50snmpd	  K99microcode_ctl	S15mdmonitor   S55named	   S97rhnsd
K20nfs			 K50snmptrapd  S04readahead_early  S18rpcgssd	 S55sshd		S98cups-config-daemon
K20rwhod		   K50tux		S05kudzu			S19rpcidmapd   S56rawdevices  S98haldaemon
K24irda			K50vsftpd	 S06cpuspeed		 S19rpcsvcgssd  S56xinetd	  S99local
K25squid		   K61ldap	   S08iptables		 S25netfs	   S80sendmail	S99webmin
K34dhcrelay		K73ypbind	 S09isdn			 S26apmd		S85gpm
K35dhcpd		   K74nscd	   S09pcmcia		   S26lm_sensors  S90crond

ولجعلها تعمل مرة أخرى قم بعكس الوضع كالتالي :

[root@MzmWebServer rc5.d]# mv K15httpd S15httpd
[root@MzmWebServer rc5.d]# ls
K02NetworkManager  K35vncserver  K85mdmpd			S12syslog	  S28autofs	  S90xfs
K05saslauthd	   K35winbind	K89netplugd		 S13irqbalance  S40smartd	  S95anacron
K10dc_server	   K36mysqld	 K90bluetooth		S13portmap	 S44acpid	   S95atd
K10psacct		  K50netdump	K94diskdump		 S14nfslock	 S54hpoj		S96readahead
K12dc_client	   K50snmpd	  K99microcode_ctl	S15httpd	   S55cups		S97messagebus
K20nfs			 K50snmptrapd  S04readahead_early  S15mdmonitor   S55named	   S97rhnsd
K20rwhod		   K50tux		S05kudzu			S18rpcgssd	 S55sshd		S98cups-config-daemon
K24irda			K50vsftpd	 S06cpuspeed		 S19rpcidmapd   S56rawdevices  S98haldaemon
K25squid		   K61ldap	   S08iptables		 S19rpcsvcgssd  S56xinetd	  S99local
K34dhcrelay		K73ypbind	 S09isdn			 S25netfs	   S80sendmail	S99webmin
K35dhcpd		   K74nscd	   S09pcmcia		   S26apmd		S85gpm
K35smb			 K74ntpd	   S10network		  S26lm_sensors  S90crond

وسوف تعود الخدمة للعمل مرة أخرى ..

ملاحظة أخيرة :

كل الملفات الموجودة في المجلد rc5.d عبارة عن links تشير إلى ال scripts الموجودة

في المجلد /init.d/ والتي وظيفتها إيقاف وتشغيل الخدمات .. !!

Dr.Pain

#2

أيضا يمكن التحكم في تشغيل الخدمات بشكل مباشر في run levels معينة كالتالي :

chkconfig --level 345 httpd on

حيث الرقم 345 يعني في level 3 و 4 و5 , يكون ON يعني يعمل .. العكس إستخدام off مثلا :

chkconfig --level 345 portmap off

بالتالي نمنع خدمة ال RPC من العمل في النظام ...

ويمكن إلغاء الخدمة بساطة بدون معرفة ال runlevels التي تعمل فيها ب :

chkconfig portmap off

ولو أردنا معرفة ال runlevels التي تعمل فيها خدمة معينة :

[root@www ~]# chkconfig --list portmap
portmap         0:off   1:off   2:off   3:off   4:off   5:off   6:off

لمعرفة مستوى ال runlevel الذي نعمل عليه حاليا :

[root@www ~]# runlevel
N 3

بالتالي يمكن التحكم في الخدمات التي تعمل من عدمها بشكل أسرع من التعديل على مسميات الملفات في مجلدات ال runlevel والتي تسمى ب rcx.d .

وكما وضح الأخ DR.Pain للإنتقال من كل مرحلة للأخرى نستخدم الأمر init ...

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

شرح ممتاز

:wink:

مواضيع مشابهة