Comandos de la terminal: locate y updatedb

Dentro de la serie de artículos relacionados con las herramientas básicas de cualquier sistema Linux me gustaría tratar el uso (y disfrute) del comando locate y como complemento al mismo updatedb.

Este último comando es menos conocido y sin embargo nos permitirá que locate encuentre un mayor número de entradas en un tiempo record.

Comando locate

Definición y uso

La finalidad del comando locate es la de encontrar la ubicación física (directorio) en el que se encuentra cualquier fichero del sistema.

Como cualquier otro comando cuenta con infinidad de parámetros que permiten adaptar su modo de actuar a nuestras necesidades pero nosotros nos centraremos en su funcionamiento básico dejando a la curiosidad del lector el estudio de algunas de sus alternativas.

Para encontrar un fichero en nuestro sistema de archivos (por ejemplo la ubicación de k3b) basta lanzar desde la terminal un

locate k3b

Automáticamente nos mostrará todas las entradas del árbol de ficheros que contengan la palabra k3b.

Comparación con otras alternativas

Mas de uno dirá que para esto ya existe el comando find, en concreto lanzando un

find / -name k3b

Obtendremos, al igual que con el comando locate, todas las entradas que contengan la palabra buscada (k3b)

Ventajas de locate

  1. No dará errores de permisos al tratar de buscar en directorios del sistema (pertenecientes a root o a otros grupos de usuarios que no nos autorizan el acceso)
  2. Tarda muchísimo menos tiempo (con locate encontramos todas las entradas en 0.6 segundos mientras que find tarda casi un minuto)

El comando updatedb

Justificación y uso

El truco de locate se haya en tener indexadas todas las entradas del sistema de ficheros de éste modo consigue la gran diferencia de tiempo frente al comando find que tiene que ir rastreando el contenido completo del sistema de archivos.

El único inconveniente de locate es que puede dar resultados incorrectos (no mostrar nada cuando sabemos a ciencia cierta que tienen que existir entradas para el término buscado)

Para solucionarlo contamos con el comando updatedb; simplemente lanzando un

sudo updatedb

nos aseguramos que encontraremos cualquier valor que le pidamos (siempre que exista)

Rendimiento y toma de decisiones

El comando updatedb toma en mi equipo alrededor de 3 minutos en actualizar su información interna.

Algunos podrán argumentar que por ello no merece la pena usarlo (teniendo en cuenta que find no llega al minuto y siempre encuentra todas las entradas).

A pesar de todo recomiendo el uso de los dos comandos nuevos pues, con poco más de tres búsquedas tendremos amortizado el tiempo invertido por updatedb en actualizarse, ¿no os parece?

8 comentarios en “Comandos de la terminal: locate y updatedb

  1. Lo voy a tener en cuenta, porque el buscador de archivos Strigi que apareció en las últimas versiones de Kubuntu jamás me anduvo correctamente. Y ahora en Debian, la verdad, no se con que buscar archivos.

  2. Nman dijo:

    Find tiene muchas más opciones, no tienes el problema de que esté usando una base de datos desactualizada. Aparte, recordad que al instalar un servidor, si instalas locate… has de ver si esos minutos posteriores al 100% sólo usando updatedb pueden molestar a los usuarios.

    • Interesante observación el uso del comando en un servidor de aplicaciones. Aunque el artículo no estaba dirigido a administradores de sistemas siempre podría tratar de solventarse asignando una baja prioridad a dicho proceso 😉

  3. Estoy muy de acuerdo con @Nman. Cuando manejas servidores el uso de updatedb no se recomienda para nada, el load aumenta drásticamente y queda reflejado en la experiencia de usuario en nuestro site (lentitud a más no poder) si es que no te ha tumbado algún servicio.

    recordad… para encontrar algo… find! :-p

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s