freebsd中的启动脚本没有运行

时间:2013-06-02 07:09:11

标签: shell freebsd

我一直在尝试在freebsd的启动时运行shell脚本。我已经阅读了stackoverflow中的所有simmilar问题并尝试过。但没有任何工作。这是我尝试的示例代码dummy

#!/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"

已保存,名称为dummy。 权限为-r-xr-xr-x。 在rc.conf文件中生成dummy_enable="YES"

问题是,当我重新启动系统进行测试时,dummy文件不存在。所以脚本没有执行。还需要做什么来运行我的虚拟脚本。

SRC:http://www.freebsd.org/doc/en/articles/rc-scripting/article.html#rc-flags

2 个答案:

答案 0 :(得分:0)

您需要在脚本中添加rcvar="dummy_enable"。至少对于FreeBSD 9.1。

使用参数rcvar调用脚本以获取启用状态:

# /etc/rc.d/dummy rcvar
# dummy
#
dummy_enable="YES"
#   (default: "")

最后使用参数start启动它 - 除非在dummy_enable(或/etc/rc.conf或{{1}中设置/etc/rc.conf.local,否则无法启动服务/脚本}})

/etc/defaults/rc.conf

答案 1 :(得分:-1)

一个可能的解释是 rcorder(8)说:

  

在每个文件中,包含一系列“REQUIRE”,“PROVIDE”的块,   必须出现“BEFORE”和“KEYWORD”行。

虽然在其他地方我记得如果文件没有“REQUIRE”,“PROVIDE”或“BEFORE”,那么它将被任意放置在依赖性排序中。而且,可能是第一次运行$ early_late_divider和$ early_late_divider之后的第二次运行之间的任意位置不同。

OTOH,这是一个股票FreeBSD,还是一些变种?我记得读过FreeNAS将其配置保存在其他地方并在每次启动时重新创建其系统文件。并且,很可能/ etc实际上是在ramdisk上。

此外,在安装了第一个安装rc文件的端口之前,/usr/local/etc/rc.d才会出现。