クイックルックがドライブを人質に取っている

いくつかのファイルを閲覧してフォルダを閉じたら、ドライブが取り出せなくなった。おそらく原因はクイックルックです。何が起きているのか、そしてどう直せばよいのかを解説します。

外付けドライブにいくつかファイルをコピーしました。Finderのウィンドウを閉じました。取り出しをクリックすると、macOSが拒みます。ドライブには5分間触れていません。何が使っているのでしょうか?

アクティビティモニタで QuickLookUIService を確認してみてください。それが犯人である可能性が高いです。

クイックルックがしていること

クイックルックは、macOSのファイルプレビューを支えるしくみです。Finderでファイルを選んでスペースキーを押すとプレビューウィンドウが出ます。カラム表示でファイルを閲覧するとサムネイルが見えます。保存ダイアログを開くと、またあのプレビューがあります。クイックルックはどこにでもいるのです。

フォルダを閲覧すると、クイックルックは、見たくなりそうだと判断したファイルのプレビューを生成し始めます。ファイルを読み込み、サムネイルを抽出し、あとで素早くアクセスできるようにキャッシュします。画像、PDF、動画、ドキュメントについては、これはファイルを開いてその内容を処理することを意味します。

問題は、クイックルックが処理を終えたあと、ファイルを解放するのが遅いことがある点です。こちらはすでに別のフォルダに移っています。Finderのウィンドウもすっかり閉じました。それでもQuickLookUIServiceは、外付けドライブ上でファイルハンドルを開いたままにしているのです。

なぜこれが取り出しを妨げるのか

macOSは、いずれかのプロセスがドライブ上でファイルを開いている間は、そのドライブを取り出させてくれません。これは安全のための機能です。何かが活発に読み書きしている最中に取り出せば、データが壊れたり、アプリケーションがクラッシュしたりするおそれがあるからです。

この時点でのクイックルックは、重要なものを読み書きしているわけではありません。もう必要のないファイルハンドルを、ただ掴み続けているだけです。しかしmacOSは、「ファイルを活発に使用している」状態と「ファイルを閉じ忘れている」状態を区別しません。ハンドルはハンドルなのです。

その結果、5分前にちらっと見たプレビューのせいで、ドライブが取り出せなくなるのです。

直し方

手早い対処は、QuickLookUIServiceを終了させることです。ターミナルを開いて、次を実行します。

killall QuickLookUIService

これでプロセスがすぐに終了します。次にプレビューが必要になったとき、macOSが自動的に再起動します。これでドライブが通常どおり取り出せるはずです。

もっと慎重に進めたい場合は、まずクイックルックが問題かどうかを確認できます。

sudo lsof /Volumes/YourDriveName | grep -i quicklook

出力にQuickLookUIServiceが表示されれば、それが原因です。

クイックルックのキャッシュをリセットすることもでき、これがしつこい問題に効くこともあります。

qlmanage -r cache

これでサムネイルのキャッシュが消去され、クイックルックのシステムが再起動します。

なぜ動画が最もたちが悪いのか

クイックルックは、特に動画ファイルをしつこく掴み続けます。動画をプレビューすると、クイックルックはそのファイルを開き、シークしたりもっと見たりしたくなる場合に備えて開いたままにします。プレビューウィンドウを閉じたあとでも、ファイルハンドルがしばしば残ります。

外付けドライブに動画ファイルがあり、そのどれかを(意図的に、あるいはカラム表示で閲覧中にうっかり)プレビューした場合、クイックルックが取り出しを妨げている可能性が高いです。

同じ問題は、大きな画像やPDFにも、程度はやや軽いものの影響します。要するに、クイックルックがプレビューを生成するために実際に処理を要するあらゆるファイル形式です。

問題を防ぐ

macOSの機能を大きく失わずにクイックルックを完全に無効にすることは、実質的にできません。しかし、外付けドライブへの干渉をどれだけ抑えるかはできます。

外付けドライブを閲覧するときはリスト表示かアイコン表示に切り替える。 カラム表示は、選択したファイルに対して自動的にクイックルックを起動します。リスト表示とアイコン表示は、明示的に要求しない限りプレビューを生成しません。

外付けドライブ上のファイルをスペースキーでプレビューしない。 ファイルを確認する必要がある場合は、クイックルックを使うのではなく、直接開いてください。

閲覧後は少し間を置く。 クイックルックはいずれ自分でファイルハンドルを解放します。外付けドライブ上のファイルを閲覧し終えたばかりなら、取り出しを試みる前に30秒待ってください。

取り出す前にFinderのウィンドウをすべて閉じる。 Finderのウィンドウがもう外付けドライブを表示していなくても、以前の閲覧から残ったクイックルックの参照を抱えていることがあります。

これらのどれも優れた解決策ではありません。後始末をきちんとしないシステムプロセスに対する、その場しのぎの回避策にすぎません。

本当の解決策

クイックルックが取り出しを妨げることのいら立たしいところは、それが起きていることを知る術がない点です。macOSは「何か」がドライブを使っていると告げます。思いつくものはすべて閉じます。それでもドライブは取り出せません。

目に見えないバックグラウンドプロセスのどれが犯人かを当てるか、あるいはターミナルコマンドを実行して調べ始めるか、そのどちらかを期待されているのです。ドライブを取り外すというありふれたことのために、それは馬鹿げています。

Ejecta は、何が取り出しを妨げているのかを正確に表示します。QuickLookUIServiceが原因なら、それがすぐに分かります。ワンクリックでプロセスを終了させ、ドライブを解放します。当て推量も、ターミナルも、何かを壊してしまうのではという不安もありません。

クイックルックは便利な機能であり、ときどき不要な問題を引き起こすだけです。ファイルハンドルを解放しそこねたことに対処するために、Unixの探偵になる必要などないはずです。

毎回ターミナルを使いたくないなら、Ejectaがどのプロセスがドライブをブロックしているかを正確に表示します。しかもメニューバーから、ワンクリックでそのプロセスを終了できます。

今すぐ購入 — $9.99