下面的脚本是用来在每次系统启动时发出一个信息:
#!/bin/sh . /etc/rc.subr name="dummy" start_cmd="${name}_start" stop_cmd=":" dummy_start() { echo "Nothing started." } load_rc_config $name run_rc_command "$1"
需要注意的是:
# /etc/rc.d/dummy start
注意: 为了使 rc.d 框架正确地管理脚本, 它的脚本需要用 sh(1) 语言编写。 如果你的某个服务或 port 套件使用了二进制控制程序或是用其它语言编写的例程, 请将其组件安装到 /usr/sbin(相对于系统) 或 /usr/local/sbin(相对于ports), 然后从合适的 rc.d 目录的某个 sh(1) 脚本调用它。
提示: 如果你想知道为什么 rc.d 脚本必须用 sh(1) 语言编写的细节,先看下 /etc/rc 是如何依靠
run_rc_script
调用它们, 然后再去学习 /etc/rc.subr 下run_rc_script
的相关实现。
一个 rc.d 脚本在其调用 rc.subr(8) 函数之前必须先 “source” /etc/rc.subr(用 “.”将其包含进去), 而使 sh(1) 程序有机会来获悉那些函数。 首选风格是在脚本的最开始 source /etc/rc.subr 文件。
注意: 某些有用的与联网有关的函数由另一个被包含进来的文件提供, /etc/network.subr 文件。
现在是时候来为我们的脚本一次性选择一个独一无二的名字了。 在编写这个脚本的时我们将在许多地方用到它。在开始之前, 我们来给脚本文件也取个相同的名字。
start
, stop
,以及其它的 rc.d
脚本参数都是这样被处理的。方法是存储在一个以 argument_cmd 形式命名的变量中的 sh(1) 表达式,该 argument
对应着脚本命令行中所特别指定的参数。我们稍后将看到 rc.subr(8)
是如何为标准参数提供默认方法的。注意: 为了让 rc.d 中的代码更加统一, 常见的是在任何适合的地方都使用 ${name} 形式。 这样一来,可以轻松地将一些代码从一个脚本拷贝到另一个中使用。
重要: 强烈推荐给我们脚本中所定义的所有函数名都添加类似 ${name} 这样的前缀,以使它们永远不会和 rc.subr(8) 或其它公用包含文件中的函数冲突。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.