gpt4 book ai didi

linux - 使管道的左侧在右侧终止时终止

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:41 25 4
gpt4 key购买 nike

命令1 |命令2

如何让管道的发送命令在管道的接收命令终止时终止?

cmd1 处理文件中的数据并将其输出通过管道传输到 cmd2。

cmd2 接收 cmd1 的输出并进行一些自己的处理,这些处理被输出到一个文件中。它可以选择在写入指定数量的字节后终止。

我遇到的问题是 cmd1 继续执行,直到处理完它正在处理的文件中的所有数据,即使 cmd2 已终止也是如此。

这可能会花费很长时间并减慢我的 shell 脚本。


我在做什么的具体解释:

“ super 代理”网络探测设备正在捕获流量并将其存储在 6 小时环形缓冲区上的文件中。这些是某种格式或其他格式的原始捕获文件。专有命令可用于根据时间范围构建 pcap 文件。这是上面的 cmd1,称为“buildpcap”

6 小时的流量可以生成一个非常大的 (200GB+) 文件。

我想将总 pcap 限制为 10GB,并将其拆分为 1GB 的文件部分。

我不能限制文件大小的输出,也不能使用 buildpcap 拆分成多个部分文件,但我可以输出到标准输出而不是文件,并将其通过管道传输到可以的命令;在本例中,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

我希望这是有道理的。

最佳答案

这在很大程度上取决于 cmd1 是谁/什么,以及它的实现有多干净。例如,如果我这样做

find / -type f | less

从第二个窗口“pkill less”我的查找终止。

编辑:

对这个答案进行评论并将其与答案整合:

在这种情况下,我想您需要一个“看门狗脚本”来监视 cmd2 的进程状态并在 cmd2 终止时终止 cmd1。有点像

watch -n 5 'pgrep cmd2 || pkill cmd1'

应该做的。它将每秒钟检查一次 cmd2,如果 2 消失,则终止 cmd1。

关于linux - 使管道的左侧在右侧终止时终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com