在nohup下使用Ruby脚本可能的I / O同步问题?

nohup下运行的Ruby脚本的输出有一个奇怪的问题。 基本上,写入日志文件或使用标准输出到nohup.out时会有严重的输出延迟。 你可以在这里看到原来的post,这个用例的答案是:

StackOverflow – 问题19455667

有人build议我使用类似file_object.sync = true东西,但是我只关心脚本在nohup下的原因。 我猜测,nohup如何缓冲它自己的shell输出是一个更复杂的问题。 这样我可以实现更优雅的解决scheme,如果我有更详细的输出。

任何额外的资源赞赏。

规格:Ruby 1.8.7 Linux:在CentOS 5.4,5.6和Amazon Linux AMI版本2012.03上出现(与CentOS 6.2有点类似)Nohup:8.4

Solutions Collecting From Web of "在nohup下使用Ruby脚本可能的I / O同步问题?"

这是由于当你的STDOUT没有连接到tty,而是一个文件,使用块大小的缓冲,如果连接到tty,使用基于行的缓冲。

如果你在没有NOHUP的情况下运行你的命令,输出(stdout和stderr)仍然会被连接到同一个tty,并且会被行缓冲。 NOHUP的默认行为是写入nohup.out文件。 由于缓冲区通常比线条大很多,因此“显示”结果需要更长的时间。