Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有以下命令行,通过 perl 脚本每秒输出 vmstat 并在每行上加上时间戳:
vmstat 15 | /home/Beer/addtimestamp.pl > File_1
addtimestamp.pl 的内容:
!/usr/bin/perl while (<>) { print localtime() . ": $_"; }
那么为什么不将输出重定向到“File_1”文件呢?
当我不这样做时,它完美地工作,它每秒完美地打印输出,完全没有问题。
当输出到终端时,perl 的输出是行缓冲的,所以你会看到输出的每一行。当它的输出是一个文件时,它将被块缓冲,所以在一个完整的块准备好写入之前你不会看到任何输出(我认为是 4k,但变量和系统定义)。
您需要设置 stdout 以使用行缓冲:
$|=1;
搜索 [perl line buffered output] 你会看到很多关于这个的结果。