我使用的工具只能使用Ctrl-C
(或kill
)来中断。这是监视某个组件并每隔几秒报告一些信息。该工具不支持指定限制在退出前检查组件的次数。所以它会一直运行直到它停止。
如何将此输出的样本捕获到变量中以进行进一步处理?我还必须停止这个监控工具并继续处理。
答案 0 :(得分:1)
您可以将数据输出到文件,然后在该文件上运行tail
以获取当前输出。当文件太大时,您可以清除该文件。如果您想要更具体的答案,您需要提供更多详细信息。
例如,如果您的流程被称为printJunk
,则可以将其作为
./printJunk >>afile.txt
然后在./printJunk
正在运行的任何时间,您可以运行以下命令将最近的10行变为变量:
someVariable=$(tail -n 10 afile.txt)
查看文件的输出并将其分配给变量不会对./printJunk
的运行时产生任何影响。
当afile.txt变得太大时,请使用echo> afile.txt将其清空。同样,./printJunk
并不关心这种情况。
答案 1 :(得分:1)
如果您将工具传输到另一个程序, 程序退出,则下次尝试写入(现已关闭)管道时,您的工具将收到SIGPIPE
信号退出。
这是一个捕获工具前10行输出的示例。
sample=$(your-tool | head -10)