2

Upstartスクリプトでechoを使用してログに記録します。

script
    echo "main: some data" >> log
end script

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

現在、これら2つは並行して実行されているため、ログには次のように表示されます。

main: post-start: some data another data

これは重要ではないので、適切な同期を採用しませんが、少なくともこの影響を減らすために自動フラッシュをオンにすると思いました。それを行う簡単な方法はありますか?

更新:はい、フラッシングはそれを適切に修正しませんが、私はそれがそのような状況をある程度助けるのを見ました、そしてこれは私がこの場合必要とするすべてです。シェルでそれを行う方法がわからないというだけです

4

3 に答える 3

1

|grep -F --line-buffered ''私は通常、行のバッファリングを強制する安価で信頼できる方法としてトレーリングを使用します。入力が終了して閉じられるまですべての出力を遅らせるためspongemoreutilsもあります。

于 2010-12-31T01:50:35.887 に答える
1

変更してみてください:

エコー「テキスト」

に:

猫 << EOF
文章
EOF
于 2009-03-04T13:54:59.887 に答える
0

なぜあなたはフラッシングが役立つと思いますか?echoによって行われる書き込みには改行が含まれているため、最初のスクリプトが2番目のスクリプトの前に完了するまで実行された場合、改行はすでにそこにあります。

出力ではそうではありません。これは、最初のスクリプトが完了する前に2番目のスクリプトが実行されたため、出力がインターリーブされたことを示します。

フラッシングはこれには役立ちません。これは「適切な」並列競合状態です。

于 2009-03-04T11:32:05.503 に答える