实时redirectcron的输出,而不是程序结束后?

我有一个ruby脚本写入STDOUT,有时STDERR。 我每5分钟通过一个crontab运行这个脚本:

*/5 * * * * /root/myscript.rb >> /var/log/myscript.log 2>&1

我注意到,日志文件不会被实时写入。 而是等到脚本退出,然后立即写入该日志文件。 我觉得我有其他脚本没有这种行为,但也许我错了。

这是如何工作? 有什么我应该寻找改变这种行为?

这是Ubuntu 12.04

让你的脚本logging到syslog而不是stdout。 这样做是比从日志logging到标准输出更为灵活的解决scheme。

嗯,我发现Ruby在每次写入调用后都不会自动刷新STDOUT / STDERR输出。 我将STDOUT.sync = true放在我的文件的顶部,现在它实时地写入到STDOUT,从而写入日志文件。