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
- 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)
- 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?
Yo siempre uso locate, tengo updatedb en cron para que se ejecute una vez a la semana y asi ni me entero 😀
Me gustaMe gusta
Buen consejo Migue y bienvenido por este rincón de la web 😉
Me gustaMe gusta
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.
Me gustaMe gusta
Gracias por la info, desconocia el comando updatedb
Por eso deje de usar locate, no encontraba nada , jejeje, y me apañaba con el find.
Me gustaMe gusta
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.
Me gustaMe gusta
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 😉
Me gustaMe gusta
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
Me gustaMe gusta
Gracias a ambos por compartir vuestras experiencias.
Un saludo
Me gustaMe gusta