代码之家  ›  专栏  ›  技术社区  ›  Tgwizman

node.js http server子进程不会在node.js中终止

  •  0
  • Tgwizman  · 技术社区  · 6 年前

    我正在使用node.js(运行在 窗口10 )做一个服务器管理器。我有其他使用此节点http服务器运行的节点http服务器。我有一个网站,有开始和停止按钮,他们应该开始和停止子进程服务器。

    我在用

    var spawn = require('child_process').spawn,
        serverCLI = {};
    
    ...
    
    serverCLI[server.name].term = spawn('cd path/to/server/ && node server');
    

    使每台服务器运行。它可以启动服务器,但是我遇到的问题是停止服务器。

    停止服务器的代码当前为

    serverCLI[server.name].term.kill('SIGKILL');
    

    我最初使用exec而不是spawn。我试着用 SIGTERM SIGINT ,但我没有运气。子服务器继续运行。

    我甚至用 serverCLI[server.name].term.pid 并在Windows命令行中搜索PID,但不存在。

    我做错什么了?我该怎么解决?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sergio Flores    6 年前

    在exec上发送pkill,您可以使用许多选项,可以将所有服务器分组到同一组进程id上,或者按父进程查找它们,请参阅pkill的手册页。

        var processname = 'PrettyServer';
        var exec = require('child_process').exec;
        var child;
    
        child = exec(`pkill -i ${processname}`, function (error, stdout, stderr) {
    
            if (error !== null) {
                console.log('exec error: ' + error);
                // ETC
            } else {
                // ETC
            }
        });