如何使无限执行的命令在满足某些条件时自行终止?

如何使无限执行的命令在满足某些条件时自行终止?

我在命令行上运行一个命令,它无限地生成某个数据,并且我正在寻找特定的数据位,所以我过去常常grep找到它。一旦我得到数据,我希望该命令自行终止。我该如何实现这一目标?

注1:kill $$AND操作grep并不终止命令。

笔记2:我看到了这个问题,这似乎不适用于我的情况。

答案1

尝试这个

loud_program | grep --max-count=NUM

然后,根据我有限的知识,loud_program接收,SIGPIPE因为它正在写入断开连接的一端,这反过来又可能终止loud_program。在您的程序中尝试一下,不确定这是否适用于所有程序。

答案2

您可以将结果通过管道传输到寻呼机,例如less.输入less缓冲区将防止命令生成太多数据(即,它将在某个时刻阻塞,直到您进一步向下),并且一旦退出寻呼机,命令将由于管道损坏而自动终止。如果由于某种原因(管道的)命令由于未生成数据而仍在运行,您可以键入 Ctrl-C 来终止它们。

相关内容