8 ¸øÓè rc.d ½Å±¾¸ü¶àµÄÁé»îÐÔ

¡¡¡¡µ±½øÐÐÆô¶¯»òÍ£Ö¹µÄµ÷ÓÃʱ£¬rc.d ½Å±¾Ó¦¸Ã×÷ÓÃÓÚÆäËù¸ºÔðµÄÕû¸ö×Óϵͳ¡£ÀýÈ磬 /etc/rc.d/netif Ó¦¸ÃÆô¶¯»òÍ£Ö¹ rc.conf(5) ÖÐËùÃèÊöµÄÈ«²¿ÍøÂç½Ó¿Ú¡£Ã¿¸öÈÎÎñ¶¼Î¨Ò»µØÌý´ÓÒ»¸öÈç start »ò stop ÕâÑùµÄµ¥¶ÀÃüÁî²ÎÊýµÄָʾ¡£ÔÚÆô¶¯ºÍÍ£Ö¹Ö®¼äµÄʱ¼ä£¬ rc.d ½Å±¾°ïÖú¹ÜÀíÔ±¿ØÖÆÔËÐÐÖеÄϵͳ£¬ ²¢ÆäÔÚÐèÒªµÄʱºòËü½«²úÉú¸ü¶àµÄÁé»îÐԺ;«È·ÐÔ¡£¾Ù¸öÀý×Ó£¬ ¹ÜÀíÔ±¿ÉÄÜÏëÔÚ rc.conf(5) ÖÐÌí¼ÓÒ»¸öÐÂÍøÂç½Ó¿ÚµÄÅäÖÃÐÅÏ¢£¬ È»ºóÔÚ²»·Á°­ÆäËüÒÑ´æÔÚ½Ó¿ÚµÄÇé¿öϽ«ÆäÆô¶¯¡£ ÔÚÏ´ιÜÀíÔ±¿ÉÄÜÐèÒª¹Ø±ÕÒ»¸öµ¥¶ÀµÄÍøÂç½Ó¿Ú¡£ÔÚħ»ÃµÄÃüÁîÐÐÖУ¬ ¶ÔÓ¦µÄ rc.d ½Å±¾µ÷ÓÃÒ»¸ö¶îÍâµÄ²ÎÊý£¬ ÍøÂç½Ó¿ÚÃû¼´¿É¡£

¡¡¡¡ÐÒÔ˵ÄÊÇ£¬rc.subr(8) ÔÊÐí´«µÝÈÎÒâ¶à£¨È¡¾öÓÚϵͳÏÞÖÆ£©µÄ²ÎÊý¸ø½Å±¾µÄ·½·¨¡£ ÓÉÓÚÕâ¸öÔ­Òò£¬½Å±¾×ÔÉíµÄ¸Ä±ä¿ÉÒÔ˵ÊÇ΢ºõÆä΢¡£

¡¡¡¡rc.subr(8) ÈçºÎ·ÃÎʵ½¸½¼ÓµÄÃüÁîÐвÎÊýÄØ£¿Ö±½Ó»ñȡô£¿ ²¢·ÇÊÇÎÞËù²»ÓÃÆä¼«µÄ¡£Ê×ÏÈ£¬sh(1) º¯ÊýûÓзÃÎʵ½µ÷ÓÃÕߵĶ¨Î»²ÎÊý£¬¶ø rc.subr(8) Ö»ÊÇÕâЩº¯ÊýµÄÈÝÆ÷¡£Æä´Î£¬rc.d Ö¸ÁîµÄÒ»¸öºÃµÄ·ç¸ñÊÇÓÉÖ÷º¯ÊýÀ´¾ö¶¨½«ÄÄЩ²ÎÊý´«µÝ¸øËüµÄ·½·¨¡£

¡¡¡¡ËùÒÔ rc.subr(8) ÌṩÁËÈçÏµķ½·¨£º run_rc_command ´«µÝÆäËùÓвÎÊýµ«½«µÚÒ»¸ö²ÎÊýÖð×Ö´«µÝµ½¸÷×Եķ½·¨¡£Ê×ÏÈ£¬ ·¢³öÒÔ·½·¨×ÔÉíΪÃû×ֵIJÎÊý£ºstart£¬ stop£¬µÈµÈ¡£Õâ»á±» run_rc_command ÒÆ³ö£¬ ÕâÑùÃüÁîÐÐÖÐÔ­±¾ $2 µÄÄÚÈݽ«×÷Ϊ $1 À´Ìṩ¸ø·½·¨£¬µÈµÈ¡£

¡¡¡¡ÎªÁË˵Ã÷Õâµã£¬ÎÒÃÇÀ´ÐÞ¸ÄÔ­À´µÄÐéÄâ½Å±¾£¬ ÕâÑùËüµÄÐÅÏ¢½«È¡¾öÓÚËùÌṩµÄ¸½¼Ó²ÎÊý¡£´ÓÕâÀï³ö·¢£º

#!/bin/sh

. /etc/rc.subr

name="dummy"
start_cmd="${name}_start"
stop_cmd=":"
kiss_cmd="${name}_kiss"
extra_commands="kiss"

dummy_start()
{
        if [ $# -gt 0 ]; then(1)
                echo "Greeting message: $*"
        else
                echo "Nothing started."
        fi
}

dummy_kiss()
{
        echo -n "A ghost gives you a kiss"
        if [ $# -gt 0 ]; then(2)
                echo -n " and whispers: $*"
        fi
        case "$*" in
        *[.!?])
                echo
                ;;
        *)
                echo .
                ;;
        esac
}

load_rc_config $name
run_rc_command "$@"(3)

¡¡¡¡ÄÜ×¢Òâµ½½Å±¾Àï·¢ÉúÁËÄÇЩʵÖÊÐԸıäô£¿

(1)
ÄãÊäÈëµÄËùÓÐÔÚ start Ö®ºóµÄ²ÎÊý¿ÉÒÔ±»µ±×÷¸÷×Ô·½·¨µÄ¶¨Î»²ÎÊýÒ»Ñù±»Öսᡣ ÎÒÃÇ¿ÉÒÔ¸ù¾ÝÎÒÃǵÄÈÎÎñ¡¢¼¼ÇɺÍÏë·¨À´ÒÔÈκη½Ê½Ê¹ÓÃËûÃÇ¡£ ÔÚµ±Ç°µÄÀý×ÓÖУ¬ÎÒÃÇÖ»ÊÇÒÔÏÂÐÐÖÐ×Ö·û´®µÄÐÎʽ´«µÝ²ÎÊý¸ø echo(1) ³ÌÐò ©¤©¤ ×¢Òâ $* ÊÇÓÐË«ÒýºÅµÄ¡£ÕâÀïÊǽű¾ÈçºÎ±»µ÷Óõģº
# /etc/rc.d/dummy start
Nothing started.
# /etc/rc.d/dummy start Hello world!
Greeting message: Hello world!
(2)
ͬÑùÓÃÓÚÎÒÃǽű¾ÌṩµÄÈκη½·¨£¬²¢²»½öÏÞÓÚ±ê×¼µÄ·½·¨¡£ ÎÒÃÇÒѾ­Ìí¼ÓÁËÒ»¸ö×Ô¶¨ÒåµÄ½Ð×ö kiss µÄ·½·¨£¬ ²¢ÇÒËü¸ø¸½¼Ó²ÎÊý´øÀ´µÄÏ·Ë£¾ö²»ÑÇÓÚ start¡£ ÀýÈ磺
# /etc/rc.d/dummy kiss
A ghost gives you a kiss.
# /etc/rc.d/dummy kiss Once I was Etaoin Shrdlu...
A ghost gives you a kiss and whispers: Once I was Etaoin Shrdlu...
(3)
Èç¹ûÎÒÃÇÖ»ÊÇ´«µÝËùÓи½¼Ó²ÎÊý¸øÈÎÒâµÄ·½·¨£¬ ÎÒÃÇÖ»ÐèÒªÔڽű¾µÄ×îºóÒ»ÐÐÎÒÃǵ÷Óà run_rc_command µÄµØ·½£¬ Óà "$@ ´úÌæ "$1" ¼´¿É¡£

ÖØÒª: Ò»¸ö sh(1) ³ÌÐòÔ±Ó¦¸ÃÊÇ¿ÉÒÔÀí½â $* ºÍ $@ µÄ΢ÃîÇø±ðÖ»ÊÇÖ¸¶¨È«²¿¶¨Î»²ÎÊýµÄ²»Í¬·½·¨¡£ ¹ØÓڴ˸üÉîÈëµÄ̽ÌÖ£¬¿ÉÒԲο¼Õâ¸öºÜºÃµÄ sh(1) ½Å±¾±à³ÌÊֲᡣÔÚÄãÍêÈ«Àí½âÕâЩ±í´ïʽµÄÒâÒå֮ǰÇ벻ҪʹÓÃËüÃÇ£¬ ÒòΪÎóÓÃËüÃǽ«¸ø½Å±¾ÒýÈëȱÏݺͲ»°²È«µÄ±×¶Ë¡£

×¢Òâ: ÏÖÔÚ run_rc_command ¿ÉÄÜÓиöȱÏÝ£¬ Ëü½«Ó°Ïì±£³Ö²ÎÊýÖ®¼äµÄÔ­±¾±ß½ç¡£Ò²¾ÍÊÇ£¬ ´øÓÐǶÈë¿Õ°×µÄ²ÎÊý¿ÉÄܲ»»á±»ÕýÈ·´¦Àí¡£¸ÃȱÏÝÊÇÓÉÓÚ¶Ô $* µÄÎóÓá£

±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.