node.js - nodejs - 来自连续 execSync 函数的意外行为
问题描述
我在我的 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)
.
推荐阅读
- mysql - 如何使用 2 个表创建具有 2 个计数的组?
- javascript - 从父窗口访问 iframe 的全局变量
- highcharts - highcharts 直方图中关于 bin 数量的错误
- excel - Excel,显示根据各种条件分布的小计
- python - Pandas - 在整个列中保持格式为小时
- jquery - 获得多个 ajax 调用的一个进度
- angular - 当 mat-select 表单域处于焦点时,角度 mat-label 消失
- reactjs - 使用单个类组件 spfx/react/typescript 时如何将一个表单分成几个不同的页面
- html - 我的页脚比应有的大一倍
- java - 如何更新显示更新对象属性的 JAVA FX 元素(标签、列表等)