使一个npm脚本在FreeBSD Jail中自动启动

时间:2016-04-16 16:49:32

标签: node.js shell freebsd rc jail

我在FreeNAS 9.10上的JAIL中安装了npm包/脚本。 (基于FreeBSD) 如果我运行" npm start"在安装脚本的目录中。

但是,我需要在监狱启动时自动启动它。我现在不知道这样做。我需要创建一个rc脚本吗?

基本上我需要做的就是给" npm start"在启动时的正确目录中。我该怎么做?

感谢

2 个答案:

答案 0 :(得分:2)

是的,您可以在jail中放置一个rc脚本,并使用jail的/etc/rc.conf文件启用它。

但是,对于快速而肮脏的解决方案,您可以创建一个/etc/rc.local脚本(也在jail的环境中)并将启动命令放在那里。

请参阅manual page here

答案 1 :(得分:1)

不知道有关npm start的信息,但是对于node.js,我做了这样的RC srcipt:

#!/bin/sh

# $FreeBSD: 340872 2014-01-24 00:14:07Z mat $
#
# PROVIDE: SERVICENAME
# REQUIRE: NETWORKING
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable SERVICENAME:
#
# SERVICENAME_enable="YES"
#

. /etc/rc.subr

name="SERVICENAME"
rcvar=SERVICENAME_enable
pidfile=${SERVICENAME_pidfile:-"/var/run/SERVICENAME.pid"}
command="/usr/sbin/daemon"
#command_args="-r -u USERNAME -P /var/run/SERVICENAME.pid /usr/local/bin/node /home/USERNAME/PROGDIR" # cjayho: restart if crashed
command_args="-u USERNAME -P /var/run/SERVICENAME.pid /usr/local/bin/node /home/USERNAME/PROGDIR"

load_rc_config $name
: ${SERVICENAME_enable:="NO"}

run_rc_command "$1"

将此文件命名为 SERVICENAME ,然后放入 /usr/local/etc/rc.d

以root身份启用自动启动运行命令:

sysrc SERVICENAME_enable="YES"

不要忘记将 SERVICENAME USERNAME PROGDIR 替换为您的值,然后添加

process.chdir('/home/USERNAME/PROGDIR')

进入您的入口js文件。