如果退出,则杀死端口上的进程并重新启动它

时间:2018-10-10 12:15:14

标签: node.js exec

如果要在我的1880端口上运行一个节点红色进程,我想终止它,然后重新启动它。我正在使用使用子进程process.exec的以下代码来执行此操作。我两次打电话给exec,第一个打电话给杀死1880年运行的服务器,第二个打电话给启动节点红色服务器。

exec('kill $(lsof -t -i:1880);', (e, stdout, stderr)=> { 
    if (e instanceof Error) {    
        console.error(e);    
        throw e;
    } 
});

  exec('node-red', (e, stdout, stderr)=> 
    if (e instanceof Error) {
        console.error(e); 
       throw e;  
    }
});

如果我在运行node-red时运行此程序,则运行良好。因此,它将杀死服务器并重新启动。但是,如果我再次运行它,这将给我一个错误并终止此代码。

   { Error: Command failed: node-red
Terminated

    at ChildProcess.exithandler (child_process.js:275:12)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5) killed: false, code: 143, signal: null, cmd: 'node-red' }

我如何正确解决此问题?

0 个答案:

没有答案