首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日志是异步写入日志文件的。

日志是异步写入日志文件的。
EN

Stack Overflow用户
提问于 2013-11-19 05:22:50
回答 1查看 159关注 0票数 1

我遇到了一个奇怪的场景,当我试图将perl脚本的stdout日志重定向到一个日志文件时,当脚本完成时而不是在脚本执行期间,所有的日志都会在执行结束时被写入。

在运行脚本时,当我执行尾-f“文件名”时,只能在脚本完成执行时才能看到日志,而不是在脚本执行期间。

我的脚本细节如下:

/root/Application/download_mornings.pl >>“/var/log/file_manage/file_manage$(日期+Y-\\%m-\\%d).txt”

但是,当我在没有重定向日志文件的情况下运行时,我可以看到命令提示符上的日志,就像脚本进行时一样。

如果你需要其他细节,请告诉我。

提前感谢你们所有的光,你们都能摆脱所发生的一切。

桑托什

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-19 05:29:22

默认情况下,Perl将缓冲输出。你可以说:

代码语言:javascript
复制
$| = 1;

(在脚本的开头)禁用缓冲。引用perldoc perlvar

$| 如果设置为非零,则在当前选定的输出通道上的每次写入或打印之后立即强制刷新。缺省值为0(不管系统是否真正缓冲了通道;$|只告诉您是否在每次写完之后显式地要求Perl进行刷新)。如果输出到终端,则通常会对STDOUT进行行缓冲,否则将对块进行缓冲。在输出到管道或套接字时,例如在rsh下运行Perl程序并希望看到正在发生的输出时,设置此变量非常有用。这对输入缓冲没有影响。有关这一点,请参见getc。参见选择如何选择输出通道。另见IO::Handle

您还可以参考受缓冲的折磨?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20063827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档