locate


Este post va dedicado a “locate”, cuyo objetivo es localizar archivos en una base de datos que se crea con otro comando “updatedb”. Realiza la misma función que find -name ‘nombre_archivo’ /

Con updatedb se crea una base de datos de los archivos en /var/cache/locate/locatedb (en Debian). La ventaja consiste en que realmente no busca en el sistema de archivos, sino en una base de datos que crea updatedb, que podemos dejar ejecutando desde un crontab cada noche o en momentos de carga baja. Despues de esto, las busquedas de archivos por nombre son mucho más rapidas con locate que con find.

A modo de ejemplo, en un sistemas tirando a escaso de recursos [] la construcción de la locatedb tarda la primera vez que lo ejecutamos:

# time updatedb
real 0m19.330s
user 0m1.180s
sys 0m0.364s

Mientras que las siguientes veces tarda aprox:

# time updatedb
real 0m1.276s
user 0m1.088s
sys 0m0.188s

Luego, cuando ya tenemos una entrada en crontab para reconstruir la db regularmente, si comparamos los tiempos de find y locate, se ve la diferencia:

# time find / -name 'locatedb'
/var/cache/locate/locatedb

real 0m0.148s
user 0m0.048s
sys 0m0.092s

# time locate 'locatedb'
/usr/share/man/man5/locatedb.5.gz
/var/cache/locate/locatedb
/var/cache/locate/locatedb.n

real 0m0.053s
user 0m0.032s
sys 0m0.000s

Y buscando otro archivo distinto, para acabar de ilustrar la diferencia de tiempos:

# time find / -name 'sources.list'
/etc/apt/sources.list
/usr/share/doc/apt/examples/sources.list

real 0m0.139s
user 0m0.032s
sys 0m0.108s

# time locate 'sources.list'
/etc/apt/sources.list
/etc/apt/sources.list~
/etc/apt/sources.list.bak
/etc/apt/sources.list.d
/etc/apt/sources.list.old
/usr/share/doc/apt/examples/sources.list
/usr/share/man/es/man5/sources.list.5.gz
/usr/share/man/fr/man5/sources.list.5.gz
/usr/share/man/man5/sources.list.5.gz

real 0m0.032s
user 0m0.028s
sys 0m0.000s

Locate es especialmente útil cuando trabajamos con servidores de aplicaciones Tomcat/Jboss/… ejecutando en servidores escasos de recursos, donde hay que editar unos cuantos .properties

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: