【问题标题】:startup script in freebsd is not runningfreebsd 中的启动脚本没有运行
【发布时间】:2013-06-02 07:09:10
【问题描述】:

我一直在尝试在 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

【问题讨论】:

  • 您将“虚拟”文件存储在哪个目录中?
  • @LtWorf : 我将 dummy 放在 /etc/rc.d/ 文件夹中
  • 那么它在重新启动时被删除并没有任何意义......

标签: shell freebsd


【解决方案1】:

您需要将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.

【讨论】:

  • 我按照上面的程序。只有当我通过/etc/rc.d/dummy start 命令手动运行脚本时它才有效。但是我的脚本应该在启动时启动,当我重新启动时,虚拟文件​​被删除,所以脚本也没有运行。为什么?
  • @Kranthi 虚拟文件 (/etc/rc.d/dummy?) 被删除了吗?我很确定标准安装中的任何内容都不会在系统引导期间从 /etc/rc.d 中删除任何内容。您还有其他自定义启动脚本或本地修改吗?
  • @Kranthi 顺便说一句:/usr/local/etc/rc.d 将是自定义脚本的更好位置。 /etc/rc.d 用于基本系统。
  • 我的系统中没有/usr/local/etc/rc.d目录。
  • @Kranthi 它应该在那里。你在什么系统上运行?你的系统有问题吗?从包/端口安装的软件的所有启动脚本都安装在/usr/local/etc/rc.d
【解决方案2】:

一种可能的解释是 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 文件的端口之前不会存在。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2017-03-16
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2016-05-23
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多