web-dev-qa-db-ja.com

「umount--lazy」の後にデバイスにアクセスするプロセスを一覧表示します

外付けHDDをできるだけ安全に取り外したい。

umount --lazyを使いたい:

怠惰なアンマウント。ここでファイル階層からファイルシステムを切り離し、ビジー状態がなくなったらすぐにこのファイルシステムへのすべての参照をクリーンアップします。 (カーネル2.4.11以降が必要です。)

次に、少し遅れて、ファイルシステムがまだ準マウントされているデバイスでファイルが開いているプロセスをすべて強制終了する予定です。

  • ファイルシステムが新しいプロセスから見えなくなったため、開いているファイルの正確なリストにlsofを使用できません。
  • umount -lの前にlsofを使用すると、2つの呼び出しの間に新しいファイルが開かれるという競合が発生します。

ファイルシステムではなく、どのプロセスがデバイスにアクセスしているかを確認する方法はありますか?

1
Tom Hale

ボリュームを読み取り専用で再マウントしてみてください。これは、そのボリュームの何も書き込み用に開かれていない場合にのみ機能します。

ファイルを読み取り専用で開くことができる、またはプロセスがそのボリューム上に現在の作業ディレクトリを持っている可能性があるという競合状態を取り除くことはおそらくないでしょうが、ハードウェアを切り離すと、少なくともそのファイルシステムが順番に。

1
Hauke Laging

lsofはデバイスで使用できます:

lsof +f -- /dev/device
1
Tom Hale