Spotlightが原因でMacが拒否したときに外付けドライブを取り出す方法は?


40

Macに外部ディスクを接続しました。今、私はそれを取り出したいです。しかし、私のMacは頑固に拒否し、アプリケーションがディスクを使用している可能性があると言います。

ディスクからファイルを開いたアプリも起動していません。

アプリをダウンロードしてインストールしました  What's Keeping Me?このアプリはとてもいいです。彼女はプロセスmdsが私のディスクを使用していると私に言った  。

プロセス  mdsといくつかのプロセスを強制終了しました  mdworker。これらはSpotlight用です。しかし、そのようなプロセスは再び生成されます。

どのように私は取り出すことができ、私からディスクを私のマック?

Mac OS X 10.6.8を使用しています。


プロセスが作業を終了するのを待っていますか?私はこれが実際に私のために働くことを発見しました。
チョッグ

回答:


27

ドライブのインデックス作成をオフにして、ボリューム上のジャーナルの内容を消去するだけです。これを行うには、ターミナルを開き、次のコマンドを入力します。

sudo mdutil -Ei off "/Volumes/Name_of_Drive"

この手順は管理者として実行する必要があります。プロンプトが表示されたらパスワードを入力します。再起動が必要になる場合があります。

または、サイモン・ホワイトが提案したように、マシンをシャットダウンしてからドライブを取り外してください。ただし、ドライブは再度接続されるとインデックス作成を開始します。


4
単にプロセスを停止するだけで十分です。sudo mdutil -i off "/Volumes/Name_of_Drive"-Eインデックスを消去して再構築します)。次回ドライブをマウントすると、スキャンが再開されます。そのドライブのスキャンを永続的に無効にするには、-dsudo mdutil -d "/Volumes/Name_of_Drive")を使用します。mdutilコマンドラインに入力して、これらすべての引数などを参照してください。
ダニー

2
ヒントが好きだったが、コマンドの後に終了することを提案しないでください...私は気づかず、そこにあった出力の履歴を失いました。
-ravemir

@njboot-いいえ。コマンド「history」は入力されたコマンドの履歴を提供するだけで、結果は返されません。
ニコラスバルブレスコ

1
mdutilコマンドを発行した後、ディスクを取り出すことができませんでした。それで、「sudo killall mds」も発行しました。
トーマステンペルマン

21

コマンドラインからアンマウントしてみてください:

diskutil unmount /Volumes/MountPoint

または強制的に:

diskutil unmount force /Volumes/MountPoint

それでも失敗する場合は、ディスクを使用しているものを確認します。

sudo fs_usage -w -f filesys | grep Volumes

または使用lsof

sudo lsof | grep Volumes

(一部のプロセスは、lsofが管理者として実行された場合のみ起動します。)


一時的なSpotlightを無効にするには、次を実行します:

sudo mdutil -a -i off

その後sudo mdutil -a -i on、再度有効にします。


役立つその他のアプリ:Whats Keeping Me


2
lsofユーザーとして実行すると、Spotlight(mds、mds_store、mdworker)がリストされないことがわかりました。ただし、sudo lsof | grep Volumes正常に動作します。(「Whats Keeping Me」には、それぞれ「管理者として」チェックボックスがあります。)
hans_meine

5

多くの場合、ボリュームのアンマウントを妨げているのはmdsであることがわかります。

sudo killall mds

次に、(すばやく)ボリュームを再度排出してください。

私の場合、現在のMacに別のMacのメインボリュームをマウントしています。外部ボリュームが(起動ボリュームとして)他のMacに返されたときにインデックス作成を再開したいので、Spotlightを無効にしたくありません。


面白い。たぶん「迅速」が鍵です!
ニコラスバルブレスコ

ありがとう!これは、強制イジェクト以外に私のために働いた唯一の答えです。
アディソン

2

Spotlightがドライブのインデックスを作成しないようにするには、TextEditでコンテンツなしで、.metadata_never_indexのタイトルのみでプレーンテキストファイルを作成し、外部に保存します。use extension "txt" ...のチェックを外し、TextEditに、はい、前にドットを付けて保存することを指示します(非表示にします)。

それが今それを止めるかどうかはわかりませんが、将来それを防ぐでしょう。

または、このApplescriptをアプリにして、強制的にイジェクトします(強制イジェクトに関する通常の注意事項とともに...)... The MacTipper Blogの功績

    property show_credits : true

set the_volumes to do shell script "ls /Volumes/"
tell application "Finder" to set the_HD to path to home folder as string

set ejectable_volumes to {}
repeat with i in (every paragraph of the_volumes)
    if the_HD does not start with i then
        set end of ejectable_volumes to (i as string)
    end if
end repeat
if (count of items of ejectable_volumes) is 0 then
    tell me to activate
    display dialog "Sorry, but there are no ejectable volumes."
else if (count of items of ejectable_volumes) is 1 then
    tell me to activate
    set the_result to item 1 of ejectable_volumes as string
    display dialog ("Eject \"" & the_result & "\"?") buttons {"No", "Yes"} default button 2 cancel button "No"
    set the_path to quoted form of ("/Volumes/" & the_result as string)
    do shell script "hdiutil eject -force " & the_path
else
    tell me to activate
    set the_result to choose from list ejectable_volumes with prompt "Please choose a volume to eject (You can select multiple items):" with multiple selections allowed
    if the_result is not false then
        repeat with j in the_result
            set the_path to quoted form of ("/Volumes/" & j as string)
            do shell script "hdiutil eject -force " & the_path
        end repeat
    end if
end if

if show_credits is true then
    tell me to activate
    set the_credits to button returned of (display dialog "This applescript brought to you by The MacTipper Blog.\n\nhttp://mactipper.com" buttons {"Don't Show Again", "Visit TMB", "OK"} default button 3) as string
    if the_credits is "Don't Show Again" then
        set show_credits to false
    else if the_credits is "Visit TMB" then
        open location "http://mactipper.com"
    end if
end if

ありがとうございました。しかし...「強制的にイジェクトする[強制的にイジェクトする際の通常の警告...]」これは心配です。ディスクが破損するリスクを負うことに同意した場合、単にプラグを抜きます。
ニコラスバルブレスコ14

次に、スポットライトなしフラグを設定し、それが表示されるのを待ってインデックス作成を停止します。
鉄人14

または、sudo diskutil unmountDisk force /Volumes/Name_of_Volumeターミナルから実行して強制的に実行することもできます。そのスクリプトは必要ありません。
njboot 14

@NicolasBarbulescoこれらは同じではありません。ボリュームを強制的にアンマウントすることは、プラグを抜くことと同じではありません。後者の場合、デバイスから突然電源を物理的に切断しているため、想像されるように、数K rpmで回転する磁気ディスクに損傷を与える可能性があります。前者では、単にデバイスにボリュームをアンマウントさせるだけです。ディスクは適切に回転し、通常どおりプラグを引きます。より安全です。
njboot 14

@njboot- diskutilコマンドを試しませんでした。しかし、私はディスクユーティリティで同等のものを試しました-無駄に。
ニコラスバルブレスコ14

2

Finderを強制終了することもできますが、これでうまくいきました。FinderはUSBドライブにぶら下がっていたため、強制終了して再起動すると、ハングが何であれ解放されました。


どのようにそれを行うのでしょうか?ファインダーを強制終了しますか?
ラスケ

Option + Command + ESC!
sdive

しかし、これは私の質問のSpotlightケースで機能しますか?
ニコラスバルブレスコ

1

何らかの理由でドライブを切断できない場合は、単にコンピューターをシャットダウンできます。コンピューターの電源が切れているときは、ドライブを安全に切断できます。次に、コンピューターを始動します。これにより、ドライブを安全に取り外すことができるようになるだけでなく、実際にハングした場合にmdsプロセスが確実に再起動します。

そのドライブでSpotlightを使用したくない場合は、システム環境設定の[スポットライト]ペインの[プライバシー]タブにドライブを追加するだけです。Spotlightはドライブを無視します。

あるいは、そのドライブでSpotlightを使用する場合、コンピューターがドライブを初めて認識したときにインデックスを作成することは必要な悪です。インデックスが作成されると、すべてのファイルが変更されるたびにインデックスが更新されるため、再度待機することはありません。ただし、Spotlightメニューに進行状況バーが表示されない場合は、mdsがハングしている可能性があります。繰り返しますが、その場合はコンピューターをシャットダウンし、ドライブを切断します。


1
確かにMacをシャットダウンできます。しかし、これはオプションではありません。
ニコラスバルブレスコ14

Spotlightにディスクを認識させるというアイデアが好きです。しかし、私は当分の間、Spotlightに私のディスクを無視させようとしました。システム設定→スポットライトを使用します。これは機能しませんでした:「不明なエラーのために不可能です。」素晴らしいエラーメッセージ!AppleはMicro $ oftから脱走者を雇ったに違いない!私も時間を働かせてみました。私は仕事に行き、Spotlightに1日中ディスクのインデックスを作成させました。夕方、私は戻ってきたが、問題はまだ同じだった。
ニコラスバルブレスコ14

私は実際に問題はmds、ドライブが終了したことをシステムに通知していないか、終了後に終了していないことであり、そうすることでプロセスが何らかの形で停止するまで(シャットダウンなど)ドライブを保持することです mdsドライブの使用を主張しているときにCPUを使用していないことがわかった場合、ドライブを強制的に取り出します。
bauerMusic

@bauerMusic-「ドライブを強制的に取り出す」方法
ニコラスバルブレスコ

@NicolasBarbulesco「強制イジェクトドライブ」は、しばらくしてシステムが提供するオプションです。イジェクトしようとすると、「ドライブのイジェクトを試みています」(または同様)と表示され、1分ほど(失敗した場合)に、強制イジェクトのオプションがある別のポップアップが表示されます。
bauerMusic

1

もう1つの簡単なオプションは、ディスクユーティリティを使用して取り出すことです。


鉄人の答えのコメントを読みましたか?ディスクユーティリティは、「強制」オプションを提供しません
klanomath

やってみなよ。あらゆる種類の外部ドライブが「使用中」であるためにイジェクトされない場合、Disk Utilitiesを介した単純なイジェクトは常に機能します。
ティムウンドハイム14

私はディスクユーティリティでドライブを排出しようとしました。しかし、これはうまくいきませんでした。
ニコラスバルブレスコ14

1
それについて聞いて申し訳ありません。ディスクユーティリティは、10.7.5で実行されているユニットで、マウントされていない「使用中」のディスクを正常に取り出します。DiskWarriorを調べることができます。
ティムウンドハイム14

1
何らかの理由で、ディスクユーティリティのアンマウントコマンドを使用すると、問題のあるディスクで機能しました。
MiB

0

Spotlightにそのドライブのインデックスを作成しないように指示できます。そうすれば、心配する必要がなくなります。

10.11システム環境設定には「Spotlight」のエントリがあり、「Privacy」という名前のタブがあります。「+」をクリックしてドライブを選択すると、完了です。「システム環境設定」を閉じて、システムが更新を確認するまで数秒待つだけで、排出できます。これで、次回の接続時にディスクのインデックス作成が開始されないため、今後問題が発生することはありません。


やってみた それはうまくいきませんでした。ここに私のコメントを参照してください:apple.stackexchange.com/questions/142459/...
ニコラBarbulesco
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.