rm: ' を削除できません': デバイスまたはリソースが使用中です。

rm: ' を削除できません': デバイスまたはリソースが使用中です。

重複した内容が多いと思います。私はほとんどすべて(lsof、フューザーなど)を見ましたが、それを理解することはできません。

rm: 'temp_p/sys' を削除できません: デバイスまたはリソースが使用中です。

Bash スクリプトからフォルダを削除しようとしたときに発生するエラーです。私が使用するコマンドは次のとおりです。

test -f "$TEMP_DIR" && sudo rm -rf "$TEMP_DIR"

シェルでrm -rfを実行してみましたが、同じ出力が表示されます。 lsofの出力は次のとおりです。

lsof +D <directory name>

lsof: 警告: stat() fusion.gvfsd-fuse ファイルシステム /run/user/76585/gvfs を実行できません。出力情報が不完全である可能性があります。 lsof:警告:vfatファイルシステム/media/kostef1/9016-4EF8をstat()できません。出力情報が不完全である可能性があります。

フューザには何も表示されません。隠しファイルをすべて一覧表示しても、ドットで始まる項目は表示されません。

答え1

temp_p/sysこれは、ファイルシステムがマウントされており、最初にアンマウントする必要があることを示します。

umount -- "$TEMP_DIR/sys"
rm -rf -- "$TEMP_DIR"

または:

if mountpoint -q -- "$TEMP_DIR/sys"; then
  umount -- "$TEMP_DIR/sys" || exit
fi
rm -rf -- "$TEMP_DIR"

まずマウントポイントであることを確認し、マウント解除できない場合は中止してください。

ところで、rm -rf上記では避けていたマウントされたファイルシステムの内容を整理します。

ファイルを別のファイルシステムに残して空にするには、$TEMP_DIR次のものを使用できますfind

find "$TEMP_DIR" -xdev -depth -delete

-deleteヒントが-depthありますが、まだ通知として含めることをお勧めします)。

また参考にしてくださいtest -f "$TEMP_DIR"$TEMP_DIRかどうかをテストすることです。定期的なファイル(シンボリックリンクの確認後)に対して、他の種類のファイル(ディレクトリを含む)の場合はfalseを返します。たぶんあなたはその逆を意味するかもしれませんtest -d。また、すでに消えているファイルを削除するように求められても文句を言わないので、存在しない可能性が-fあるrmファイルを呼び出すことができます。

関連情報