解释一下这个shell管道是如何变魔术的(…|tee>(tail-c1>$pulse)| bzip2 |…)工作正常吗?

3df52oht  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(369)

这里的原始源代码(相关30行) bash 代码(突出显示)
此处简化( s3 是一个二进制文件,它流到对象存储器)。点(…)是没有张贴在这里的选项。

PULSE=$(mktemp -t shield-pipe.XXXXX)
trap "rm -f ${PULSE}" QUIT TERM INT

set -o pipefail
mysqldump ... | tee >(tail -c1 >$PULSE) | bzip2 | s3 stream ...

这到底是怎么回事?你能解释一下这个重定向和管道是怎么工作的吗?如何调试错误 mysqldump: Got errno 32 on write . 手动调用时(仅限) mysqldump 从不因错误而失败。

b1zrtrql

b1zrtrql1#

棘手的是: tee 写入标准输出和文件 >( cmd ) 创建可写进程替换(模拟可写文件行为的命令)
这是用来有效地管道的输出 mysqldump 其他两个命令: tail -c1 将最后一个字节打印到文件中 bzip2 压缩流。
正如伊尼安在评论中指出的那样,错误32来自一根断裂的管道。我想这是因为 s3 stream 终止(可能是超时?),从而导致管道中前面的命令失败。

相关问题