1. ホーム
  2. Linux

cp: 通常のファイル `/usr/local/bin/orange' を作成できません。テキストファイルがビジー状態

2022-02-16 12:30:31
<パス

質問です。

新バージョンをリリースし、実行ファイルのコピーを作成する際の問題。

cp: 正規のファイル `/usr/local/bin/orange' を作成できません。テキストファイル busy

原因

実行ファイル(プロセス自身のコード)はプロセスによって占有されており、変更、特に上書きが許可されていない。

回避策

方法1
a) 古いファイルの名前を変更する。
b) 新しいファイルをコピーする。
c) 新しいファイルを使って処理を再開する。
d) 古いファイルを削除する。

あるプロセスによってファイルが開かれロックされると、他のプロセスはそのファイルに書き込むことができなくなり、特に完全に上書きすることができなくなります。しかし、誰でも(必要な権利を持っている)その名前を変更することができます。
したがって、この場合、私が普段行っている手続きは
1. 古いファイルの名前を変更する
2. 新しいファイルを、既存のファイルの古い名前でコピーします。
3. ロックが解除されたら、そのファイルを削除する
ステップ2の後、ロックプロセスはまだリネームされたファイルに対して動作していますが、新しいプロセスは新しいものを参照することに注意してください!

方法2
a) 古いファイルを直接削除する
b) 新しいファイルをコピーする
c) プロセスを再スタートする

すぐにファイルを削除することができます。カーネルは、誰も使わなくなるまで古いファイルをディスク上に残しておきます。

参考にしてください。

http://www.linuxquestions.org/questions/linux-general-1/cannot-create-regular-file-text-file-busy-731644/