私はこのようなスクリプトを持っています、
#!/bin/bash
echo "hello" > a.txt
while [ True ]; do
#do something here, very long and possiblely causing system reboot
done
実行が正常に終了した場合、通常のa.txt(「hello」を含む)しか取得できないようです。「while ループ」が実行されている場合、または while ループ中にシステムの再起動がトリガーされた場合、空白の a.txt が存在します。
Google で検索すると、シェルはデフォルトで行バッファリングをオンにするため、行バッファリングの問題であると思われました。カスタマイズしたUbuntuに「Expect」または「stdbuf」がインストールされていないため、置き換えてみました
echo "hello" > a.txt
ラインバッファが無効になっているPerl/Cプログラムで。Perlでは、「$|」を使用しました 「fflush」は C で使用されました。残念ながら、動作しません。
どんなフィードバックでも大歓迎です...