O script rbs.d do FreeBSD não inicia como um daemon

2

Eu desenvolvi o seguinte script no local /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"

Eu também o habilitei no meu arquivo /etc/rc.conf :

bluesky_enable="YES"

Quando eu reinicio o servidor, o script funciona bem e inicia o servidor HTTP na porta 80. O único problema é que o script não será enviado para o segundo plano ou não será iniciado como um daemon. Gostaria de saber como posso executar o script no momento da inicialização no plano de fundo ou como um daemon .

    
por user4838962 12.09.2017 / 07:24

2 respostas

4

O próprio script RC não se destina a daemonização, mas espera-se que ele inicie e interrompa o daemon.

Se o seu serviço não tiver uma opção para iniciar como um daemon, você pode usar o daemon (8) para gerenciar essa parte.

Um exemplo:

#!/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"
    
por 12.09.2017 / 15:35
0

No terminal do FreeBSD eu instalei PM2 :

$ sudo npm install pm2 -g

e, em seguida, modificou o script rc.d de acordo com pm2 :

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

    ### Start server with PM2 ###
    /usr/local/bin/pm2 start /usr/home/ict/Documents/bluesky/server.js
    echo "$bluesky_msg"
}

run_rc_command "$1"

Agora, o servidor HTTP é iniciado como um daemon no momento da inicialização. No entanto, eu realmente gosto da idéia do daemon do FreeBSD sugerido por @RichardSmith, vai trabalhar nisso.

    
por 12.09.2017 / 16:12