インストールされている他のデバイスの隠しパスからデバイスを削除するには?

インストールされている他のデバイスの隠しパスからデバイスを削除するには?

私は持っています古い機器にインストールする/mntそして:

$ mount olddevice /mnt

デバイスを変更したい/mntマウントポイント。これを行うには、単にインストールするだけです。新しいデバイスその上:

$ mount newdevice /mnt

このように、プロセスにはまだファイル記述子があります。古い機器既存のデバイスで作業を続けることができますが、新しいプロセスでは/mnt使用する新しいデバイス

いつ検知できますか?古い機器もう使用しなくなって削除することにしました。私の質問は削除する方法です。

$ umount olddevice
umount: olddevice: umount failed: Invalid argument.

自分で削除できますか?または強制的に削除しますか?新しいデバイスまず(私はそれをしたくない)?

ベストアンサー1

デフォルトでは、マウント伝播が有効なsystemdをまだ実行していない場合は、まず次のコマンドを実行します。

mount --make-rshared /

それから:

mkdir /root.orig
mount --rbind / /root.orig
mount --make-rprivate /root.orig/mnt

mount newdevice /mnt
...
umount -R /root.orig/mnt    # instead of umount olddevice

その後、魔法を安全に分解します。システム全体を取り外さないように注意してください。

mount --make-rprivate /root.orig
umount -l /root.orig
rmdir /root.orig

一般的に私はmount/コマンドumountの再帰的な変形を使用するのが好きです。最初は、以下にファイルシステムだけをマウントしたと言われました/mnt。上記の手順ではumount -R /root.orig/mnt息子ディレクトリを使用する/mntと、このumount -Rコマンドが途中で失敗する可能性があります。これは、サブマウントには開いたファイルはありませんが、デフォルトのマウントにはまだ開いているファイルがあるためです。 IMO これはumount -l仕組みと似ていると感じます。 umount -l /pathマウントツリーを分解して分離すると、開いているファイルがないとすぐに個々のファイルシステムが閉じます。

おすすめ記事