¡¡¡¡ÎÒÃÇÀ´¸øÖ®Ç°µÄ ¡°¹Ç¼Ü¡± ½Å±¾¼Óµã ¡°ÑªÈ⡱£¬²¢ÈÃËü¸ü¸´ÔÓ¸ü¸»ÓÐÌØÐÔ°É¡£ ĬÈϵķ½·¨ÒÑÄܹ»ÎªÎÒÃÇ×öºÜºÃµÄ¹¤×÷ÁË£¬ µ«ÊÇÎÒÃÇ¿ÉÄÜ»áÐèÒªËüÃÇһЩ·½ÃæµÄµ÷Õû¡£ ÏÖÔÚÎÒÃǽ«Ñ§Ï°ÈçºÎµ÷ÕûĬÈÏ·½·¨À´·ûºÏÎÒÃǵÄÐèÒª¡£
#!/bin/sh . /etc/rc.subr name="mumbled" rcvar=`set_rcvar` command="/usr/sbin/${name}" command_args="mock arguments > /dev/null 2>&1"pidfile="/var/run/${name}.pid"
required_files="/etc/${name}.conf /usr/share/misc/${name}.rules"
sig_reload="USR1"
start_precmd="${name}_prestart"
stop_postcmd="echo Bye-bye"
extra_commands="reload plugh xyzzy"
plugh_cmd="mumbled_plugh"
xyzzy_cmd="echo 'Nothing happens.'" mumbled_prestart() { if checkyesno mumbled_smart; then
rc_flags="-o smart ${rc_flags}"
fi case "$mumbled_mode" in foo) rc_flags="-frotz ${rc_flags}" ;; bar) rc_flags="-baz ${rc_flags}" ;; *) warn "Invalid value for mumbled_mode"
return 1
;; esac run_rc_command xyzzy
return 0 } mumbled_plugh()
{ echo 'A hollow voice says "plugh".' } load_rc_config $name run_rc_command "$1"
×¢Òâ: ÓÀÔ¶²»Òª ÔÚ command_args °üº¬ÆÆÕÛºÅÑ¡Ï ÀàËÆ
-X
»ò--foo
ÕâÑùµÄ¡£command_args µÄÄÚÈݽ«³öÏÖÔÚ×îÖÕÃüÁîÐеÄĩ⣬Òò´ËËüÃÇ¿ÉÄÜÊǽô½ÓÔÚ ${name}_flags ÖÐËùÁгöµÄ²ÎÊýºóÃæ£» µ«´ó¶àµÄÃüÁ²»ÄÜʶ±ð³öÆÕͨ²ÎÊýºóµÄÆÆÕÛºÅÑ¡Ïî¡£ ¸üºÃµÄ´«µÝ¸½¼Ó¸ø $command µÄÑ¡ÏîµÄ·½Ê½ÊÇÌí¼ÓËüÃǵ½ ${name}_flags µÄÆðʼ´¦¡£ÁíÒ»ÖÖ·½·¨ÊÇÏñºóÎÄËùʾµÄÄÇÑùÀ´ÐÞ¸Ä rc_flags¡£
×¢Òâ: ÊÂʵÉÏ£¬rc.subr(8) ÔÚÆô¶¯Ò»¸öÊØ»¤½ø³Ìǰ»¹»áʹÓà pidfile ½ø³ÌÎļþÀ´²é¿´ËüÊÇ·ñÒѾÔÚÔËÐС£Ê¹ÓÃÁË
faststart
²ÎÊý¿ÉÒÔÌø¹ýÕâ¸ö¼ì²é²½Öè¡£
×¢Òâ: À´×Ô rc.subr(8) µÄĬÈÏ·½·¨£¬Í¨¹ýʹÓÃ
forcestart
×÷Ϊ½Å±¾µÄ²ÎÊý£¬ ¿ÉÒÔÇ¿ÖÆÐÔµØÌø¹ýÔ¤ÏÈÐèÒªµÄ¼ì²é¡£
SIGHUP
Ðźš£ ÁíÒ»¸öÐźÅÊÇ·¢Ë͸øÊØ»¤½ø³ÌÒÔÍ£Ö¹¸Ã½ø³Ì£»Ä¬ÈÏÇé¿öÏÂÊÇ
SIGTERM
Ðźţ¬µ«ÕâÊÇ¿ÉÒÔͨ¹ýÉèÖà sig_stop À´½øÐÐÊʵ±¸ü¸ÄµÄ¡£×¢Òâ: ÐźÅÃû³ÆÓ¦µ±ÒÔ²»°üº¬ SIG ǰ׺µÄÐÎʽָ¶¨¸ø rc.subr(8)£¬¾ÍÈç·¶ÀýÖÐËùʾµÄÄÇÑù¡£ FreeBSD °æ±¾µÄ kill(1) ³ÌÐòÄܹ»Ê¶±ð³ö SIG ǰ׺£¬²»¹ýÆäËüϵͳ°æ±¾µÄ¾Í²»Ò»¶¨ÁË¡£
×¢Òâ: Èç¹ûÎÒÃÇÐèÒªµÄ»°£¬ÓÃ×Ô¶¨ÒåµÄ argument_cmd ¸ÄдĬÈϵķ½·¨£¬²¢²»·Á°ÎÒÃÇÈÔȻʹÓà argument_precmd ºÍ argument_postcmd¡£ ÌØ±ðÊÇ£¬Ç°Õß±ãÓÚ¼ì²é×Ô¶¨ÒåµÄ·½·¨£¬ ÒÔ¼°Ö´ÐÐ×ÔÉíÃüÁî֮ǰËùÓöµ½¸üÑÏÃܵÄÌõ¼þ¡£ÓÚÊÇ£¬½« argument_precmd ºÍ argument_cmd Ò»ÆðʹÓã¬Ê¹ÎÒÃǺÏÀíµØ½«¼ì²é´Ó¶¯×÷ÖжÀÁ¢Á˳öÀ´¡£
±ðÍüÁËÄã¿ÉÒÔ½«ÈÎÒâµÄÓÐЧµÄ sh(1) ±í´ïʽ²åÈëµ½·½·¨ºÍÄ㶨ÒåµÄ pre- Óë post-commands ÃüÁîÖС£ Ôڴ󲿷ÖÇé¿öÏ£¬µ÷Óú¯Êýʹʵ¼ÊÈÎÎñÓкõķç¸ñ£¬ µ«Ç§Íò²»ÒªÈ÷ç¸ñÏÞÖÆÁËÄã¶ÔÆäÄ»ºóµ½µ×ÊÇÔõô»ØÊµÄ˼¿¼¡£
×¢Òâ:
reload
ÊǸöÌØ±ðµÄÃüÁî¡£Ò»·½Ã棬 ËüÓÐÒ»¸öÔÚ rc.subr(8) ÖÐÔ¤Öõķ½·¨¡£ÁíÒ»·½Ã棬reload
ÃüÁîĬÈÏÊDz»±»ÌṩµÄ¡£ ÀíÓÉÊDz¢·ÇËùÓеÄÊØ»¤½ø³Ì¶¼Ê¹ÓÃͬÑùµÄÖØÔØ·½·¨£¬ ²¢ÇÒÓÐÐ©ÊØ»¤½ø³Ì¸ù±¾Ã»ÓÐÈκζ«Î÷¿ÉÖØÔØµÄ¡£ËùÒÔÏÔ¶øÒ×¼û£¬ ÎÒÃÇÐèҪȥѯÎʶ¼ÌṩÁËÄÄЩµÄÄÚ½¨¹¦ÄÜ¡£ÎÒÃÇ¿ÉÒÔͨ¹ý extra_commands À´ÕâÑù×ö¡£ÎÒÃÇ´Ó
reload
µÄĬÈÏ·½·¨µÃµ½ÁËÊ²Ã´ÄØ£¿ ÊØ»¤½ø³Ì³£³£ÔÚÊÕµ½Ò»¸öÐźźóÖØÐÂÔØÈëËüÃǵÄÅäÖà ©¤©¤ Ò»°ãÀ´Ëµ£¬Ò²¾ÍÊÇSIGHUP
Ðźš£Òò´Ë rc.subr(8) ³¢ÊÔ·¢ËÍÒ»¸öÐźŸøÊØ»¤½ø³ÌÀ´ÖØÔØËü¡£ ¸ÃÐźÅÒ»°ãÔ¤ÉèΪSIGHUP
£¬ µ«ÊÇÈç¹û±ØÒªµÄ»°¿ÉÒÔͨ¹ý sig_reload ±äÁ¿À´×Ô¶¨ÒåËü¡£
plugh
ºÍ xyzzy
¡£ ÎÒÃÇ¿´µ½ËüÃÇÔÚ extra_commands
Öб»ÁгöÀ´ÁË£¬ ²¢ÇÒÏÖÔÚÊÇʱºò¸øËüÃÇÌṩ·½·¨ÁË¡£xyzzy
µÄ·½·¨ÊÇÄÚÁªµÄ¶ø plugh
µÄÊÇÒÔ mumbled_plugh
ÐÎʽÍê³ÉµÄº¯Êý¡£·Ç±ê×¼ÃüÁîÔÚÆô¶¯»òÍ£Ö¹µÄʱºò²»±»µ÷Óᣠͨ³£ËüÃÇÊÇΪÁËϵͳ¹ÜÀíÔ±µÄ·½±ã¡£ËüÃÇ»¹Äܱ»ÆäËüµÄ×ÓϵͳËùʹÓ㬠ÀýÈ磬devd(8)£¬Ç°ÌáÊÇ devd.conf(5) ÖÐÒѾָ¶¨ÁË¡£
È«²¿¿ÉÓÃÃüÁîµÄÁÐ±í£¬µ±½Å±¾²»¼Ó²ÎÊýµØµ÷ÓÃʱ£¬ÔÚ rc.subr(8) ´òÓ¡³öµÄʹÓ÷½·¨ÖÐÄܹ»ÕÒµ½¡£ÀýÈ磬 Õâ¾ÍÊǹ©Ñ§Ï°µÄ½Å±¾Ó÷¨µÄÄÚÈÝ£º
# /etc/rc.d/mumbled Usage: /etc/rc.d/mumbled [fast|force|one](start|stop|restart|rcvar|reload|plugh|xyzzy|status|poll)
checkyesno
¡£
ËüÒÔÒ»¸ö±äÁ¿Ãû×÷Ϊ²ÎÊý²¢·µ»ØÒ»¸öΪÁãµÄÍ˳öÖµ£¬ µ±ÇÒ½öµ±¸Ã±äÁ¿ÉèÖÃΪ YES£¬»ò TRUE£¬»ò ON£¬»ò
1£¬Çø·Ö´óСд£»·ñÔò·µ»ØÒ»¸ö·ÇÁãµÄÍ˳öÖµ¡£
ÔÚµÚ¶þÖÖÇé¿öÖУ¬º¯Êý²âÊÔ±äÁ¿µÄÉèÖÃΪ NO£¬ FALSE£¬OFF£¬»ò 0£¬Çø·Ö´óСд£»
Èç¹û±äÁ¿°üº¬±ðµÄÄÚÈݵϰËü´òÓ¡Ò»Ìõ¾¯¸æÐÅÏ¢£¬ÀýÈ磬À¬»ø¡£ÇÐ¼Ç¶Ô sh(1) ¶øÑÔÁãÖµÒâζ×ÅÕæ¶ø·ÇÁãÖµÒâζ׿١£
ÖØÒª:
checkyesno
º¯ÊýʹÓÃÒ»¸ö ±äÁ¿Ãû¡£²»ÒªÀ©´óº¬Ò彫±äÁ¿µÄ Öµ ´«µÝ¸øËü£» ·ñÔòËü²»»áÈçÄãÔ¤ÆÚÄÇÑùµÄ¹¤×÷¡£ÏÂÃæÊÇ
checkyesno
µÄºÏÀíʹÓ÷¶Î§£ºif checkyesno mumbled_enable; then foo fiÏà·´µØ£¬ÒÔÏÂÃæµÄ·½Ê½µ÷ÓÃ
checkyesno
ÊDz»»á¹¤×÷µÄ -- ÖÁÉÙÊDz»»áÈçÄãÔ¤ÆÚµÄÄÇÑù£ºif checkyesno "${mumbled_enable}"; then foo fi
debug
£¬info
£¬ warn
£¬ÒÔ¼° err
¡£
ºóÕßÒÔÖ¸¶¨µÄ´úÂëÖµÍ˳ö½Å±¾¡£×¢Òâ: È»¶ø£¬µ±¸øÒ»¸ö²ÎÊýʹÓà force ǰ׺µÄʱºò£¬Èç
forcestart
£¬rc.subr(8) »áÌý´ÓÃüÁîÐÐָʾ¶øºöÂÔÄÇЩÍ˳öÖµ×îºóÈÔÈ»µ÷ÓÃËùÓеÄÃüÁî¡£
±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.