2

我一直在尝试在 freebsd 启动时运行一个 shell 脚本。我已阅读 stackoverflow 中的所有类似问题并尝试过。但没有任何工作。这是我尝试过的示例代码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

4

2 回答 2

0

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

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

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

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

此外,/usr/local/etc/rc.d在安装 rc 文件的第一个端口安装之前,它不会存在。

于 2013-08-15T16:40:51.170 回答
0

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

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

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

最后用参数启动它start- 这不会启动服务/脚本,除非dummy_enable/etc/rc.conf(or /etc/rc.conf.local, or /etc/defaults/rc.conf)中设置

# /etc/rc.d/dummy start
Nothing started.
于 2013-06-02T15:31:48.383 回答