anchor
Spotlight がちゃんと動いていない。(mds、lsregisterが動いていない)
どうやらメタデータファイルを更新しなくなったようだ。
例えばスクリーンキャプチャを撮るとデスクトップjpegができる。
これをFinder のプレビュー画面で見ると前だったらすぐに画像のスクリーンサイズを表示していたのだが、いつからか表示しなくなった。
撮り立てのスクリーンキャプチャでも画像サイズを表示していたFinder のプレビュー画面だが
いつからかこのような表示になってサイズを表示しなくなった
先日システム環境設定のプライベートで対処したと書いたがこれでは解決しなかった。
これはいつかも来た道だということで、こちらのTips にしたがって
sudo mdutil -E /
のコマンドを実行した。
しかし結果はやはり同じことで、それ以前にあったファイルのメタデータは生成されるが新たに生成したファイルのメタデータを更新しない。
これは問題だ。
タイガーの場合はやはりSpotlight に依存しているのでこれがないと検索にいちいちアプリを起動しなくてはいけなくなる。
最初は使い勝手に不満を感じていたSpotlight だが、使い込んでみると結構この高速性には馴染んでしまったのでこれが使えないのは不便だ。
メタデータを初期化する魔法の呪文を実行してみた
一回トチッているがちゃんとメタデータの初期化には成功した
ところが結果は一緒で前からあるファイルのメタデータはちゃんとできたが
新たに作ったファイルのデータを更新しない
これについては思い当たることがないでもない。
先日こちらのアプリをテストした時から調子が悪いような気がするのだ。
anchor
Spotless (Shareware)
OS10.4Tiger対応
これは要するに一時的にSpotlight を止めたり再始動したりできるシェアウエアだ。
Spotlight は高速な検索機能で便利なのだが、そのベースになっているメタデータ生成のmds、LAServerは新たなボリュームがマウントされるたびに勝手にメタデータを生成し始めてその度に数十分から数時間CPUをフルアップさせるというとんでもない欠点がある。
この問題をなんとかして欲しいとずっと思っているのだが、レパードでもそれが改善されるのか見えないのが現状だ。
それでそういう操作をする時には一時的にmdsが新規のインデックスを更新するのを止めておけばいちいちイライラしなくていいわけだ。
このアプリはなかなか良いアイデアだと思うし、そういう意味では今後に期待なのだが現状ではちょっとバグだらけで、私の環境ではまともに動かなかった。
どういうことかというとインデックスの生成を止めることは確かにできるのだが、そのまま止まりっぱなしで、再始動しても表示上は動いているような表示になるが実際にはmdsは二度と動かなくなる。
それでこのアプリはアンインストールしてしまったのだが、先日のメタデータ再生成でこの問題はクリアできなかった。
それ以来この問題を引きずっているのだ。
誰かこのアプリはちゃんと使えているという方はいらっしゃるだろうか?
Spotless はボリュームごとにSpotlight のメタデータの更新を
停止するかインデックスを削除するかリフレッシュするかなどを操作できる
ちゃんと動けばなかなか便利そうなアプリだ
それでこういう問題のTipsが見当たらないか探していたらこちらのサイトを見つけた。
OS X ハッキング!第180回「Spotlightトラブル対策室」 というこのページはちゃんとSpotlight が動かない場合のTipsが書かれている。
まず最初は
mds-crash-state
のケースで、これはmdsがクラッシュした時に生成されて、これがある限りメタデータ生成は阻害されるという。
これを削除するために
sudo rm /mds-crash-state
というコマンドか紹介されている。基本的にはルートボリュームの階層に生成されるはずだから
最初に
cd /
を実行していればそれでいいと思う。
ただ私は念のためにというか手っ取り早く
sudo find / -name "mds-crash-state" -delete
とやってしまった。
しかしこれでもう一度
sudo mdutil -E /
を実行したがやはり症状は改善しなかった。
このテストはいちいちメタデータを再生成しないといけないので有効かどうか結果が出るのに数時間かかるのが難点だ。
そこで例のOS X ハッキング!第180回「Spotlightトラブル対策室」 さんのページをさらによく読んでみると上記の方法でも上手く動かない場合のTipsとしていくつかの方法があげられている。
まず
mdimport -L
というコマンドでSpotlight メタデータインポータに不具合を含むサードパーティ製のものが含まれていないか確認するという方法。
これを実行するとターミナルに現在有効になっているmdimporterのリストを表示してくれる。
mdimport -L コマンドを実行すると現在有効なSpotlight メタデータインポータのリストを表示してくれる
このリストを見て原因になってそうな最近インストールされたものを探すのだが
残念ながらこれは該当するものがなかったようだ
このリストをチェックして不具合の原因になってそうなものをアンインストールするというTipsなのだが、見たが残念ながら原因になってそうなこの数日インストールされたものは見当たらなかった。
ということはやはり思い当たることが、的中してしまっているのか例のSpotless の不具合が原因と考えた方がいいかもしれない。
それで後は最後の手段の「lsregister で確認する」というこのサイトにあった最後の手段だ。
そのlsregister のパスに移動するコマンドだがこのサイトには
cd /System/Library/Frameworks/ApplicationServices.framework/
Frameworks/LaunchServices.framework/Support
と書かれているがなぜか私の環境では「こういうディレクトリは無い」と反応されるだけでうまくいかなかった。
それでShow Hide Invisible files という不可視ファイル、不可視領域も全てFinder で見ることができるようになるユーティリティを使った。
これで
lsregister
というコマンドのパスを探したところ別の場所にあったので以下の移動コマンドを実行した。
cd /System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/
(このコマンドをコピペする時には要注意。改行コマンドが含まれているので一旦テキストエディタにコピペして改行を無くしてからTerminal に置いた方が良い)
ここに移動して以下のコマンドを実行するとmdimporterの登録データベースを再構築できる。
これまで積み上げてきたサードパーティ製プラグイン付属のmdimporterの設定は失われるかもしれないがとりあえず、初期状態には戻せるらしい。
./lsregister -kill -r -domain system -domain local -domain user
これでもう一度
sudo mdutil -E /
を実行して今結果を待っているところだ。
果たしてこれで初期状態に戻すことができるのかどうか、明日には結果が出ていると思うが。
といってもこれでダメだったらもうシステムの再インストール以外に対処法を知らないのだが・・・
<後刻注>
先ほど結果が出たようだが、やっぱりダメだった。新規ファイルをSpotlight メタデータに読み込むことができない。
これってアプリのテストでシステムを壊しちゃったという状態じゃないだろうか?
もうちょっと検証してみるが、今日はもう疲れた。
明日もうちょっと冷静になって考えてみる。
<さらに後刻注>
あれっ?治っているようだぞ!
今新規ファイルを生成したら数分時間はかかったが、ちゃんと画像サイズも表示した。
ということはこのやり方で正しかったということだろうか?
mdsのフルアップは3時間程度で止まったが、その後もまだSpotlight メタデータ生成は続いていて12時間でやっと完成に近づいているということなのだろうか?
それにまだ新規ファイルが表示されるまで数分時間がかかる。
そういえばタイガーを最初に使い始めた時にこのタイムラグを見て「使い物にならネェな」と思ったものだがいつの間にか即時でインデックス更新されるようになっていた。
これも暫く我慢していたらそうなるのだろうか?
Spotlight に関してはまだわからないことだらけだ。
<さらにさらに後刻注>
どうやら治ったように見えたが治っていない。
スクリーンキャプチャをとってそのjpegを何時間置いていても、mdsはメタデータをインポートしない。ただToyViewer でリサイズするとすぐに「元ファイル」のサイズは認識する。
しかし別ディレクトリに作った新規ファイルはやはり読み込まない。
つまりメタデータインポータが全面的に動作不審になっているということだ。
これはしかし再起動をすることで問題が解決するかもしれない。
現在連続起動は82日目に入ってきて、それが原因なのかはわからないが本格的な不具合がやっと出てき始めたということなのかもしれない。
<結果、まとめ>
結局このmds、lsregisterがちゃんと動いていないという不具合は、連続起動記録へのチャレンジを中断して、通常のメンテナンス手順を実行したら嘘のように治ってしまった。
正しい使い方をしていればこんな問題は起きないということだが、もし起きてしまった場合はこういう対処法もあるというTipsだ。
実際、通常のメンテナンス手順プラス半年に一回くらいの割合で
sudo mdutil -E /
のコマンドを実行すれば問題はまず起きないと思う。
ただ、mdsがなぜか最新の変更を読み込んでいないという場合には、上記の手順は使えると思う。
anchor
「全ては無駄だった・・・」なんて大仰な慨嘆調の文章を書いてしまったが、「そういう仕様です」ということ?〜Spotlight 再構築ですぐにインデックスを作り始めないのは「そういう仕様」らしい
ここ数日、ちょっともろもろ動作が重くなって来ているように感じたので、ルーティンのメンテナンス。
その時にMainMenu で
「Spotlight のインデックスを再構築」
を実行、Spotlight もリフレッシュすることにした。
そうするとまたここの
「全ては無駄であった。あらゆる犠牲もあらゆる労苦も無駄だった。」~A.ヒトラー『我が闘争』より・・・じゃないがSpotlightクラッシュと格闘した二日間だった
で取り上げた同じ症状が再現。
mds、mdimporter、LAServerなどが動いていないようなので、一通りのメンテナンス手順と、このリンク先の対策をやってみた。
しかしやはり動いていない。
その対策を散々やっても、結局このリンク先と全く同じ症状を再現した。
どうにもならなかったので、しばらく放置して再起動。
するとあっさりSpotlight の検索窓が開くようになり、mdsなどのプロセスも快調にメタデータを読みにいっているようだ。
要するにこの問題の解決法は、CUIコマンドなどを使ってバタバタと怪しいファイルを初期化するようなことをしないで、一度深呼吸して再起動する・・・それだけで良いようだ。
不思議だ。
以前はmdutilコマンドでSpotlight を初期化するだけですぐに読み込みが始まってmds等がフルアップしていたが、今の仕様は一度再起動しないといけないようだ。
そういうことなら仕方がないが、そういうふうに変わったというお断りを一言欲しいなぁ。
おかげでシステムが壊れたのかと思って、その検証にのべで数日費やしてしまったではないか!
しかも大袈裟な慨嘆口調の文章を書いてしまったオレってバカみたい・・・
_, ._
( ゚ Д゚)
mds-crash-stateの削除など対策を講じるもmdsなどの
Spotlight インデックス生成のプロセスはうんともすんとも反応せず
またSpotlight が壊れてしまったのか・・・・
と思いきや、一度深呼吸して再起動をするとあっさり復活してしまった
メニューバー右端のSpotlight アイコンもあっさり開いて検索窓を表示
この「一息深呼吸」が対策のコツなのかも・・・