停止nodejs进程从npm开始?

时间:2017-02-17 05:21:50

标签: 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}/"..

echo killing pid `cat app.pid`
kill -9 `cat app.pid`

我发现的问题是npm此时不再运行,因此pid对于停止进程树没有用。目前我能想到的唯一解决方法是完全跳过npm启动,只需直接拨打node即可?

有人能建议一个合适的方法来解决这个问题吗?在这种情况下,是否要在npm之前推出一个好的方法?

2 个答案:

答案 0 :(得分:1)

Forever可以为您完成流程管理。

forever start app.js
forever stop app.js

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

答案 1 :(得分:0)

只需使用主管示例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_FOLDER是项目的文件夹

EXECUTABLE_JAVASCRIPT_FILE要运行的文件

您可以查看帖子here