我在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
崩溃并导致错误,则第二个将执行。我希望他们在任何情况下都能一个接一个地执行。我不知道如何解决这个问题。
答案 0 :(得分:0)
命令docker ps -q -a
返回所有容器的ID,因此,如果有一些未运行的容器,则命令docker kill
将返回错误。
要解决此问题,请将第一个execSync更改为docker kill $(docker ps -q)
。