我一直在尝试在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
答案 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
才会出现。