我在命令行上运行一个命令,它无限地生成某个数据,并且我正在寻找特定的数据位,所以我过去常常grep
找到它。一旦我得到数据,我希望该命令自行终止。我该如何实现这一目标?
注1:kill $$
AND操作grep
并不终止命令。
笔记2:我看到了这个问题,这似乎不适用于我的情况。
答案1
尝试这个
loud_program | grep --max-count=NUM
然后,根据我有限的知识,loud_program
接收,SIGPIPE
因为它正在写入断开连接的一端,这反过来又可能终止loud_program
。在您的程序中尝试一下,不确定这是否适用于所有程序。
答案2
您可以将结果通过管道传输到寻呼机,例如less
.输入less
缓冲区将防止命令生成太多数据(即,它将在某个时刻阻塞,直到您进一步向下),并且一旦退出寻呼机,命令将由于管道损坏而自动终止。如果由于某种原因(管道的)命令由于未生成数据而仍在运行,您可以键入 Ctrl-C 来终止它们。