0

我希望写入终端或文件的一些命令管道在经过很长时间之前不会写入任何内容。

看起来数据没有被行缓冲,但是如果我使用 Ctrl-C 发送 SIGINT ,则不会出现任何预期的输出。是什么原因造成的?

当我最终决定停止收集时,我想在不丢失数据的情况下修改和收集 vmstat 输出的每一行。

以下是一些密切相关的例子:

output to terminal: vmstat -n 1 | sed ''
output to terminal: echo foo | sed '' | tee /dev/null
output to file: vmstat -n 1 > somefile
output to file: echo foo | sed '' > somefile
no output to terminal: vmstat -n 1 | sed '' | tee /dev/null
no output to file: vmstat -n 1 | sed '' > somefile
4

1 回答 1

0

You can try stdbuf with option --output=L or --output=0 to make the output line buffered or unbuffered respectively

stdbuf --output=L vmstat -n 1 >somefile
于 2013-04-13T16:22:57.350 回答