【问题标题】:How can supervisord restart the npm start command successfully?supervisord 如何成功重启 npm start 命令?
【发布时间】:2018-03-29 17:43:38
【问题描述】:

我已经通过 supervisord 启动了“节点启动”。

我的问题是 在 supervisord 停止/重新启动将导致 node app.js 进程保留而不会被杀死

在这种情况下,supervisord 怎样才能成功重启 npm start 命令呢?

supervisord.conf

[supervisord]
nodaemon=true

[program:node]
command=npm start 
directory=/xx
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
user=root
autostart=true
autorestart=true
redirect_stderr=true
exitcodes=1

package.json

{
  "name": "xx",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "xxx
  },
  "devDependencies": {
    "nodemon": "^1.11.0"
  },
  "description": ""
}

【问题讨论】:

    标签: node.js supervisord


    【解决方案1】:

    这对我有用:在 Supervisor 配置文件中将 npm start 更改为 node app.js

    为什么?

    我注意到使用npm start 会启动两个进程:

    $ ps aux | grep node
    ubuntu   19363  0.0  0.0   4508   708 ?        S    17:43   0:00 sh -c node index.js
    ubuntu   19364  1.3  5.2 1041288 52996 ?       Sl   17:43   0:00 node index.js
    

    在Supervisor中停止它只会停止父进程:

    $ sudo supervisorctl stop all
    my_worker: stopped
    $ ps aux | grep node
    ubuntu   19364  0.3  5.2 1041288 52996 ?       Sl   17:43   0:00 node index.js
    

    所以将node index.js 直接放在主管配置中解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多