Node.js 停止nodejs进程是否由npm启动?
我正在创建一些脚本,通过持续集成来部署基于node.js的应用程序,我很难找到停止节点进程的正确方法 我通过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}/"..
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用户重新启动主管作业。我的应用程序以特定于应用程序的用户身份运行。我们将不允许对部署进行根访问。