node.js - 当定向到文件时,如何从 Nodejs 中的 stdout 刷新管道输出

标签 node.js linux

简单的例子:

 node  someCode.js|grep "someString"  

显示写出的 someString。

现在

  node someCode.js|grep "someString"  > /tmp/someFile &

在另一个窗口中:

ls -l /tmp/someFile 

显示 0 个字节...所以我无法通过 cat 查看其内容。 我知道 process.stdout.write 是一个在写入时立即刷新的流......

我需要做什么来更新输出文件的内容?有一些复杂的方法,例如写入 UNIX 套接字和创建基于自定义 UNIX 套接字的类似猫的程序,但对于这个简单的要求来说,这些方法太繁重了。

最佳答案

我意识到这更像是一个 Linux 而不是 Node.js 问题。答案是here .它不是公认的答案,而是获得最多选票的答案。所以我的命令看起来像:

    node someCode.js|stdbuf -oL grep "someString"  > /tmp/someFile &

随着行的写出,现在可以在/tmp/someFile 中监视进度。使用 L 选项,字符串被写为 Lline-buffered。我将尝试编辑问题以将 Linux 添加为另一个标签。

关于node.js - 当定向到文件时,如何从 Nodejs 中的 stdout 刷新管道输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395406/

相关文章:

node.js - 如何比较图像并确定哪个内容更多?

javascript - 全局值在函数内部不会改变

javascript - mongodb nodejs - 转换循环结构

Node.js如何设置服务器环境PORT和NODE_ENV?

linux - Linux 中的管道运算符

java - 原生 Java 崩溃 Linux

javascript - graphqlj-js 联合类型,访问参数

linux - 关闭 getopt_long (optarg.h) 中的缩写?

linux - Grub 2、更改shift按钮

linux - 远程 ls 输出未重定向到文件