Freebsd

FreeBSD rc.d 腳本不作為守護程序啟動

  • September 12, 2017

我在位置開發了以下腳本/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"

我還在我的/etc/rc.conf文件中啟用了它:

bluesky_enable="YES"

當我重新啟動伺服器時,腳本工作正常並在埠 80 啟動 HTTP 伺服器。唯一的問題是腳本不會被發送到後台或不會作為守護程序啟動。我想知道如何在啟動時在後台執行腳本或作為守護程序執行腳本。

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"

在 FreeBSD 終端上,我安裝了PM2

$ sudo npm install pm2 -g

然後rc.d根據以下修改腳本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"

現在,HTTP 伺服器在引導時作為守護程序啟動。不過,我真的很喜歡@RichardSmith 建議的 FreeBSD守護程序 (8)的想法,我將繼續努力。

引用自:https://serverfault.com/questions/873185