diff options
Diffstat (limited to 'en_US.ISO8859-1/articles/rc-scripting/article.sgml')
-rw-r--r-- | en_US.ISO8859-1/articles/rc-scripting/article.sgml | 104 |
1 files changed, 54 insertions, 50 deletions
diff --git a/en_US.ISO8859-1/articles/rc-scripting/article.sgml b/en_US.ISO8859-1/articles/rc-scripting/article.sgml index 001f48309a..d763a65c2a 100644 --- a/en_US.ISO8859-1/articles/rc-scripting/article.sgml +++ b/en_US.ISO8859-1/articles/rc-scripting/article.sgml @@ -1,9 +1,11 @@ -<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ -<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN"> -%articles.ent; +<?xml version="1.0" encoding="ISO8859-1" standalone="no"?> +<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN" + "../../../share/sgml/freebsd42.dtd" [ +<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//EN" "../../share/sgml/entities.ent"> +%entities; ]> -<article> +<article lang='en'> <articleinfo> <title>Practical rc.d scripting in BSD</title> @@ -25,14 +27,16 @@ <holder>The FreeBSD Project</holder> </copyright> - <pubdate>$FreeBSD$</pubdate> - <legalnotice id="trademarks" role="trademarks"> &tm-attrib.freebsd; &tm-attrib.netbsd; &tm-attrib.general; </legalnotice> + <pubdate>$FreeBSD$</pubdate> + + <releaseinfo>$FreeBSD$</releaseinfo> + <abstract> <para>Beginners may find it difficult to relate the facts from the formal documentation on the BSD @@ -199,21 +203,21 @@ system boots up:</para> <informalexample> - <programlisting>#!/bin/sh<co id="rcng-dummy-shebang"> + <programlisting>#!/bin/sh<co id="rcng-dummy-shebang"/> -. /etc/rc.subr<co id="rcng-dummy-include"> +. /etc/rc.subr<co id="rcng-dummy-include"/> -name="dummy"<co id="rcng-dummy-name"> -start_cmd="${name}_start"<co id="rcng-dummy-startcmd"> -stop_cmd=":"<co id="rcng-dummy-stopcmd"> +name="dummy"<co id="rcng-dummy-name"/> +start_cmd="${name}_start"<co id="rcng-dummy-startcmd"/> +stop_cmd=":"<co id="rcng-dummy-stopcmd"/> -dummy_start()<co id="rcng-dummy-startfn"> +dummy_start()<co id="rcng-dummy-startfn"/> { echo "Nothing started." } -load_rc_config $name<co id="rcng-dummy-loadconfig"> -run_rc_command "$1"<co id="rcng-dummy-runcommand"></programlisting> +load_rc_config $name<co id="rcng-dummy-loadconfig"/> +run_rc_command "$1"<co id="rcng-dummy-runcommand"/></programlisting> </informalexample> <para>Things to note are:</para> @@ -282,7 +286,7 @@ run_rc_command "$1"<co id="rcng-dummy-runcommand"></programlisting> </callout> <callout arearefs="rcng-dummy-name"> - <para><anchor id="name-var">The mandatory variable + <para><anchor id="name-var"/>The mandatory variable <envar>name</envar> specifies the name of our script. It is required by &man.rc.subr.8;. That is, each <filename>rc.d</filename> script <emphasis>must</emphasis> @@ -390,18 +394,18 @@ run_rc_command "$1"<co id="rcng-dummy-runcommand"></programlisting> . /etc/rc.subr name=dummy -rcvar=dummy_enable<co id="rcng-confdummy-rcvar"> +rcvar=dummy_enable<co id="rcng-confdummy-rcvar"/> start_cmd="${name}_start" stop_cmd=":" -load_rc_config $name<co id="rcng-confdummy-loadconfig"> -eval "${rcvar}=\${${rcvar}:-'NO'}"<co id="rcng-confdummy-enable"> -dummy_msg=${dummy_msg:-"Nothing started."}<co id="rcng-confdummy-opt"> +load_rc_config $name<co id="rcng-confdummy-loadconfig"/> +eval "${rcvar}=\${${rcvar}:-'NO'}"<co id="rcng-confdummy-enable"/> +dummy_msg=${dummy_msg:-"Nothing started."}<co id="rcng-confdummy-opt"/> dummy_start() { - echo "$dummy_msg"<co id="rcng-confdummy-msg"> + echo "$dummy_msg"<co id="rcng-confdummy-msg"/> } run_rc_command "$1"</programlisting> @@ -531,7 +535,7 @@ run_rc_command "$1"</programlisting> name=mumbled rcvar=mumbled_enable -command="/usr/sbin/${name}"<co id="rcng-daemon-basic-cmd"> +command="/usr/sbin/${name}"<co id="rcng-daemon-basic-cmd"/> load_rc_config $name run_rc_command "$1"</programlisting> @@ -625,26 +629,26 @@ name=mumbled rcvar=mumbled_enable command="/usr/sbin/${name}" -command_args="mock arguments > /dev/null 2>&1"<co id="rcng-daemon-adv-args"> +command_args="mock arguments > /dev/null 2>&1"<co id="rcng-daemon-adv-args"/> -pidfile="/var/run/${name}.pid"<co id="rcng-daemon-adv-pid"> +pidfile="/var/run/${name}.pid"<co id="rcng-daemon-adv-pid"/> -required_files="/etc/${name}.conf /usr/share/misc/${name}.rules"<co id="rcng-daemon-adv-reqfiles"> +required_files="/etc/${name}.conf /usr/share/misc/${name}.rules"<co id="rcng-daemon-adv-reqfiles"/> -sig_reload="USR1"<co id="rcng-daemon-adv-sig"> +sig_reload="USR1"<co id="rcng-daemon-adv-sig"/> -start_precmd="${name}_prestart"<co id="rcng-daemon-adv-precmd"> -stop_postcmd="echo Bye-bye"<co id="rcng-daemon-adv-postcmd"> +start_precmd="${name}_prestart"<co id="rcng-daemon-adv-precmd"/> +stop_postcmd="echo Bye-bye"<co id="rcng-daemon-adv-postcmd"/> -extra_commands="reload plugh xyzzy"<co id="rcng-daemon-adv-extra"> +extra_commands="reload plugh xyzzy"<co id="rcng-daemon-adv-extra"/> -plugh_cmd="mumbled_plugh"<co id="rcng-daemon-adv-methods"> +plugh_cmd="mumbled_plugh"<co id="rcng-daemon-adv-methods"/> xyzzy_cmd="echo 'Nothing happens.'" mumbled_prestart() { - if checkyesno mumbled_smart; then<co id="rcng-daemon-adv-yn"> - rc_flags="-o smart ${rc_flags}"<co id="rcng-daemon-adv-rcflags"> + if checkyesno mumbled_smart; then<co id="rcng-daemon-adv-yn"/> + rc_flags="-o smart ${rc_flags}"<co id="rcng-daemon-adv-rcflags"/> fi case "$mumbled_mode" in foo) @@ -654,15 +658,15 @@ mumbled_prestart() rc_flags="-baz ${rc_flags}" ;; *) - warn "Invalid value for mumbled_mode"<co id="rcng-daemon-adv-warn"> - return 1<co id="rcng-daemon-adv-preret"> + warn "Invalid value for mumbled_mode"<co id="rcng-daemon-adv-warn"/> + return 1<co id="rcng-daemon-adv-preret"/> ;; esac - run_rc_command xyzzy<co id="rcng-daemon-adv-run"> + run_rc_command xyzzy<co id="rcng-daemon-adv-run"/> return 0 } -mumbled_plugh()<co id="rcng-daemon-adv-plugh"> +mumbled_plugh()<co id="rcng-daemon-adv-plugh"/> { echo 'A hollow voice says "plugh".' } @@ -886,7 +890,7 @@ fi</programlisting> </callout> <callout arearefs="rcng-daemon-adv-rcflags"> - <para><anchor id="rc-flags">We can affect the flags to be + <para><anchor id="rc-flags"/>We can affect the flags to be passed to <envar>$command</envar> by modifying <envar>rc_flags</envar> in <envar>$start_precmd</envar>.</para> </callout> @@ -999,10 +1003,10 @@ fi</programlisting> <informalexample> <programlisting>#!/bin/sh -# PROVIDE: mumbled oldmumble <co id="rcng-hookup-provide"> -# REQUIRE: DAEMON cleanvar frotz<co id="rcng-hookup-require"> -# BEFORE: LOGIN<co id="rcng-hookup-before"> -# KEYWORD: nojail shutdown<co id="rcng-hookup-keyword"> +# PROVIDE: mumbled oldmumble <co id="rcng-hookup-provide"/> +# REQUIRE: DAEMON cleanvar frotz<co id="rcng-hookup-require"/> +# BEFORE: LOGIN<co id="rcng-hookup-before"/> +# KEYWORD: nojail shutdown<co id="rcng-hookup-keyword"/> . /etc/rc.subr @@ -1014,9 +1018,9 @@ start_precmd="${name}_prestart" mumbled_prestart() { - if ! checkyesno frotz_enable && \ - ! /etc/rc.d/frotz forcestatus 1>/dev/null 2>&1; then - force_depend frotz || return 1<co id="rcng-hookup-force"> + if ! checkyesno frotz_enable && \ + ! /etc/rc.d/frotz forcestatus 1>/dev/null 2>&1; then + force_depend frotz || return 1<co id="rcng-hookup-force"/> fi return 0 } @@ -1090,7 +1094,7 @@ run_rc_command "$1"</programlisting> </callout> <callout arearefs="rcng-hookup-keyword"> - <para><anchor id="keywords">As we remember from the above text, + <para><anchor id="keywords"/>As we remember from the above text, &man.rcorder.8; keywords can be used to select or leave out some scripts. Namely any &man.rcorder.8; consumer can specify through <option>-k</option> and <option>-s</option> @@ -1177,7 +1181,7 @@ run_rc_command "$1"</programlisting> </callout> <callout arearefs="rcng-hookup-force"> - <para><anchor id="forcedep">To begin with, + <para><anchor id="forcedep"/>To begin with, <function>force_depend</function> should be used with much care. It is generally better to revise the hierarchy of configuration variables for your <filename>rc.d</filename> @@ -1265,7 +1269,7 @@ extra_commands="kiss" dummy_start() { - if [ $# -gt 0 ]; then<co id="rcng-args-start"> + if [ $# -gt 0 ]; then<co id="rcng-args-start"/> echo "Greeting message: $*" else echo "Nothing started." @@ -1275,7 +1279,7 @@ dummy_start() dummy_kiss() { echo -n "A ghost gives you a kiss" - if [ $# -gt 0 ]; then<co id="rcng-args-kiss"> + if [ $# -gt 0 ]; then<co id="rcng-args-kiss"/> echo -n " and whispers: $*" fi case "$*" in @@ -1289,7 +1293,7 @@ dummy_kiss() } load_rc_config $name -run_rc_command "$@"<co id="rcng-args-all"></programlisting> +run_rc_command "$@"<co id="rcng-args-all"/></programlisting> </informalexample> <para>What essential changes can we notice in the script?</para> @@ -1354,7 +1358,7 @@ A ghost gives you a kiss and whispers: Once I was Etaoin Shrdlu...</screen> <sect1 id="rcng-furthur"> <title>Further reading</title> - <para><anchor id="lukem"><ulink + <para><anchor id="lukem"/><ulink url="http://www.mewburn.net/luke/papers/rc.d.pdf">The original article by Luke Mewburn</ulink> offers a general overview of <filename>rc.d</filename> and detailed rationale for its @@ -1362,7 +1366,7 @@ A ghost gives you a kiss and whispers: Once I was Etaoin Shrdlu...</screen> <filename>rc.d</filename> framework and its place in a modern BSD operating system.</para> - <para><anchor id="manpages">The manual pages &man.rc.8;, + <para><anchor id="manpages"/>The manual pages &man.rc.8;, &man.rc.subr.8;, and &man.rcorder.8; document the <filename>rc.d</filename> components in great detail. You cannot fully use the <filename>rc.d</filename> power without |