nodemon stops不会在ubuntu中停止进程

时间:2017-07-03 12:01:37

标签: node.js ubuntu-16.04

我在nodejs应用中使用nodemon在更改应用时自动重启。但是当我停止使用' Ctrl + C'在ubuntu环境中,不会停止nodejs。我必须搜索从端口运行的进程,并且必须使用kill -9手动终止。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

快速而肮脏的解决方案

process.on('SIGTERM', stopHandler);
process.on('SIGINT', stopHandler);
process.on('SIGHUP', stopHandler);
function stopHandler() {
  console.log('Stopped forcefully');
  process.exit(0);
}

正确的解决方案

实施Graceful Shutdown是最佳做法。在这个例子中,我应该只停止服务器。如果服务器停止的时间超过2秒,则进程将以exitcode 1终止。

process.on('SIGTERM', stopHandler);
process.on('SIGINT', stopHandler);
process.on('SIGHUP', stopHandler);
async function stopHandler() {
  console.log('Stopping...');

  const timeoutId = setTimeout(() => {
    process.exit(1);
    console.error('Stopped forcefully, not all connection was closed');
  }, 2000);

  try {
    await server.stop();
    clearTimeout(timeoutId);
  } catch (error) {
    console.error(error, 'Error during stop.');
    process.exit(1);
  }
}