FreeBSD rc.d 脚本没有作为守护进程启动

use*_*962 3 freebsd rc.d shell-scripting

我在位置开发了以下脚本 /usr/local/etc/rc.d/bluesky

#!/bin/sh

# PROVIDE: bluesky
# REQUIRE: mysql sshd
# BEFORE:  
# KEYWORD: 

. /etc/rc.subr

name="bluesky"
rcvar=bluesky_enable

start_cmd="${name}_start"
stop_cmd=":"

load_rc_config $name
: ${bluesky_enable:=no}
: ${bluesky_msg="HTTP server starts ..."}

bluesky_start(){
    echo $PATH
    export PATH=$PATH:/usr/local/bin/
    echo $PATH

    ### Run Node server ###
    /usr/local/bin/node /usr/home/ict/Documents/bluesky/server.js
    echo "$bluesky_msg"
}

run_rc_command "$1"
Run Code Online (Sandbox Code Playgroud)

我也在我的/etc/rc.conf文件中启用了它:

bluesky_enable="YES"
Run Code Online (Sandbox Code Playgroud)

当我重新启动服务器时,脚本工作正常并在端口 80 上启动 HTTP 服务器。唯一的问题是脚本不会被发送到后台或不会作为守护程序启动。我想知道如何在启动时在后台或作为守护程序运行脚本。

Ric*_*ith 6

RC 脚本本身并不用于守护进程,而是用于启动和停止守护进程。

如果您的服务没有作为守护进程启动的选项,您可以使用daemon(8)来管理该部分。

一个例子:

#!/bin/sh

# PROVIDE: ...
# REQUIRE: ...

. /etc/rc.subr

name="..."

rcvar=${name}_enable
pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
command_args="-c -f -P ${pidfile} -r /usr/local/libexec/${name}"
load_rc_config $name
run_rc_command "$1"
Run Code Online (Sandbox Code Playgroud)