2013-06-02 95 views
2

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

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

您在哪个目录中存储了您的“虚拟”文件? – LtWorf

+0

@LtWorf:我在/etc/rc.d/文件夹中放置了虚拟文件 – Kranthi

+0

然后在重启时它被移除并没有任何意义... – LtWorf

回答

0

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

打电话给你的脚本参数rcvar得到启用的状态:

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

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

# /etc/rc.d/dummy start 
Nothing started. 
+0

我遵循上述过程。它只在我通过'/etc/rc.d/dummy start'命令手动运行脚本时才起作用。但我的脚本应该在启动时启动,当我重新启动虚拟文件正在被删除,所以脚本也没有运行。为什么? – Kranthi

+1

@Kranthi虚拟文件(/etc/rc.d/dummy?)被删除?我很确定,在系统启动过程中,标准安装中的任何内容都不会从/etc/rc.d中删除任何内容。你有任何其他自定义启动脚本或本地修改? – sstn

+0

@Kranthi顺便说一句:'/ usr/local/etc/rc.d'会是一个更好的自定义脚本。 '/ etc/rc.d'用于基本系统。 – sstn

-1

一种可能的解释是,系统的rcorder(8)表示:

在每个文件中,必须出现一个包含一系列“需求”,“提供”, “之前”和“关键字”行的块。

虽然其他地方我记得,如果一个文件没有“规定”,“提供”或“之前”,然后将它随意放置在依赖顺序。而且,可能是第一次执行$ early_late_divider和第二次执行$ early_late_divider之后的任意位置不同。

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

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