创建一个真正是网络端口的文件

Nic*_*ick 1 filesystems serial-port files

我有一个在集群上运行的程序,该程序的输出被写入我指定的日志文件中。但是,我想将其写入网络端口,而不是将其写入文件,以便可以使用例如 Node.js 读取它。

例如,我希望能够沿着 /dev/127.0.0.1:3000 的行指定一个文件

目前,我正在使用 Node.js 来查看日志文件,在数据发生变化时重新读取所有数据,将新数据与旧数据进行比较以查看添加的内容,然后对其进行处理。但这相当低效。

ysd*_*sdx 5

如果您的程序在不重新创建文件(通过打开它)的情况下进行日志记录,您应该能够通过将文件创建为管道来实现:

mkfifo potato.log
Run Code Online (Sandbox Code Playgroud)

您可以像写入文件一样向管道发送消息:

$ # This is the logging process:
$ echo "Warning!" > potato.log
Run Code Online (Sandbox Code Playgroud)

并阅读它们:

$ # This is the listener process:
$ cat potato.log
Warning!
Run Code Online (Sandbox Code Playgroud)

如果您真的想将其转发到 TCP 套接字,您可以执行以下操作:

$ socat PIPE:potato.log TCP:localhost:3000
Run Code Online (Sandbox Code Playgroud)

它可能不是很健壮,但您应该能够通过编写程序而不是 socat(处理与远程 TCP 的断开连接)来做一些更健壮的事情。

(如果您可以修改程序以获得对基于套接字的日志记录的本机支持,则所有这些都不是必需的)。