contents
- locateとファイル一覧データベース
- locateとupdatedb ⇦今ここ
- updatedbコマンドの頻度と時間
ファイル一覧データベースの更新
ファイル一覧データベースはupdatedbコマンドの実行で更新されます。
ファイル一覧を取得するので、更新量が多ければそれなりに実行時間はかかります。
ファイル一覧データベースの更新頻度はどうでしょうか。
更新コマンドはここにありました。
./cron.daily/mlocate
#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "rootfs" { print $2 }') renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f “$nodevs”
mlocateファイルの最後の行に/usr/bin/updatedb -f "$nodevs"
があります。
-f
オプションは除外するです。
つまり、指定したファイル名を除外してファイル一覧データベースを更新するということです。
$nodevs
は上記の2行目に/proc/filesystem
の1つ目の値がnodev
でありかつ、2つ目の値がrootfs
でない値になります。
/proc/filesystem
はカーネルがサポートしているファイルシステムの一覧になります。
ちょっとわかりづらいですね、/proc
はカーネルの様々な設定やハード制御のファイルなどが置かれています。
そういったシステムに大事なファイルシステムの一覧がlocateコマンドでパスやらが見えてしまうと危険なので、除外されているように思えます。
実際に実行してみましょう。
この時に一緒にI/O負荷も計測したいので、dstatコマンドで計測していきます。
まずはファイルを作成します。
touch locate_test
次にlocateで検索します。
locate locate_test
mlocate.dbファイルが最新になっていないため、表示されません。
さて、ここからが本番です。
updatedbコマンドを使用してmlocate.dbを更新していきます。
実行前
ll /var/lib/mlocate/mlocate.db
-rw-r—– 1 root slocate 2278021 10月 24 03:34 /var/lib/mlocate/mlocate.db
date
2017年 10月 24日 火曜日 22:56:46 JST
nohupを使ってdstatコマンドを仕掛けます。
nohup dstat -tam > dstat_date +%Y%m%d
.log &
[1] 30070
updatedb実行です!今回はオプションなしで実行していきます。
updatedb
ん?んん?
ものの数秒で終わってしまいました。
日次で実行されている上に、特に何かファイルを大量に作ったり等はしていないので、早く終わりましたね。
psで確認
ps -ef | grep updatedb | grep -v grep
プロセスもないので、完全に終わったようです。
ファイル一覧データベースの更新日付は?
ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 2282863 10月 24 22:57 /var/lib/mlocate/mlocate.db
先ほど作成したlocate_testファイルがファイル一覧データベースに入っているか確認します。
locate locate_test
/root/locate_test
ちゃんと更新されてますね。
updatedb実行中のリソース状況はどうでしょうか。
22:57:06〜22:57:10の間でCPUに動きがあります。
systemやwaitの消費が多いので、この辺りが間違いなさそうです。
少ない量だからこれだけで済んでいるかもしれません。
locateインストール直後のupdatedbのタイミングはちょっと考えた方が良さそうです。
最後はupdatedbコマンドの頻度と時間になります。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
人気ブログランキング
にほんブログ村