¡Feliz año nuevo 2020!

Comando locate y crontab

Download PDF
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Actualizado el día sábado 21 de agosto de 2021.

locate es un «comando» GNU que permite encontrar de manera rápida cualquier archivo que estemos buscando. El truco del asunto es que locate busca en una base de datos previa que se actualiza diariamente… con crontab, utilizada sobre la cual ya escribimos en su oportunidad.


Pues que estábamos de los más tranquilo programando para MySQL (mejor dicho, metiendo, sacando y editando datos en MySQL) y buscando unos archivos de configuración nos percatamos que el comando locate estaba mintiendo…

En el mundo GNU/Linux todo programa hace lo que debe hacer y bien hecho, por lo que primera vez que nos falla, pues nos extraña mucho la cosa.

Tabla de contenido:

Analizando la causa

Rápidamente acudimos a buscar en DuckDuckGo y aprendimos que locate utiliza una base de datos que debería ser actualizada diariamente con crontab pero desconocíamos si se estaba ejecutando periódicamente y cada cuánto tiempo. Por la premura del caso nos fuimos por la vía fácil, usar el comando:

sudo updatedb

Que vamos, para algo lo habrán creado ¿cierto? (más ayuda man updatedb), pero nos quedamos con la duda acerca del crontab, toda base de datos debe ser actualizada siempre, de alguna u otra manera (y ese es nuestro trabajo diario: programar y entregar herramientas a los usuarios para que lo hagan).

Instalación

Actualizado el día sábado 21 de agosto de 2021.

Pues que primero debemos tener instalado locate para poder usarlo, eso está de anteojito…

En Debian (Ubuntu, Lubuntu, etc.):

sudo apt install locate
sudo apt install locate
sudo apt install locate

Probado en CentOS 8 Stream:

$ sudo yum install mlocate
$ sudo updatedb

La mejor opción de manera precisa y concisa

Como las utilidades GNU están en muchas distribuciones Linux muy distintas unas de otras, escribo estas líneas para que sean de uso general. Primero le preguntamos a dpkg acerca de lo relacionado con locate y /bin/ la carpeta donde se guardan los binarios (o programas ejecutables), ésas serás las dos palabras clave de nuestra búsqueda:

dpkg -S locate | grep /bin/

A lo que responderá algo parecido a esto:

mlocate: /usr/bin/updatedb.mlocate
ntfs-3g: /bin/ntfsfallocate
mlocate: /usr/bin/mlocate
util-linux: /usr/bin/fallocate

Ya de plano que la primera línea vemos la palabra updatedb acompañado de mlocate el cual a su vez apare más abajo como programa registrado. Pues bien, buscaremos ese mlocate pero esta vez acompañado de la otra palabra cron, para no extenderme mucho les muestro en la siguiente imagen el resultado y además el contenido a ejecutar en crontab, que es importante conocer siempre antes de ejecutar cualquier cosa.

Buscando a «locate» en «bin» y luego a «cron»
Buscando a «locate» en «bin» y luego a «cron»

Ejecutando y actualizando

Ya con esta información nos percatamos que no es ni tan simple la actualización de dicha base de datos, primero determina si estamos conectados a alguna batería (algo importante en los ordenadores portátiles) luego revisa un caché de datos y por fin ejecuta al comando mlocate. Deberemos entonces lanzar con derechos de administrador o root:

sudo /etc/cron.daily/mlocate

Demás está decir que sí, que está en el crontab para ser ejecutado diariamente. En nuestro caso no arrojó ningún mensaje, signo típico del estoicismo del ambiente GNU/Linux: si no hubo error, ni nada importante sobre qué avisar, pues normal, calladito seguimos con nuestras vidas.

Por favor, lea también   Importando datos en formato CSV a SQLite3

Ah, por cierto, este es el último artículo de este año, ¡Feliz 2020!

¡Feliz año nuevo 2020!
¡Feliz año nuevo 2020! (imagen Pixabay)

Language programming books, photo by Helder da Rocha
Fuentes consultadas

En idioma castellano

  • «».
  • «».
  • «».

En idioma francés

  • «».
  • «».
  • «».

En idioma inglés

Crédito de la imagen Gerd Altmann, trabajo, licencia de uso:Pixabay
Crédito de la imagen Gerd Altmann, trabajo, licencia de uso:Pixabay

Madrid, España, Añoo 2120 (¡ciberapocalíptico!)
En algún lugar a orillas del mar Mediterráneo…
Lisboa, Portugal, 2020

Londres, Inglaterra, 2020
Valencia, Venezuela, 2020
Download PDF