質問: デバイスのアンマウントを妨げているプロセスを確認するにはどうすればよいですか? sb deviceをumount /run/media/thedriveでアンマウントしたいのですが、drive is busyエラーが発生します。デバイスにアクセスしているプロセスまたはプログラムを確認するにはどうすればよいですか?
回答: ファイルを開くファイルが開いているプロセスが通常の原因です。それらを表示します。_lsof +f -- <mountpoint or device> __/dev/<device>_ではなく_/mountpoint_を使用することには利点があります。マウントポイントは_umount -l_の後に消えるか、オーバーレイマウントによって非表示になる場合があります。fuserも使用できますが、lsofの方が便利な出力です。ただし、fuserは、ドラマを引き起こしているプロセスを強制終了して、自分の生活を続けることができる場合に役立ちます。_<mountpoint>_上のファイルを一覧表示します(上記の警告を参照):_fuser -vmm <mountpoint> _ファイルを書き込み用に開いているプロセスのみを対話的に強制終了します。_fuser -vmmkiw <mountpoint> _読み取り専用(_mount -o remount,ro <mountpoint>_)を再マウントした後、残りのすべてのプロセスを強制終了しても安全です(r)。_fuser -vmmk <mountpoint> _マウントポイント犯人はカーネルそのものかもしれません。 umountを実行しようとしているファイルシステムにマウントされている別のファイルシステムは、問題を引き起こします。確認する:_mount | grep <mountpoint>/ _ループバックマウントの場合( thanks stephen kitt )、次の出力も確認してください:_losetup -la _匿名のiノード(linux) 匿名のiノード は次の方法で作成できます。 一時ファイル(open with _o_tmpfile_) inotify 時計 [eventfd] [イベントポール] [timerfd] これらは最もわかりにくいタイプのポケモンであり、lsofのtype列に_a_inode_として表示されます(これは lsofに文書化されていません)マンページ )。これらは_lsof +f -- /dev/<device>_には表示されないため、以下を行う必要があります。_lsof | grep a_inode _匿名のiノードを保持しているプロセスの強制終了については、次を参照してください: 現在のinotify監視(パス名、pid)をリストする 。inotifyウォッチ(linux) このコメント は、inotifyがアンマウントを妨げるべきではない理由を説明していますが、 このメモ は、それがする状況を説明します: アンマウントはvx_softcnt_flush()呼び出しでハングする可能性があります。ハングが発生するのは、inotifyウォッチが_i_count_変数をインクリメントし、inotifyウォッチャーが保留を解除するまで_v_os_hold value_が上昇したままになるためです。