私はLinux環境で大きなテーブルのエントリ数を数える長期実行プログラムを書いています。行末に達するたびに計算された値をプレーンテキストファイルに出力します。
ファイルを再度開いて追加することを避けるために、ファイルを一度だけ開き、プログラムの実行中に開いたままにすることを検討しています。
一度に開くことができるファイルディスクリプタの最大数に制限があることはわかっていますが、単一のファイルディスクリプタを長時間保持するのに時間制限がありますか?
注:現在実行中のプロセスを完了するのに1か月以上かかることがあります。
答え1
私が正しく理解したら、提案されたソリューションを探しています。ここ。だから提案したようにこれ答え。使用できるオプションがあるかどうかを知りたいですexec
。だからグーグルをやってLinuxはファイル記述子を使用して追加します。、私は持っていますこれユーザーの回答ザイルズ。
それで、彼の答えの本質はあなたが探しているものだと私は信じています。
exec 5>/tmp/foo # open /tmp/foo for writing, on fd 5
while true; do #
echo "Hello" >&5 # write to fd 5, i.e. /tmp/foo
done #
ファイルディスクリプタが開いている可能性がある最大時間に関してここでファイルディスクリプタを閉じることはないので、ループが終了する限り、ファイルディスクリプタは開いたままになると思います。私がリンクした答えで詳細を見ることができます。