在Bourne Shell中刷新输出

我在Upstart脚本中使用echo来logging事物:

script echo "main: some data" >> log end script post-start script echo "post-start: another data" >> log end script 

现在这两个并行运行,所以在日志中我经常看到:

 main: post-start: some data another data 

这并不重要,所以我不会使用正确的同步,但是我认为我会将自动刷新打开,至less减less这种影响。 有没有一个简单的方法来做到这一点?

更新:是的,刷新不会正确地解决它,但我已经看到它在一定程度上帮助这种情况下,这是我需要在这种情况下。 只是我不知道如何在壳牌公司做到这一点

尝试改变:

回声“文字”

至:

猫<< EOF
文本
 EOF

我通常使用trailing |grep -F --line-buffered ''作为执行行缓存的廉价和可靠的方法。 从moreutils也有sponge延迟所有输出,直到输入完成和关闭。

为什么你认为冲洗会有帮助? 由echo完成的写入包括一个换行符,所以如果第一个脚本在第二个脚本之前完成,那么换行符就已经到了。

在输出中,它不是,这表明第二个脚本在第一个脚本完成之前运行,从而交错输出。

法拉盛对此无能为力,这是一个“适当的”平行竞赛条件。