【发布时间】:2016-10-06 23:29:42
【问题描述】:
我使用的工具只能通过 Ctrl-C(或 kill)打断。这是监视某个组件并每隔几秒钟报告一些信息。该工具不支持指定限制在退出前检查组件的次数。所以它将永远运行,直到它停止。
如何将此输出的样本捕获到变量中以进行进一步处理?我还必须停止此监控工具并继续处理。
【问题讨论】:
-
您是想在工具生成一定数量的输出后停止它,还是在您获得想要处理的输出后继续该工具,稍后再单独停止它?
我使用的工具只能通过 Ctrl-C(或 kill)打断。这是监视某个组件并每隔几秒钟报告一些信息。该工具不支持指定限制在退出前检查组件的次数。所以它将永远运行,直到它停止。
如何将此输出的样本捕获到变量中以进行进一步处理?我还必须停止此监控工具并继续处理。
【问题讨论】:
如果您将工具通过管道传输到另一个程序,并且该程序退出,那么您的工具将在下次尝试写入(现已关闭)管道并退出时收到SIGPIPE 信号。
这是一个捕获工具前 10 行输出的示例。
sample=$(your-tool | head -10)
【讨论】:
您可以将数据输出到一个文件,然后在该文件上运行tail 以获取当前输出。当文件变得太大时,您可以清除文件。如果您想要更具体的答案,则需要提供更多详细信息。
例如,如果您的进程名为 printJunk,您可以将其启动为
./printJunk >>afile.txt
然后在./printJunk 运行时的任何时间或时间,您可以运行以下命令将最近的 10 行放入一个变量中:
someVariable=$(tail -n 10 afile.txt)
查看文件的输出并将其分配给变量不会对./printJunk 的运行时产生任何影响。
当 afile.txt 变得太大时,执行 echo >afile.txt 将其清空。同样,./printJunk 不会在意发生这种情况。
【讨论】: