在nohup下运行Ruby脚本的输出有一个奇怪的问题。基本上,当写入日志文件或将stdout写入nohup.out时会出现严重的输出延迟。您可以在这里看到最初的帖子,它为该用例提供了答案:
StackOverflow - Question 19455667
有人建议我使用像file_object.sync = true这样的工具,但是我对为什么只有脚本在nohup下才会出现这种情况感兴趣。我猜nohup如何缓冲它自己的shell输出还有一个更深层次的复杂性。这样,如果我有更详细的输出,我就可以实现一个更优雅的解决方案。
任何额外的资源都很感激。
规范:Ruby1.8.7Linux:在CentOS 5.4、5.6和发布版2012.03 (有点类似于CentOS 6.2)
发布于 2013-10-22 23:43:42
这是因为当您的STDOUT不是连接到tty,而是连接到一个文件时,使用块大小的缓冲区,如果它连接到tty,则使用基于行的缓冲。
如果您在没有NOHUP的情况下运行命令,输出( stdout和stderr)仍将连接到相同的tty,并且将被行缓冲。NOHUP的默认行为是写入nohup.out文件。由于缓冲区通常比行大得多,所以需要更长的时间才能“显示”结果。
https://stackoverflow.com/questions/19529986
复制相似问题