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