在 .sh 脚本中使用 "npm start" 作为永远的命令

Use "npm start" as command to forever in .sh script

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

我想用命令 npm start 启动 forever,这样我就可以从那里触发我的脚本。这可能吗?

我试过了

sudo forever start --sourceDir /home/my-app -c npm start 

但它的解释有误...

info: Forever processing file: start
error: Cannot start forever
error: script /root/start does not exist.

到目前为止我的脚本是:

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=$?
}

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

sudo forever --sourceDir /home/my-app -c "npm start" /

下面的命令运行永远在后台运行的永久命令。

forever start -c "ng serve " ./

注意 ./

那你可以

forever list

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

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