nodejs - 来自连续execSync函数的意外行为

问题描述 投票:0回答:1

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

node.js docker
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.