他のファイルを移動してファイルを上書きすることはできません。

他のファイルを移動してファイルを上書きすることはできません。

/some/fooプレーンテキストファイルがあります。これを使用して編集したり、他の操作を実行したりできますvimcatただし、自動編集プロセスを使用しようとするたびに、sed次のメッセージが表示されます。

sed: cannot move '/some/sedGl29Uj': Device or resource busy

sed出力を一時ファイルにリダイレクトしてみましたが、うまくいきcatました。ただし、上記の一時ファイルを移動しようとすると、次のように表示されます。

root@localhost:/some # mv tmp foo
mv: Device or resource busy

ファイルに書き込むvimことができますが、なぜ書き込めないのか心配です。 Ubuntu 16.04.1 LTS。 (ルートマウントポイント、ext4)のサブフォルダです。catmv
/some/

答え1

ドライブのインストールを管理し、答えを見つけました。インストールされているドライブを確認すると、奇妙な行が現れました。

~ # mount | grep /etc/hosts
/tmp/hosts on /etc/hosts type tmpfs (rw,nosuid,nodev,noexec,bind)

私はこれが私を驚かせた。私が使用したすべてのスクリプトを調べた後、ホスト修飾子スクリプトで次の行を見つけました。

sudo mount -o bind /tmp/hosts /etc/hosts

それから別のことを試しました。

/tmp # echo aaa > a
/tmp # mount -o bind a b; cat b
aaa
/tmp # echo bbb > b; cat a
bbb
/tmp # echo ccc > c
/tmp # mv c b
mv: Device or resource busy

もちろん、解決策はマウントポイントをキャンセルすることです。

sudo umount /etc/hosts

答え2

ディレクトリへの書き込み権限がない可能性があります。ファイル操作:変更されたすべてのディレクトリを作成、削除し、名前を変更します。

catvimファイルの内容を変更するだけで、ファイルを変更する必要はありません。sed -i一時ファイルに書き込み、名前を変更します。

関連情報