aboutsummaryrefslogtreecommitdiff
path: root/en_US.ISO8859-1/articles/rc-scripting/article.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'en_US.ISO8859-1/articles/rc-scripting/article.sgml')
-rw-r--r--en_US.ISO8859-1/articles/rc-scripting/article.sgml104
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 &gt; /dev/null 2&gt;&amp;1"<co id="rcng-daemon-adv-args">
+command_args="mock arguments &gt; /dev/null 2&gt;&amp;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 &amp;&amp; \
+ ! /etc/rc.d/frotz forcestatus 1>/dev/null 2>&amp;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