Node.js 停止nodejs进程是否由npm启动?

Node.js 停止nodejs进程是否由npm启动?,node.js,npm,Node.js,Npm,我正在创建一些脚本,通过持续集成来部署基于node.js的应用程序,我很难找到停止节点进程的正确方法 我通过start-dev.sh脚本启动应用程序: #!/bin/sh scripts_dir=`dirname $0` cd "${scripts_dir}/".. npm start & echo $! > app.pid 然后我希望通过以下方式阻止它: #!/bin/sh scripts_dir=`dirname $0` cd "${scripts_dir}/"..

我正在创建一些脚本,通过持续集成来部署基于node.js的应用程序,我很难找到停止节点进程的正确方法

我通过
start-dev.sh
脚本启动应用程序:

#!/bin/sh

scripts_dir=`dirname $0`
cd "${scripts_dir}/"..

npm start &
echo $! > app.pid
然后我希望通过以下方式阻止它:

#!/bin/sh

scripts_dir=`dirname $0`
cd "${scripts_dir}/"..

echo killing pid `cat app.pid`
kill -9 `cat app.pid`
我发现的问题是,
npm
此时不再运行,因此
pid
对于停止进程树没有用处。在这一点上,我能想到的唯一解决办法是完全跳过
npm
启动,直接调用
node


有人能提出一个适当的方法来处理这个问题吗?在这种情况下,上述
npm
是否是启动一个好方法?

只需使用主管示例conf如下

[program:long_script]
command=/usr/bin/node SOURCE_FOLDER/EXECUTABLE_JAVASCRIPT_FILE.js 
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log
在哪里

SOURCE_文件夹是项目的文件夹

可执行文件\u JAVASCRIPT\u文件要运行的文件

你可以查看帖子

可以为你做流程管理的事情

forever start app.js
forever stop app.js

尽量避免依赖开发之外的
npm start
,它只是在您和节点之间添加了一个附加层

是否可以通过非root用户重新启动主管作业。我的应用程序以特定于应用程序的用户身份运行。我们将不允许对部署进行根访问。