2

我已经在 FreeNAS 9.10 的 JAIL 中安装了一个 npm 包/脚本。(基于 FreeBSD)如果我在安装脚本的目录中运行“npm start”,它会完美运行。

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

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

谢谢

4

2 回答 2

2

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

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

请参阅此处的手册页

于 2016-04-16T17:43:18.960 回答
2

不知道 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"

不要忘记将SERVICENAMEUSERNAMEPROGDIR 替换为您的值,并添加

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

到你的入口 js 文件。

于 2020-10-08T08:39:36.863 回答