nodejs-连续execSync函数的异常行为

时间:2018-09-11 08:34:42

标签: node.js docker

我在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崩溃并导致错误,则第二个将执行。我希望他们在任何情况下都能一个接一个地执行。我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

命令docker ps -q -a返回所有容器的ID,因此,如果有一些未运行的容器,则命令docker kill将返回错误。

要解决此问题,请将第一个execSync更改为docker kill $(docker ps -q)