【问题标题】:pm2 - How can I get/access process status programmatically?pm2 - 如何以编程方式获取/访问进程状态?
【发布时间】:2019-04-11 11:01:59
【问题描述】:

我正在尝试编写一个可以传达进程状态的简单服务器。我了解如何使用 pm2 包并将该数据作为响应发送。本质上,我正在尝试构建一个简单的 Web UI 来监控远程进程。

我遇到的问题是:

  • 当我调用pm2.list()pm2.jlist() 时,方法执行正常,我可以在我的pm2 日志文件中看到输出,但是服务器没有发回任何数据
  • 当上述工作正常时,pm2 也会重新启动应用程序,我可以看到我的重新启动次数在增加。

这可能吗?

这是我的应用代码:

const express = require('express');
const pm2 = require('pm2')

const app = express();
const { PORT = 3000 } = process.env;

app.get('/', (req, res) => {
  console.log('foo');
  pm2.describe((process, err) => {
    res.send(process)
  })
});


app.listen(PORT, () => {
  console.log(`Listening on port ${PORT}`);
});

pm2 json 文件

{
  "name": "testPm2app",
  "script": "1.js",
  "watch": true,
  "ignore_watch": "node_modules"
}

【问题讨论】:

    标签: node.js pm2


    【解决方案1】:

    您对pm2.describe 的使用不正确。第一个参数应该是进程名或进程ID。您可以将回调函数附加到将与流程数据一起执行的第二个参数。查看下面的代码。

    const express = require('express');
    const pm2 = require('pm2')
    
    const app = express();
    const { PORT = 3000 } = process.env;
    
    app.get('/', (req, res) => {
      console.log('foo');
      pm2.describe('testPm2app', (err, data) => {
        if(err) {
            res.status(500).end();
        }
        res.send(data);
      })
    });
    
    
    app.listen(PORT, () => {
      console.log(`Listening on port ${PORT}`);
    });
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多