4Àå. /etc/rc.d/rc.sysinit, /etc/rc.d/rc

rc.sysinit ½ºÅ©¸³Æ®´Â »ìÆìº» °á°ú Å©°Ô ƯÀÌÇÒ °ÍÀº ¾ø´Â °Í °°½À´Ï´Ù. ÇÏ´Â ÀϵéÀº ·¹µåÇÞ ±â¹Ý ¹èÆ÷º»À» ¸ðµ¨·Î ¼³¸íÇϰڽÀ´Ï´Ù. [1] ÀÌ ÆÄÀÏÀº inittab ÀÇ Á¤ÀÇ¿¡ µû¶ó, ½Ã½ºÅÛ ÃʱâÈ­½Ã ¸Ç ¸ÕÀú µü ÇÑ ¹ø ½ÇÇàµÇ´Â ÃʱâÈ­ ½ºÅ©¸³Æ®ÀÔ´Ï´Ù.

ÀÇ ÀÏÀ» ¼öÇàÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº rc.sysinit ÆÄÀÏÀ» ÂùÂùÈ÷ ÀÐ¾î º¸¸é ¾Ë ¼ö ÀÖ½À´Ï´Ù.

Á¤ÀÛ, ¿ì¸®°¡ ÁÖÀǸ¦ ±â¿ïÀÏ ÃʱâÈ­ ½ºÅ©¸³Æ®´Â °¢Á¾ µ¥¸óµéÀ» ½ÇÇà½Ã۰í, Á×À̴µ¥ »ç¿ëµÇ´Â /etc/rc.d/rc ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®´Â Àμö·Î ½ÇÇà ·¹º§À» ¹Þ½À´Ï´Ù.(-_-; Ç¥ÇöÀÌ Á» ¸Å²ô·´Áö ¸øÇϱº¿ä) Áï,

/etc/rc.d/rc n

°ú °°Àº Çü½ÄÀ¸·Î ½ÇÇà½Ãŵ´Ï´Ù. n ¿¡´Â ½ÇÇà·¹º§ÀÌ µé¾î°©´Ï´Ù. Á» ´õ ³ªÀº ÀÌÇØ¸¦ À§Çؼ­ ´ÙÀ½ÀÇ ¸í·ÉÀ» ½ÇÇà½ÃÄÑ º¸½Ê½Ã¿À.

ls /etc/rc.d

½ÇÇà °á°ú·Î /etc/rc.d µð·ºÅ丮ÀÇ ³»¿ëÀÌ ³ª¿À´Âµ¥, ±× Áß¿¡ ´ÙÀ½°ú °°Àº µð·ºÅ丮µéÀÌ ÀÖ½À´Ï´Ù.

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

°¢°¢ÀÇ µð·ºÅ丮´Â rc·±·¹º§.d ·Î À̸§ÀÌ Áö¾îÁ® ÀÖ½À´Ï´Ù. °¢ µð·ºÅ丮 ¾Æ·¡¿¡´Â ÇØ´ç ·±·¹º§¿¡¼­ ½ÇÇàÇÒ ¼­ºñ½º³ª ÇÁ·Î¼¼½ºµéÀÌ Á¤ÀǵǾî ÀÖ½À´Ï´Ù. ÇÑ µð·ºÅ丮¸¦ Á¤Çؼ­ ¾î¶² ÆÄÀϵéÀÌ ÀÖ´ÂÁö »ìÆìº¸°Ú½À´Ï´Ù.

$ ls -laF /etc/rc.d/rc3.d
drwxr-xr-x  ./
drwxr-xr-x  ../
lrwxrwxrwx  K05keytable -> ../init.d/keytable*
lrwxrwxrwx  K15gpm -> ../init.d/gpm*
lrwxrwxrwx  K15proftpd -> ../init.d/proftpd*
lrwxrwxrwx  K60atd -> ../init.d/atd*
lrwxrwxrwx  K60crond -> ../init.d/crond*
lrwxrwxrwx  K80random -> ../init.d/random*
lrwxrwxrwx  K89portmap -> ../init.d/portmap*
lrwxrwxrwx  K92apmd -> ../init.d/apmd*
lrwxrwxrwx  K96pcmcia -> ../init.d/pcmcia*
lrwxrwxrwx  S10network -> ../init.d/network*
lrwxrwxrwx  S30syslog -> ../init.d/syslog*
lrwxrwxrwx  S50inet -> ../init.d/inet*
lrwxrwxrwx  S55named -> ../init.d/named*
lrwxrwxrwx  S80sendmail -> ../init.d/sendmail*
lrwxrwxrwx  S90mysql -> ../init.d/mysql*
lrwxrwxrwx  S91smb -> /etc/rc.d/init.d/smb*
lrwxrwxrwx  S99local -> ../rc.local*

º¸½Ã´Â ¹Ù¿Í °°ÀÌ S ·Î ½ÃÀÛÇÏ´Â ÆÄÀϵé°ú, K ·Î ½ÃÀÛÇÏ´Â ÆÄÀϵéÀÌ ÁÖ¿í~ Àִµ¥, °ÅÀÇ /etc/rc.d/init.d ¾Æ·¡ÀÇ ÆÄÀϵ鿡 ¸µÅ©°¡ µÇ¾î ÀÖ½À´Ï´Ù.

ÀÌó·³, rcN.d µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀϵéÀº ¿À·ÎÁö ¸µÅ©·Î¸¸ µÇ¾î ÀÖÀ¸¸ç, ½ÇÁ¦ ¼­ºñ½º¸¦ ½ÃÀÛÇϰųª Á¾·áÇÏ´Â ½ºÅ©¸³Æ®´Â /etc/rc.d/init.d µð·ºÅ丮 ¾Æ·¡¿¡ Á¸ÀçÇÕ´Ï´Ù.

S ·Î ½ÃÀÛÇÏ´Â ÆÄÀÏÀº ÇØ´ç ¼­ºñ½º¸¦ ½ÇÇà½Ã۴µ¥ »ç¿ëµÇ°í, (Start) K ·Î ½ÃÀÛÇÏ´Â ÆÄÀÏÀº ÇØ´ç ¼­ºñ½º¸¦ Á×À̴µ¥ »ç¿ëµË´Ï´Ù.(Kill) Á¦ ÄÄÇ»ÅÍ¿¡¼­´Â µðÆúÆ® ·±·¹º§ÀÎ 3 ¿¡¼­ network, syslog, inet, named, sendmail, mysql, smb µîÀ» ½ÇÇàÇϵµ·Ï ±¸¼ºÇØ µÎ¾ú½À´Ï´Ù. (¾ÆÆÄÄ¡¿Í proftpdµµ ½ÇÇàÀÌ µÇ´Âµ¥, ÀÏÀÏÀÌ ¸µÅ© °É±â°¡ ±ÍÂú(^^;)¾Æ¼­ S99local ÀÌ °¡¸®Å°´Â /etc/rc.d/rc.local ¾È¿¡ ½ÃÀÛ ½ºÅ©¸³Æ®¸¦ Àû¾î µÎ¾ú½À´Ï´Ù.)

±×·³ Àç¹Ì»ï¾Æ¼­, /etc/rc.d/rc0.d µð·ºÅ丮ÀÇ ³»¿ëµµ »ìÆì º¸°Ú½À´Ï´Ù.

$ ll /etc/rc.d/rc0.d
drwxr-xr-x  ./
drwxr-xr-x  ../
lrwxrwxrwx  K05keytable -> ../init.d/keytable*
lrwxrwxrwx  K15gpm -> ../init.d/gpm*
lrwxrwxrwx  K15proftpd -> ../init.d/proftpd*
lrwxrwxrwx  K30sendmail -> ../init.d/sendmail*
lrwxrwxrwx  K45named -> ../init.d/named*
lrwxrwxrwx  K50inet -> ../init.d/inet*
lrwxrwxrwx  K60atd -> ../init.d/atd*
lrwxrwxrwx  K60crond -> ../init.d/crond*
lrwxrwxrwx  K80random -> ../init.d/random*
lrwxrwxrwx  K85netfs -> ../init.d/netfs*
lrwxrwxrwx  K89portmap -> ../init.d/portmap*
lrwxrwxrwx  K90killall -> ../init.d/killall*
lrwxrwxrwx  K90mysql -> ../init.d/mysql*
lrwxrwxrwx  K90network -> ../init.d/network*
lrwxrwxrwx  K92apmd -> ../init.d/apmd*
lrwxrwxrwx  K96pcmcia -> ../init.d/pcmcia*
lrwxrwxrwx  K99syslog -> ../init.d/syslog*
lrwxrwxrwx  S00halt -> ../init.d/halt*

¿¹»óÇß´ø ´ë·Î °ÅÀÇ ¸ðµÎ°¡ K ·Î ½ÃÀÛÇÏ´Â ¸µÅ©¸¸ Á¸ÀçÇÕ´Ï´Ù. ´Ü Çϳª S ·Î ½ÃÀÛÇÏ´Â ¸µÅ©´Â halt ÀÔ´Ï´Ù. ½Ã½ºÅÛ Á¾·á¸¦ ÇÏ´Â ½ºÅ©¸³Æ®¿¡ ¸µÅ©°¡ °É·Á ÀÖ½À´Ï´Ù.

ÀÌÁ¦, ÀÌ·¸°Ô ½ÇÇà·¹º§ º°·Î ÀûÀýÇÑ µð·ºÅ丮¸¦ ã¾Æ¼­ ±× µð·ºÅ丮 ¾Æ·¡ÀÇ ¸µÅ©°¡ °¡¸®Å°´Â ½ºÅ©¸³Æ®µéÀ» ½ÇÇà½ÃŰ´Â ½ºÅ©¸³Æ®ÀÎ /etc/rc.d/rc ¸¦ »ìÆìº¸°Ú½À´Ï´Ù.

¾Æ·¡¿¡ Á¦ ÄÄÇ»ÅÍÀÇ /etc/rc.d/rc ÆÄÀÏÀÇ ÀϺθ¦ ¹ßÃéÇØ º¸¾Ò½À´Ï´Ù. ·¹µåÇÞ ÀνºÅçÇÑ ÈÄ¿¡ Çϳªµµ ¹Ù²ÙÁö ¾Ê¾Ò½À´Ï´Ù. (^^;)

--------------------------------------------------------------------
#!/bin/bash
#
# rc            This file is responsible for starting/stopping
#               services when the runlevel changes. It is also
#               responsible for the very first setup of basic
#               things, such as setting the hostname.
#
# Original Author:       
#               Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#

# Source function library.
. /etc/rc.d/init.d/functions

... »ý·« ...

# ¸¸¾à, ù¹øÂ° ÀÎÀÚ·Î ³Ñ¾î¿Â ·±·¹º§¿¡ ÇØ´çÇÏ´Â µð·ºÅ丮°¡ ÀÖ´Ù¸é, ¿ì¼±, 
# Áö±Ý ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½º¸¦ Á×ÀÔ´Ï´Ù.
# ÇÁ·Î¼¼½º¸¦ Á×ÀÌ´Â µ¥ »ç¿ëµÇ´Â ¸í·É¾î´Â K ¶ó´Â Á¢µÎ¾î°¡ ºÙÀº ÆÄÀÏÀÔ´Ï´Ù.
# ·±·¹º§¿¡ ÇØ´çÇÏ´Â µð·ºÅ丮´Â /etc/rc.d/rcn.d ·Î½á, n ¿¡´Â 0, 1, 2, 3, 4,
# 5, 6µî ·±·¹º§ÀÇ ¼ýÀÚ°¡ ºÙ½À´Ï´Ù. ls /etc/rc.d ¸¦ ½ÇÇàÇØ º¸½Ã¸é rc0.d 
# rc1.d... ¿Í °°Àº µð·ºÅ丮µéÀÌ Á¸ÀçÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

if [ -d /etc/rc.d/rc$runlevel.d ]; then
    # ¸ÕÀú, kill ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃŲ´Ù.
    for i in /etc/rc.d/rc$runlevel.d/K*; do
        # ½ºÅ©¸³Æ®°¡ Á¸ÀçÇÏ´ÂÁö üũÇÑ´Ù.
        [ ! -f $i ] && continue

        # [KS]??foo.{rpmsave,rpmorig} ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃŰÁö ¾Ê´Â´Ù.
        # [KS]??foo.{rpmsave,rpmorig} ÀÇ ¶æÀº... Á¤±ÔÇ¥Çö½ÄÀ» Á¶±Ý °øºÎÇØ 
        # º¸¸é ¾Ë ¼ö ÀÖ´Ù. 
        # ù ±ÛÀÚ°¡ K ȤÀº S ·Î ½ÃÀÛÇϸç, ±× µÚ¿¡ ÀÓÀÇÀÇ ¹®ÀÚ µÎ°³°¡ ¿À°í, 
        # ±× µÚ¿¡ foo. ÀÌ ¿À¸ç, ³¡¿¡ rpmsave ³ª rpmorig °¡ ºÙÀº ÇüÅÂÀÇ ÆÄÀÏ 
        # À̸§À» ¶æÇÑ´Ù. 
        [ "${i%.rpmsave}" != "${i}" ] && continue
        [ "${i%.rpmorig}" != "${i}" ] && continue
        [ "${i%.rpmnew}" != "${i}" ] && continue

        # Check if the subsystem is already up.
        subsys=${i#/etc/rc.d/rc$runlevel.d/K??}
        [ ! -f /var/lock/subsys/$subsys ] && \
            [ ! -f /var/lock/subsys/${subsys}.init ] && continue

        # Bring the subsystem down.
        if egrep -q "(killproc |action )" $i ; then
            $i stop
	else
            action "Stopping $subsys" $i stop
        fi
    done

# ÇÁ·Î¼¼½º¸¦ ¸ðµÎ Á׿´´Ù¸é, ÀÌÁ¦, ÇØ´ç ·±·¹º§¿¡¼­ ½ÇÇàµÇ¾î¾ß ÇÏ´Â 
# ÇÁ·Î¼¼½ºµéÀ» ½ÇÇà½Ãų Â÷·ÊÀÔ´Ï´Ù. ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇÏ´Â ¸í·É¾î´Â S ¶ó´Â 
# Á¢µÎ¾î°¡ ºÙÀº ÆÄÀÏÀÔ´Ï´Ù. 

    for i in /etc/rc.d/rc$runlevel.d/S*; do
        # ½ºÅ©¸³Æ®°¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÑ´Ù.
        [ ! -f $i ] && continue

        # Don't run [KS]??foo.{rpmsave,rpmorig} scripts
        [ "${i%.rpmsave}" != "${i}" ] && continue
        [ "${i%.rpmorig}" != "${i}" ] && continue
        [ "${i%.rpmnew}" != "${i}" ] && continue

        # Check if the subsystem is already up.
        subsys=${i#/etc/rc.d/rc$runlevel.d/S??}
        [ -f /var/lock/subsys/$subsys ] || \
            [ -f /var/lock/subsys/${subsys}.init ] && continue
	    
        # ¼­ºñ½º¸¦ ½ÇÇà½ÃųÁö ½ÇÇà ½ÃŰÁö ¾ÊÀ»Áö¸¦ »ç¿ëÀÚ¿¡°Ô ¹°¾îº¸´Â 
        # "confirm" ¸ðµåÀÎÁö¸¦ È®ÀÎÇÑ´Ù ¸¸¾à confirm ¸ðµåÀ̸é, »ç¿ëÀÚ¿¡°Ô 
        # ÇØ´ç ÇÁ·Î¼¼½ºÀÇ ½ÇÇà ¿©ºÎ¸¦ ÁúÀÇÇÑ´Ù.
        # confirm ÇÔ¼ö´Â /etc/rc.d/init.d/functions ¿¡ Á¤ÀǵǾî ÀÖ´Ù.
        [ -n "$CONFIRM" ]  && 
            { 
                confirm $subsys
                case $? in
                    0)
                        :
                        ;;
                    2)
                        CONFIRM=
                        ;;
                    *)
                        continue
                        ;;
                esac 
            }

        # Bring the subsystem up.
        if egrep -q "(daemon |action )" $i ; then
            $i start
        else
          if [ "$subsys" = "halt" -o "$subsys" = "reboot" -o \
	          "$subsys" = "single" ]; then
              $i start
          else
              action "Starting $subsys" $i start
          fi
        fi
    done
fi

¼¼ºÎÀûÀÎ ³»¿ëÀº ½ºÅ©¸³Æ®¸¦ Â÷ºÐÈ÷ ºÐ¼®ÇØ º¸½Ã¸é ¾Æ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿©±â¼­ Áß¿äÇÑ °ÍÀº, ÀÚ½ÅÀÌ ºÎÆÃ½Ã¿¡ ½ÇÇà½Ã۱⸦ ¿øÇÏ´Â µ¥¸óÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. rc ½ºÅ©¸³Æ®¿¡ º¸¸é, rc ¿¡ Àμö·Î °Ç³×Áø ·±·¹º§ÀÇ ¼ýÀÚ¸¦ º¸°í, ÇØ´çÇÏ´Â µð·ºÅ丮¿¡¼­ K ·Î ½ÃÀÛÇϰųª, S ·Î ½ÃÀÛÇÏ´Â ¸ðµç ÆÄÀÏÀ» ã¾Æ¼­ Á×À̰ųª ½ÇÇà½Ãŵ´Ï´Ù.

for i in /etc/rc.d/rc$runlevel.d/K*; do
....
$i stop

°ú

for i in /etc/rc.d/rc$runlevel.d/S*; do
....
$i start

ºÎºÐÀÌ ±× ÀÏÀ» ÇÏ°Ô µË´Ï´Ù.

¿ì¸®°¡ ´ÙÁß »ç¿ëÀÚ ¸ðµå·Î ºÎÆÃÇßÀ» ¶§, Áï, ÄÄÇ»Å͸¦ Ä×À» ¶§ ÀÚµ¿À¸·Î ½ÇÇà½Ã۰íÀÚ ÇÏ´Â µ¥¸ó Áß¿¡, ¿¹¸¦µé¾î, httpd °¡ ÀÖ´Ù°í °¡Á¤Çϸé, httpd °¡ ÄÄÀ» Ä×À» ¶§ ÀÚµ¿À¸·Î ½ÇÇàµÇ°Ô Çϱâ À§Çؼ­ /etc/rc.d/rc3.d µð·ºÅ丮 ¾Æ·¡¿¡ SNNhttpd ¶ó´Â ÆÄÀϰú KNNhttpd ÆÄÀÏÀ» ½Éº¼¸¯ ¸µÅ©·Î httpd ȤÀº apachectl ¿¡ ¸µÅ©½ÃÄÑ ÁÖ¸é µÇ´Â °ÍÀÔ´Ï´Ù.

±×·¯¸é, ºÎÆÃ½Ã¿¡ ·±·¹º§ 3À¸·Î ÁøÀÔÇϸ鼭, /etc/rc.d/rc3.d µð·ºÅ丮ÀÇ S* ÆÄÀϵéÀ» ½ÇÇàÇÏ°Ô µÇ°í, (S µÚ¿¡ ¹øÈ£°¡ Àִµ¥ ±× ¼ø¼­·Î ½ÇÇàµË´Ï´Ù.) ¿ì¸®°¡ ¸¸µç SNNhttpd ¸µÅ©µµ ½ÇÇàÇÏ°Ô µË´Ï´Ù. (¿©±â¼­ NN Àº ÀûÀýÇÑ ¹øÈ£ÀÔ´Ï´Ù. ³×Æ®¿öÅ©°¡ Ȱ¼ºÈ­ µÈ ÈÄ¿¡ apache µ¥¸óÀÌ ½ÇÇàµÇ¾î¾ß Çϴ°ÍÀ» °í·ÁÇØ ÀûÀýÇÏ°Ô ¹øÈ£¸¦ ÇÒ´çÇØ ÁÖ½Ã¸é µË´Ï´Ù.

Âü°íÇÒ ºÎºÐÀº, ÇØ´ç ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃŰ°Å³ª Á¾·á½ÃŰ´Â ½ºÅ©¸³Æ®´Â ¹Ýµå½Ã, Ç×»ó, Àμö·Î start ȤÀº stop À̶ó´Â °ÍÀ» ³Ñ°Ü ¹Þµµ·Ï ÀÛ¼ºÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ÇØ´ç ÇÁ·Î¼¼½º¸¦ ½ÇÇà ȤÀº Á¾·á½ÃŰ´Â ½ºÅ©¸³Æ®¸¦ Á÷Á¢ ¸¸µé±â¸¦ ¿øÇϽŴٸé, ´ÙÀ½°ú °°Àº Äڵ尡 ¹Ýµå½Ã Æ÷ÇԵǾ /etc/rc.d/rc ½ºÅ©¸³Æ®¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÀÛ¼ºÀ» ÇÏ¼Å¾ß ÇÕ´Ï´Ù. ±×¸®°í, ½Ã½ºÅÛ °ü¸®»ó, Àϰü¼º ÀÖ°Ô, ±× ½ºÅ©¸³Æ®´Â /etc/rc.d/init.d ¿¡ ³Ö¾î Áֽô°ÍÀÌ º¸±â¿¡ ÁÁÀ» °Í °°½À´Ï´Ù.

. /etc/rc.d/init.d/functions

... Áß·« ...

case "$1" in
 start)
    # ÀÌ ºÎºÐ¿¡ ½ÃÀÛÇÏ´Â Äڵ带 ³Ö´Â´Ù.
    ;;
 stop)
    # ÀÌ ºÎºÐ¿¡ Á¾·áÇÏ´Â Äڵ带 ³Ö´Â´Ù.
    ;;
 *)
    # ¸¸¾à start ȤÀº stop ÀÌ ¸í½ÃµÇÁö ¾ÊÀ¸¸é ´ÙÀ½ÁÙÀ» ½ÇÇàÇÑ´Ù.
    echo "Usage: skeleton {start|stop}"
    exit 1
esac

exit 0

ÀÌ°Ô Á» º¹ÀâÇÏ´Ù°í ´À³¢½Ã´Â ºÐµéÀº /etc/rc.d/rc.local ½ºÅ©¸³Æ®°¡ Àִµ¥, ÀÌ ½ºÅ©¸³Æ® ¸¶Áö¸· ºÎºÐ¿¡ ½ÇÇà½Ã۱⸦ ¿øÇÏ´Â µ¥¸óÀ» ½ÇÇàÇÏ´Â Äڵ带 ³Ö¾î ÁÖ½Ã¸é µË´Ï´Ù. ´Ü, rc.local ½ºÅ©¸³Æ®´Â ½ÇÇà·¹º§ 2, 3, 5 ÀÏ ¶§¸¸ ½ÇÇàµÇµµ·Ï ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. rc.local ½ºÅ©¸³Æ®´Â rcN.d µð·ºÅ丮¿¡¼­ S99local À̶ó´Â À̸§À¸·Î ¸µÅ©µÇ¾î ½ÇÇàµË´Ï´Ù. S99local À̶ó´Â ÆÄÀÏÀÌ rc2.d rc3.d rc5.d ¿¡¸¸ ÀÖÁÒ?

ÁÖ¼®

[1]

µ¥ºñ¾ÈÀÇ °æ¿ìµµ ÆÄÀÏÀÇ À§Ä¡¿Í À̸§¸¸ Á¶±Ý ´Ù¸¦ »Ó ¿ø¸®´Â °°½À´Ï´Ù.