我在我的Ubuntu 16上的nodejs中运行以下命令来处理nodejs程序的终止:
process.on('SIGINT', function () {
process.exit(); // On ctrl + C, exit this process.
});
// catches the exit(). On exit, execute our handler function.
process.on('exit', exitHandler.bind(null, { exit: true }));
async function exitHandler(options, exitCode) {
try {
await execSync("docker kill $(docker ps -q -a)");
} catch (err) {
errOut(err);
}
try {
await execSync("docker rm $(docker ps -q -a)");
} catch (err) {
errOut(err);
}
stdOut("\nExiting the process..");
}
问题是如果第一个await execSync
正常执行,下一个await execSync
将不会执行。但奇怪的是,如果第一个execSync
崩溃并最终出错,第二个将执行。我希望他们在任何情况下都能一个接一个地执行。我不知道如何解决这个问题。
命令docker ps -q -a
返回所有容器的id,因此如果有一些没有运行容器,命令docker kill
将返回错误。
要解决此问题,请将第一个execSync更改为docker kill $(docker ps -q)
。