web-dev-qa-db-ja.com

使用中のMacドライブ、lsofを理解する

外付けHDの権限を修復しようとしています。 「そのようなファイルは使用中です」というメッセージがたくさん表示されるため、プラグを差し込んだときにゴミ箱を空にすることはできません。ドライブの権限を修復することでこれが解決される可能性があることをオンラインで読みました。ドライブを再起動するか、プラグを抜いてから再度差し込むと、使用中のため、現在ドライブをアンマウントできません。lsofを使用して何が使用されているかを確認しましたが、これを理解できず、表示されません。これが何を意味するかを学ぶための明確なガイドを見つけるために。出力は以下のとおりです。

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mds      59 root   23r   DIR    1,9     1701    5 /Volumes/SEAGATE
mds      59 root   31r   DIR    1,9     1701    5 /Volumes/SEAGATE 

コマンド

ps ax | egrep '[ /](PID|mds)'

出力

PID   TT  STAT      TIME COMMAND
660   ??  Ss     0:12.49 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
673   ??  Ss     0:08.68 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores

コマンド

/usr/bin/Sudo kill 660

出力

//new line$

コマンド

Sudo lsof /dev/disk2s2

出力

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mds     1599 root   11r   DIR    1,8     1764    5 /Volumes/SEAGATE

その順番で

Bashファイルを連続して数回実行すると、次のようになります。

PID   TT  STAT      TIME COMMAND
1737   ??  Ss     0:00.69 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds

しかし、ドライブはまだmdsによってロックされています

例外が追加されたことを示すために、スクリーンショットを次に示します。

enter image description here

enter image description here

3
Osman

診断が速すぎる

ドライブの権限を修復することでこれが解決する可能性があることをオンラインで読みました。

残念ながら、あなたの問題の説明から、これは間違っています。修復する必要があるのは、外部ディスクSEAGATE上のファイルシステムです。

lsofの分析

lsofコマンドの出力は、コマンドmds(最初の列)が実際にファイルシステム_/volumes/SEAGATE_(最後の列)を読み取っていることを示しています。この素晴らしいコマンドの詳細については、MacOSXに付属のマニュアルをお読みください。

_man lsof
_

mdsは、すべてのファイルシステムのメタデータへのアクセスを提供するMacOSXサーバーです。その最も重要なクライアントはFinderSpotlightです。

外部ディスクを取り出すことができない場合、これは正当であり、mdsがまだそれを読み取っているためです。それでもそれを抽出すると、ファイルシステムが確実に破損します。

ファイルシステムを解放して修復する

破損しているので、これを修正する方法は次のとおりです。

  1. _System Preferences > Spotlight_ select Privacyウィンドウを開き、(+)SEAGATE外部ディスクを停止してSpotlightを停止し、インデックスを作成しようとします。

  2. mdsがまだ実行されている場合:

    _ps ax | egrep '[ /](PID|mds)'
    _

    あなたはそれを殺さなければならないでしょう:

    __pid_to_kill=`ps ax | egrep '[ /]mds' | awk '{print $1}'`
    if [ "${_pid_to_kill}" ] ; then
        echo "${_pid_to_kill}" | while read _pid ; do
            /usr/bin/Sudo kill ${_pid}
        done
    fi
    _

    lsofディスクが空いていることをSEAGATEで確認します。

    _lsof /Volumes/SEAGATE
    _

    これでよければ、GOTO4。

  3. mdsを強制終了しても_/Volumes/SEAGATE_が解放されない場合は、mdsを介してこのファイルシステムにアクセスする別のプロセスがあります。 (これはアンチウイルスまたはクラップウェアである可能性があります。これはまったく別のサイズの調査です)。この場合、高速パスはlaunchdmdsを開始しないようにすることです。

    次のように実行します。

    _cd /System/Library/LaunchDaemons
    /usr/bin/Sudo launchctl unload com.Apple.metadata.mds.plist
    _

    mdsプロセスがもうないことを確認してください:

    _ps ax | egrep '[ /](PID|mds)'
    _

    lsofディスクが空いていることをSEAGATEで確認します。

    _lsof /Volumes/SEAGATE
    _

    これで大丈夫です、GOTO4。

  4. _Disk Utility_を起動し、ディスクSEAGATEを確認します。修理が必要になるのではないかと思います。この場合は修理してください。

    それを取り出して、「使用中のファイル」エラーメッセージがもうないことを確認してください。

  5. _System Preferences > Spotlight_ select Privacyウィンドウを開き、(-)SEAGATE外部ディスクでSpotlightがインデックスを作成できるようにします。

  6. launchdmdsを開始しないようにする必要がある、strep 3.に合格した場合は、この機能を再度有効にする必要があります(そうしないと、ファイルシステムの管理で多くのことが失敗します)。

    次のように実行します。

    _cd /System/Library/LaunchDaemons
    /usr/bin/Sudo launchctl load com.Apple.metadata.mds.plist
    _
2
dan

Spotlightがこのドライブのインデックスを作成しているようです。 Spotlightがハングアップし、このドライブを絶えず叩く原因となっている問題がある可能性があります。

mdsプロセスはメタデータサーバーです。このプロセスを強制終了してから、このドライブにインデックスを付けないようにスポットライトに指示してください。

Spotlightのインデックス作成を無効にするには、[システム環境設定]-> [Spotlight]-> [プライバシー]に移動し、ディスクを除外リストに追加します。 mdsを強制終了して再起動し、スポットライトを取得してインデックス作成を停止する必要がある場合があります。

これがあなたの問題であるかどうかはわかりませんが、始めるのに良い場所です。

2
111---