ETXTBSY は、現在プログラムとして実行されているファイルを書き込み用に開こうとしている、または現在書き込み用に開かれているファイルを実行しようとしていることを意味します。ファイルを実行しているのではなくコピーしていると言っているので、後者ではなく前者である可能性が高いようです。
一意の新しい宛先をターゲットにしていると言いますが、それは完全に真実ではなく、実際には既存のディレクトリをターゲットにしており、上書きしようとしているファイルの 1 つが実行中の実行可能なテキスト セグメントとして現在開かれていると思います。処理する。
コードを投稿していないため、具体的にコメントするのは困難です。どのファイルが処理されているか、具体的には、例外をスローするソースと宛先のパスを正確に把握できるように、十分なログを追加することをお勧めします。次に、lsof
どのプロセスがそのファイルを開いている可能性があるかを確認するために使用できます。
現在開いている実行可能ファイルを上書きする場合に問題を回避する 1 つの方法は、最初unlink
にターゲット ファイルを上書きすることです。実行中のプロセスは古い inode をマッピングしたままで、削除されたファイルを使用して楽しく進行しますが、書き込み用に開くと、競合しない新しいファイルが作成されます。