保持终端输出文件打开并无限期附加

保持终端输出文件打开并无限期附加

此主题这里讨论了如何将终端输出写入文件。

假设我在终端中运行 Kafka 消费者命令,用于>> out.txt存储流数据。一旦数据流由于某种原因暂停(而不是停止),它将out.txt关闭并且永远不会再次打开(除非我重新运行该命令)。

有什么方法可以让这个文件保持打开、等待和无限期地附加,除非手动停止(例如使用Ctrl- C)?

澄清一下:这个问题与 Kafka 无关。对于任何以不间断的方式向终端产生无限连续输出的命令,但由于某种原因,该输出流暂停片刻,则关闭out.txt。这会导致命令停止,必须重新运行。问题:有没有办法让命令等待并附加到同一个文件out.txt

答案1

现在,文件out.txt已经处于“无限期等待和附加”状态。下次,无论何时,只要您将输出附加到该文件,该文件就会在那里并获取您的输出。

它是重定向符号>>,表示发送到文件的任何数据都应该附加。如果您使用>,则您发送到文件的任何数据都将替换文件中可能存在的内容。

仅暂停终端命令可能会导致操作系统“关闭”该文件,从某种意义上说,它会最终确定文件系统中文件的当前状态,但这并不不是关闭暂停命令与文件的连接。一旦该命令恢复,将继续写入文件。

如果您退出命令,或者命令中止(或崩溃),程序与文件的连接以及文件本身都将关闭。当您再次启动命令时,将建立与文件的连接,并且由于符号的原因>>,其他输入将附加到文件中。

我认为没有必要用某种东西来“阻止”它接收输入。事实上,一旦没有数据发送,它就已经停止接受输入了。只要你给它新的输入,它就会继续接受输入。任何时候。

相关内容