Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux nohup下Ruby脚本可能存在I/O同步问题?_Linux_Ruby_Nohup - Fatal编程技术网

Linux nohup下Ruby脚本可能存在I/O同步问题?

Linux nohup下Ruby脚本可能存在I/O同步问题?,linux,ruby,nohup,Linux,Ruby,Nohup,在nohup下运行的Ruby脚本的输出有一个奇怪的问题。基本上,当写入日志文件或使用标准输出到nohup.out时,会出现严重的输出延迟。您可以在这里看到原始帖子,它是针对该用例的: 有人建议我使用 file\u object.sync=true 这是可行的,但是我对为什么只有在脚本处于nohup下时才会发生这种情况的细节感兴趣。我猜nohup如何缓冲它自己的shell输出有更深层次的复杂性。这样,如果我有更详细的输出,我就可以实现更优雅的解决方案 任何额外的资源都是值得赞赏的 规格: Rub

在nohup下运行的Ruby脚本的输出有一个奇怪的问题。基本上,当写入日志文件或使用标准输出到nohup.out时,会出现严重的输出延迟。您可以在这里看到原始帖子,它是针对该用例的:

有人建议我使用
file\u object.sync=true
这是可行的,但是我对为什么只有在脚本处于nohup下时才会发生这种情况的细节感兴趣。我猜nohup如何缓冲它自己的shell输出有更深层次的复杂性。这样,如果我有更详细的输出,我就可以实现更优雅的解决方案

任何额外的资源都是值得赞赏的

规格: Ruby 1.8.7 Linux:见于CentOS 5.4、5.6和Amazon Linux AMI 2012.03版(与CentOS 6.2有点类似)
Nohup:8.4

这是因为当您的
STDOUT
未连接到tty,而是连接到文件时,使用块大小的缓冲,如果连接到tty,则使用基于行的缓冲


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

感谢您的回复。如果我重定向此行为,我猜警告将类似于
file.sync=true
。换句话说,我在用nohup作弊,所以不要期望完美:)