cmd1 | 命令2
当管道的接收命令终止时,如何使管道的发送命令终止?
cmd1 处理文件中的数据,并将其输出通过管道传送到 cmd2。
cmd2 接收 cmd1 的输出并自己进行一些处理,然后将其输出到文件中。它可以选择在写入指定数量的字节后终止。
我遇到的问题是 cmd1 继续执行,直到它处理了它正在处理的文件中的所有数据,即使 cmd2 已经终止。
这可能需要很长时间并且会减慢我的 shell 脚本。
我在做什么的具体解释:
“超级代理”网络探测设备正在捕获流量并将其存储在 6 小时环形缓冲区的文件中。这些是某种格式或其他格式的原始捕获文件。专有命令可用于根据时间范围构建 pcap 文件。这是上面的 cmd1,称为“buildpcap”
6 小时的流量可以生成一个非常大 (200GB+) 的文件。
我想将总 pcap 限制为 10GB 并将其拆分为 1GB 文件部分。
我不能限制文件大小的输出,也不能使用 buildpcap 拆分为多个部分文件,但我可以输出到 stdout 而不是文件,并将其通过管道传递给可以的命令;在这种情况下,wireshark 的 dumpcap,即上面的 cmd2。
我希望 dumpcap 生成 10 x 1G 文件然后终止。它会这样做,但 buildpcap 会持续运行很长一段时间
我使用的实际命令如下:
buildpcap --feed 3 --start-datetimed $start --end-datetime $end --stdout | dumpcap -i - -w ./tmp.pcap -a 文件:10 -b 文件大小:10000000
我希望这是有道理的。