在.sh脚本中永久使用“ npm start”作为命令

Rik*_*ard 2 ubuntu node.js forever

我有一个.sh脚本/etc/init-d/forever来配置如何forever启动和停止Node.js应用程序。

我想从forever命令开始npm start,所以我可以从那里触发我的脚本。这可能吗?

我试过了

sudo forever start --sourceDir /home/my-app -c npm start 
Run Code Online (Sandbox Code Playgroud)

但是它解释错了...

信息:永久处理文件:启动
错误:无法永久启动
错误:脚本/ root / start不存在。

到目前为止,我的脚本是:

NAME=nodeapp
SOUREC_DIR=/home/nodeapp        
COMMAND="npm start"
SOURCE_NAME=index.js
USER=root
NODE_ENVIROMENT=production

pidfile=/var/run/$NAME.pid
logfile=/var/log/$NAME.log
forever=forever

start() {
    export NODE_ENV=$NODE_ENVIROMENT
    echo "Starting $NAME node instance : "

    touch $logfile
    chown $USER $logfile

    touch $pidfile
    chown $USER $pidfile

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
    sudo -H -u $USER $forever start --pidFile $pidfile -l $logfile -a --sourceDir $SOUREC_DIR -c $COMMAND

    RETVAL=$?
}
Run Code Online (Sandbox Code Playgroud)

Rik*_*ard 5

所以我找到了答案。
两者--sourceDir"npm start"命令后的path参数(如有必要):

sudo forever --sourceDir /home/my-app -c "npm start" /
Run Code Online (Sandbox Code Playgroud)


Kri*_* PC 5

以下命令在后台运行永久命令并永久登录。

forever start -c "ng serve " ./
Run Code Online (Sandbox Code Playgroud)

请注意 ./

然后你可以

forever list
Run Code Online (Sandbox Code Playgroud)

并且能够看到日志文件的状态和位置。

info:    Forever processes running
data:        uid  command                                                            script forever pid   id logfile                          uptime        
data:    [0] wOj1 ng serve                                              29500   24978    /home/user/.forever/wOj1.log 0:0:25:23.326 
Run Code Online (Sandbox Code Playgroud)