${File} と ${File}.new の間でファイル交換をしようとしている作品を書き込もうとしています。
元のコードはこのようなものでした -
generate ${File}.new
mv ${File} ${File}.backup
mv ${File}.new ${File}
最初の mv が終了したのとまったく同じ瞬間に失敗したが、2 番目の mv が終了していない場合、${File} に対する要求が存在する可能性があります。ファイルがその名前で利用できないため、その要求は拒否されます。めったに起こらないが、それでも起こる(昨日は6週間ぶりに起こった)
それを避けるために、私はに置き換えることを考えたmv
のでcp
、私はこのようなものを構築しようとしています -
generate ${File}.new
cp ${File} ${File}.backup
cp ${File}.new ${File}
rm ${File}.new
さて、私の課題は、${File} に書き込んでいる瞬間に、その瞬間にそれを読み取っているプロセスがある場合、オブジェクトのロックを取得できなかったとして、コピーが失敗する可能性があることです。
私の失敗への恐れは本当ですか?
失敗するのではなく、数秒/分待ってから再試行するようにプログラムに指示したいと思います。
Korn シェルを使用して AIX 6.1 を使用しています。