anchor
起動ボリューム以外のボリュームの中身の索引が不完全だということが判った。
速い話がファイル置き場のボリュームのファイル名をそのままコピーして、Spotlightの検索窓にペーストしても
「何も見つかりません」
というだけだ。
メタデータどころかファイル名そのものズバリで検索しても見つからないというのは、やはり異常な動作だということだ。
そこで再度メタデータ索引を再生成させることにした。
上記のシステム環境設定ペインのSpotlightでプラバシー設定で全ボリュームを指定して解除するだけでなく、Terminalを使って索引ファイルそのものを完全に削除することにした。
「挙動が不振な時には徹底的にクリアする」
これも長年Macとつきあってきた経験則だ。
そのTerminalコマンドだが、・・・忘れちゃいました。(ヲイ!)
ていうか、そのメタデータ索引ファイルの場所も忘れてしまっている。
しかしこういう時のための共闘サイトである。
当サイトトップページの『OSX急進派』のアイコンのリンク先、Hiroさんのサイトには充実したUNIXコマンドのカンニング集・・・もといTIPS集がある。
Terminalコマンドがわからない時にはとりあえずここを覗けば良い。
覗いてみれば早速見つかったのが
mdutilというコマンドだ。
メタデータをいろいろいじるコマンドはこれと引数の組み合わせでできるようだ。
しかもメタデータ索引をリセットするというそのものずばりのコマンド文字列もちゃんとここに書いてあった。
mdutil -E /var/vm/private/var/vm
早速これをTerminalで実行してみた。
Hiroさんは「ルートにならないと実行できない」と書いておられたが、そうはいってもsudoでできるんじゃないかと思ってトライしてみたが、
「ルートでないと実行できないよ」
というアラートがきっちり出てしまった。
どうやらこのメタデータ関連の扱いは結構システムの重要部と位置づけられているみたいで、sudoなんていう仮設ルートは受け付けてくれないらしい。
それでまず
sudo passwd root
を実行してrootを有効にしてこのコマンドを実行してみた。
Spotlightの索引データを削除するコマンドを実行してみた
しかしそんなファイルは現存しないというアラートが
その結果がこのアラートなのだが、結論からいうと例の
「システム環境設定ペインでプライバシーで全ボリュームを指定して解除する」
という手順でもやはり索引データはきれいに削除できるようだ。
それでもう一度およそ1時間かかって索引データを再生成したのだが、今度はうまくいった。
先ほど検索にかからなかったファイル名が今度はちゃんと検索にかかるようになった。
結局結論的にいえるのは、Spotlightのメタデータ索引の生成は結構失敗することがあるということだ。
そして失敗したらGUIでもTerminalでも良いのだが、結局はリセットして一からやり直す以外に方法はないということだ。うまくいく時といかない時の違いもよくわからない。
つまり時の運ということだ。
う〜ん、ええかいな?
これでトラブルシューティングになっているのかな?
<後日譚>
先日Spotlightの挙動不審を解消するためにTerminalをつかってメタデータ索引ファイルのリセットを行うという記事を書いたところ、BBSで「Rauf」様からいくつか間違いの指摘をいただいた。
それで昨晩早速検証をしたので、その結果を書く。
まずSpotlightの索引データの本体の位置だが、
「ボリューム直下の『.Spotlight-V100』ではないか」
とのことだが、これは確認した。
Coelaで見てみると確かに『.Spotlight-V100』という不可視フォルダがあって、しかもこれはシステム所有になっていて、一切アクセス不可というアクセス権で守られている。
これがビンゴと見た。
逆にHiroさんの記述にあった
/var/vm/private/var/vm
という場所はディレクトリそのものが存在しないことも確認した。
これはどういうことかわからないが、OSXの仕様が変更されたということじゃないかと想像する。
OSXはこういう重要ファイルのディレクトリの変更なんてしょっちゅうやっているからだ。
BBSの指摘に従ってCoelaで確認すると確かに
『.Spotlight-V100』という不可視フォルダが存在する
それでこれをリセットするコマンドだが
sudo mdutil -E /
で良いのではないかというご指摘だったが、確かにその通りだった。
これは起動ボリュームの索引データをリセットするコマンドで、それ以外のボリュームをリセットしたい場合は
sudo mdutil -E /Volumes/(リセットしたいボリュームの名前)
を実行すれば良い。
これも動作を確認した。
またこれを実行する場合、いちいちsuコマンドでルートにならなくてもsudoの仮設ルート権限で実行可能だということも確認した。
起動ボリュームとパーティションを切ったボリュームの
それぞれをリセットするコマンドを実行した
この通りルートにログインしなくてもsudoで実行可能だった
そしてコマンド実行の直後Spotlightがおなじみの索引作りのフルアップをはじめた
またシステムログにもコマンドが実行された記録がちゃんと残った
そして一夜明けた結果をいえば、Spotlightはちゃんと動いている。あちこちのボリュームやディレクトリのファイル名を抜き出して検索をかけているが昨日のように、検索できないという症状は起きていない。
それでこれもメンテナンス項目に入れる必要性をちょっと感じた。
そんなに頻繁にやる必要はないだろう。半年に一度とかそんな頻度で十分だと思うが、このコマンドを実行してメタデータ索引ファイルもリセットするべきだと思った。
情報をいただいた「Rauf」さん、ありがとうございます。
<さらに後日譚>
先日の訂正記事についてさらに「Rauf」様から間違いの指摘並びに、補足があったのでこちらにも書いておく。
まず最初の勘違いだがHiroさんの記述にあったmdutilのコマンドは
mdutil -E /var/vm/private/var/vm
ではなく
mdutil -E /var/vm
だった。
/private/var/vm
はシステムからの応答で、原文では改行して表示されていたのだが、私がこれはhtmlの改行表示だろうと勝手に解釈して
mdutil -E /var/vm/private/var/vm
としてしまった。
だからそんなディレクトリなど存在しなかったのだ。
Hiroさんは/var/vmに別パーティションのSwapボリュームを設定していたので、そのボリュームのmdsの作成ファイルをリセットする文字列を掲げていたのではないかという指摘もその通りでした。
「ちゃんと説明を読めよ」
と、ちょっと反省してしまった。
だから結論からいうとどのボリュームであろうとそのボリュームの第一階層にmdsの索引ファイルは作成されるわけだから、結局パスはそのボリュームのパスを指定すれば良いというシンプルな結論になる。
つまり起動ボリュームの索引ファイルをリセットしたい場合はやはり
sudo mdutil -E /
ということになるし
パーティションを切ったボリュームの場合は
sudo mdutil -E /Volumes/*
ということになる。
これが最終的な結論だ。
また参考資料として教えていただいたリンク、
Spotlightまわりのコマンド
http://journal.mycom.co.jp/column/osx/133/
http://journal.mycom.co.jp/column/osx/134/
メンテについて
http://green.ap.teacup.com/hiromu/111.html
は大変参考になった。
Spotlightの挙動不審にはやはりこのコマンドを実行して索引ファイルのリセットが有効ということだし、メンテナンスの手順として取り入れ得るのも合理的だという気がする。
またmdsの初期設定ファイルというに近い
"~/Library/Preferences/com.apple.JapaneseAnalysis/AppleContextualKKC.index/AdaptiveMap"
"~/Library/Preferences/com.apple.JapaneseAnalysis/AppleContextualKKC.index/InputHistory.plist"
を削除するというのも有効だという情報もはじめて知った。
これは次回は参考にさせていただこうと思う。
「Rauf」さん重ね重ねありがとうございました。
|
|