locateと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実行中のリソース状況はどうでしょうか。

実行時間中のdstatです。

----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ------memory-usage-----
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw | used  buff  cach  free
24-10 22:57:02|  0   0 100   0   0   0|   0     0 |1266B  408B|   0     0 |  86   146 | 781M    0   103M  109M
24-10 22:57:03|  0   0 100   0   0   0|   0     0 | 774B    0 |   0     0 |  64   107 | 781M    0   103M  109M
24-10 22:57:04|  0   0 100   0   0   0|   0     0 | 756B  204B|   0     0 |  79   141 | 781M    0   103M  109M
24-10 22:57:05|  0   0 100   0   0   0|   0     0 | 654B    0 |   0     0 |  58   102 | 781M    0   103M  109M
24-10 22:57:06|  0   4  96   0   0   0|4648k    0 | 888B  204B|   0     0 |1620  2393 | 793M    0   104M 96.8M
24-10 22:57:07|  1  16  83   0   0   0|  14M  256k| 762B  174B|   0   256k|5855  8520 | 843M    0  85.8M 64.3M
24-10 22:57:08|  1  13  45  41   0   0|8420k  176k| 798B  306B|   0   176k|3520  4878 | 866M    0  52.9M 74.2M
24-10 22:57:09|  1  10  89   0   0   0|5168k 2200k| 852B  460B|   0   352k|2313  3145 | 861M    0  45.4M 86.3M
24-10 22:57:10|  0   0 100   0   0   0|   0    21k| 474B    0 |   0     0 |  81   142 | 861M    0  45.4M 86.1M
24-10 22:57:11|  0   0 100   0   0   0|   0     0 | 594B    0 |   0     0 |  61   108 | 861M    0  45.4M 86.1M
24-10 22:57:12|  0   0 100   0   0   0|   0     0 | 892B  476B|   0     0 |  79   133 | 861M    0  45.4M 86.1M
24-10 22:57:13|  0   0 100   0   0   0|   0     0 |1306B  260B|   0     0 |  78   124 | 861M    0  45.4M 86.1M
24-10 22:57:14|  0   0 100   0   0   0|   0     0 | 710B  126B|   0     0 |  81   142 | 861M    0  45.4M 86.2M
24-10 22:57:15|  0   0 100   0   0   0| 124k    0 |1144B  626B|   0     0 |  82   145 | 861M    0  45.6M 86.4M
24-10 22:57:16|  0   1  99   1   0   0| 704k    0 |1074B  498B|   0     0 | 138   202 | 861M    0  46.3M 85.6M
24-10 22:57:17|  0   0 100   0   0   0|   0     0 | 474B    0 |   0     0 |  57   104 | 861M    0  46.3M 85.7M
24-10 22:57:18|  0   0 100   0   0   0|   0     0 | 696B  150B|   0     0 |  76   131 | 861M    0  46.3M 85.7M
24-10 22:57:19|  0   0 100   0   0   0|   0     0 | 888B  158B|   0     0 |  69   121 | 861M    0  46.3M 85.7M

22:57:06〜22:57:10の間でCPUに動きがあります。

systemやwaitの消費が多いので、この辺りが間違いなさそうです。

少ない量だからこれだけで済んでいるかもしれません。

locateインストール直後のupdatedbのタイミングはちょっと考えた方が良さそうです。

 

最後はupdatedbコマンドの頻度と時間になります。

 
 

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村