ファイルを検索するコマンド locate (updatedbの高速化)

Linuxでは、ファイルを検索するときにlocateというコマンドがあります。

[参考記事] locateデータベースの更新

locate 【ファイル名(ファイル名の一部)】

このコマンドは、一般にfindより高速です。

find / -name 【ファイル名】

findでは、全てのファイルをチェックしていますが、locateは『 slocate.db 』というファイルから検索を行います。
slocate.dbは、ファイル情報のまとめられたファイルです。

locateを実行したときに

warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old

と出るときには、slocate.dbの情報が古いことが原因です。

updatedbコマンドを実行して、slocate.dbファイルを更新する必要があります。

updatedbコマンドはサーバ内のすべてのファイルをチェックするためサーバの容量が多くなればなるほど時間がかかります。
インデックスする必要のないファイルを除外することで早くなります。

/usr/bin/updatedb -e "【除外するディレクトリ】"

実行例

/usr/bin/updatedb -e "/tmp,/var/tmp,/usr/tmp"

午前4時に実行されるクーロンにupdatedbが含まれている場合がありますが、もしこのクーロン実行に時間がかかるようなら、updatedbのチューニングが効果あるかもしれません。

[参考記事] 毎朝午前4時に行われる動作

一般的なupdatedbクーロンの設定ファイル

/etc/cron.daily/slocate.cron
または
/etc/cron.daily/mlocate.cron

/homeディレクトリのファイルが多く、チェックに時間がかかるようであれば次のように変更する。

#!/bin/sh
……
…
……
/usr/bin/updatedb -f "$nodevs" -e "/tmp,/var/tmp,/afs"
  ↓
/usr/bin/updatedb -f "$nodevs" -e "/tmp,/var/tmp,/afs,/home"

関連記事

スポンサーリンク

Apacheで所有権や書き込み権限があるにも関わらずPermissions deniedが出る場合

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る