launchctlでlocate

locateを使うにはupdatedbが必要で、適宜更新するためにもcronで定時に更新したりするらしい。

ただSnow Leopard(Tiger以降?)だとupdatedbがデフォルトでパスの通った場所にない。探してみると、/usr/libexec/locate.updatedb というちょっと変な場所にある。

そこで、こいつを実行せずにlocateを実行してみると、どうやら定期的な更新とかはlaunchctlでそこらへんはうまくやってくれるかのようなメッセージが出てくる。そいつにしたがって以下を実行してみると、確かにlocateが使えるようになる。

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

DBの更新スケジュールは/System/Library/LaunchDaemons/com.apple.locate.plistに記述されている。