linux – 为什么这个发球台输掉了stdout?

简单的脚本:
#!/bin/bash
remote_ssh_account="depesz@localhost"
directory_to_tar=pgdata
exec nice tar cf - "$directory_to_tar" | \
    tee >(
        md5sum - | \
        ssh "$remote_ssh_account" 'cat - > /tmp/h3po4-MD5-2012-03-13.tar'
    ) | \
    ssh "$remote_ssh_account" 'cat - > /tmp/h3po4-data-2012-03-13.tar'

从理论上讲,它应该将数据和校验和传递给远程机器.

但不知何故,发球台失败了:

tee: standard output: Resource temporarily unavailable

做了什么,但没有任何结果.我看到两个ssh都开始了,并且tee写了两个,但只有管道到(md5sum | ssh)获取数据 – ssh“data”的strace没有得到任何数据,5秒后tee显示错误.

除此之外所有的作品.建立了2个连接,tar工作,md5sum及其交付工作.

解决方法

试试这个,做一个破坏管道的另一种方法:
#!/bin/bash
remote_ssh_account="depesz@localhost"
directory_to_tar=pgdata
nice tar cf - "$directory_to_tar" | \
    tee >(
        md5sum | \
        ssh "$remote_ssh_account" 'cat > /tmp/h3po4-MD5-2012-03-13.sum'
    ) > >(
        ssh "$remote_ssh_account" 'cat > /tmp/h3po4-data-2012-03-13.tar'
    )

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...