GNU/Linux >> Tutoriales Linux >  >> Linux

7 ejemplos prácticos de comandos de localización de Linux:mlocate y updatedb

Cuando necesite buscar algunos archivos, normalmente puede usar el comando de búsqueda. find es una buena utilidad de búsqueda pero es lenta.

Sin embargo ubicar puede buscar archivos muy rápidamente.

Aunque el comando de localización funciona muy rápido, todavía no ha superado al comando de búsqueda porque tiene algunas limitaciones.

Este artículo explica todo lo que necesita saber sobre el comando de localización.

¿Cómo funciona el comando de localización? – actualizadob y actualizadob.conf

Cuando decimos que la localización busca muy rápidamente, entonces la primera pregunta que viene a la mente es ¿qué hace que la localización sea tan rápida?.

Bueno, localizar no busca los archivos en el disco, sino que busca las rutas de los archivos en una base de datos.

La base de datos es un archivo que contiene información sobre los archivos y su ruta en su sistema. El archivo de la base de datos de localización se encuentra en:

/var/lib/mlocate/mlocate.db

La siguiente pregunta lógica es, ¿qué mantiene actualizada esta base de datos mlocate?

Bueno, hay otra utilidad conocida como updatedb . Cuando ejecutas updatedb, escanea todo el sistema y actualiza el archivo de base de datos mlocate.db.

Entonces, una limitación del comando 'localizar' es su dependencia de la base de datos que puede ser actualizada por otra utilidad 'updatedb'. Por lo tanto, para obtener los resultados más recientes y confiables del comando 'localizar', la base de datos en la que funciona debe actualizarse a intervalos regulares.

También podemos configurar la utilidad 'updatedb' según nuestras necesidades. Esto se puede lograr actualizando el archivo updatedb.conf. Este es un archivo de configuración que updatedb lee antes de actualizar la base de datos. updateb.conf se encuentra en /etc/ :

# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS="yes"
PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs ecryptfs fusesmb devtmpfs"

El archivo updatedb.conf contiene información en forma de VARIABLES=VALORES. Estas variables se pueden clasificar en:

  • PRUNEFS :una lista separada por espacios en blanco de tipos de sistemas de archivos (como se usa en /etc/mtab) que no debe ser escaneada por updatedb. La coincidencia del tipo de sistema de archivos no distingue entre mayúsculas y minúsculas. De forma predeterminada, no se omite ningún tipo de sistema de archivos. Cuando se omite el análisis de un sistema de archivos, también se omiten todos los sistemas de archivos montados en el subárbol, incluso si su tipo no coincide con ninguna entrada en PRUNEFS.
  • PRUNENAMES :una lista de nombres de directorio separados por espacios en blanco (sin rutas) que no debe ser escaneada por updatedb. De forma predeterminada, no se omite ningún nombre de directorio. Tenga en cuenta que solo se pueden especificar directorios y no se utiliza ningún mecanismo de patrón (por ejemplo, globbing).
  • PRUNEPATHS :una lista separada por espacios en blanco de nombres de rutas de directorios que no deben ser analizados por updatedb. Cada nombre de ruta debe estar exactamente en la forma en que el directorio se informaría por localizar. De forma predeterminada, no se saltan rutas.
  • PRUNE_BIND_MOUNTS:una de las cadenas 0, no, 1 o sí. Si PRUNE_BIND_MOUNTS es 1 o sí, los montajes de enlace no son analizados por updatedb. Todos los sistemas de archivos montados en el subárbol de un montaje de vinculación también se omiten, incluso si no son montajes de vinculación. De forma predeterminada, los montajes de vinculación no se omiten.

Tenga en cuenta que toda la información de configuración anterior también se puede cambiar o actualizar a través de las opciones de la línea de comandos de la utilidad 'updatedb'.

Antes de intentar localizar ejemplos de comandos, asegúrese de explorar buscar ejemplos de comandos.

Ejemplos prácticos del comando de localización

1. Buscar un archivo usando localizar

Para buscar un archivo en particular usando localizar, simplemente haga lo siguiente

$ locate sysctl.conf
/etc/sysctl.conf
/usr/share/man/man5/sysctl.conf.5.gz

El siguiente comando busca httpd.conf en todo el sistema.

$ locate httpd.conf
/etc/httpd/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf.bak

También puede usar "ubicar -0" para mostrar toda la salida en una línea. Por ejemplo:

$ locate -0 httpd.conf

2. Mostrar solo el conteo

Para obtener el recuento de la cantidad de entradas coincidentes, use la ubicación -c como se muestra a continuación.

$ locate -c httpd.conf
3

3. Use updatedb para actualizar la base de datos de mlocate

Suponga que realizó una copia de seguridad de un archivo existente:

# cd /etc
# cp sysctl.conf sysctl.conf.orig

Si intenta buscar sysctl.conf usando la utilidad 'localizar', no encontrará sysctl.conf.orig.

# locate sysctl.conf
/etc/sysctl.conf
/usr/share/man/man5/sysctl.conf.5.gz

El motivo es que después de crear sysctl.conf.orig, la base de datos en la que funciona la utilidad de localización no se actualiza. Así que actualicemos la base de datos usando el comando 'updatedb' y ejecutemos de nuevo la localización:

$ updatedb
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

Tenga en cuenta que la actualización de la base de datos debe ejecutarse como root.

# updatedb

Después de la actualizaciónb, si ejecuta la localización, encontrará el archivo sysctl.conf.orig.

# locate sysctl.conf
/etc/sysctl.conf
/etc/sysctl.conf.orig
/usr/share/man/man5/sysctl.conf.5.gz

4. Cambiar la ubicación de la base de datos de mlocate

La base de datos predeterminada que lee la utilidad de localización es /var/lib/mlocate/mlocate.db, pero si desea vincular el comando de localización con alguna otra base de datos guardada en otra ubicación, utilice la opción -d.

Por ejemplo:

$ locate -d <new db path> <filename>

Tenga en cuenta que la ruta de la base de datos también se puede tomar de la entrada estándar y si se menciona una ruta vacía, se elige la base de datos predeterminada.

5. Comprobar la existencia del archivo

Ahora suponga que el archivo sysctl.conf.orig que creamos en el ejemplo 3 anterior se eliminó, y si intenta ubicar sysctl.conf, seguirá mostrando el archivo sysctl.conf.orig.

# cd /etc
# rm sysctl.conf.orig

# locate sysctl.conf
/etc/sysctl.conf
/etc/sysctl.conf.orig
/usr/share/man/man5/sysctl.conf.5.gz

Como puede ver en el resultado anterior, el comando de localización muestra sysctl.conf.orig incluso después de eliminar el archivo. Este resultado es engañoso.

Por supuesto, puede ejecutar updatedb e intentar localizar de nuevo, lo que mostrará los resultados adecuados.

O simplemente puede usar 'localizar -e', que mostrará solo los archivos que existen en el sistema, cuando esté ejecutando el comando de localización. es decir, incluso cuando el archivo existe en mlocate.db, aún se verificará para asegurarse de que el archivo esté físicamente presente en el sistema antes de mostrarlo.

# locate -e sysctl.conf
/etc/sysctl.conf
/usr/share/man/man5/sysctl.conf.5.gz

6. Ignorar mayúsculas y minúsculas en la salida de localización

El comando de localización por defecto está configurado para aceptar el nombre del archivo con distinción entre mayúsculas y minúsculas. Para que los resultados no distingan entre mayúsculas y minúsculas, podemos usar la opción -i:

En el siguiente ejemplo, creamos dos archivos con minúsculas y mayúsculas.

# cd /tmp
# touch new.txt NEW.txt

# updatedb

Si usa el comando de localización solo con minúsculas, solo encontrará el archivo en minúsculas.

# locate new.txt
/tmp/new.txt

Utilice la localización -i, que ignorará las mayúsculas y minúsculas y buscará el archivo tanto en minúsculas como en mayúsculas.

$ locate -i new.txt
/tmp/NEW.txt
/tmp/new.txt
/usr/share/doc/samba-common/WHATSNEW.txt.gz

7. Restringir la salida de localización

En el siguiente ejemplo, el comando de localización muestra varias entradas.

$ locate passwd
/etc/passwd
/etc/passwd-
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
/etc/pam.d/passwd
/etc/security/opasswd
/etc/vsftpd/passwd
/lib64/security/pam_unix_passwd.so
/usr/bin/gpasswd
/usr/bin/htpasswd
/usr/bin/ldappasswd
/usr/bin/mksmbpasswd.sh
/usr/bin/passwd
..

Si desea mostrar solo una cierta cantidad de registros, use la opción de localización -l y especifique cuántos registros desea ver en la salida del comando de localización.

Por ejemplo, lo siguiente muestra solo 5 registros (incluso cuando el comando de localización encuentra varios registros...)

$ locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
/etc/pam.d/passwd
/etc/security/opasswd

Buscar ejemplos de comandos

Como puede ver, los ejemplos de comandos de localización son bastante sencillos de usar. Sin embargo, para obtener resultados confiables y realizar algunas operaciones de búsqueda complejas, también debe saber cómo usar el comando de búsqueda de manera efectiva.

  • ¡Mami, lo encontré! — 15 ejemplos prácticos de comandos de búsqueda de Linux
  • ¡Papá, lo encontré!, 15 impresionantes ejemplos de comandos de búsqueda de Linux (Parte 2)

Linux
  1. Comandos de Linux:descripción general y ejemplos

  2. Comando cp en Linux:7 ejemplos prácticos

  3. Comando de apagado de Linux:5 ejemplos prácticos

  4. 5 ejemplos prácticos del comando dd en Linux

  5. 10 ejemplos prácticos de comandos de Linux nm

12 ejemplos prácticos de In Command en Linux

16 Ejemplos Prácticos y Útiles del Comando Echo en Linux

15 ejemplos prácticos del comando Rsync en Linux

5 ejemplos prácticos de Tail Command en Linux

Comando echo en Linux:7 ejemplos prácticos

Ejemplos prácticos de comando ping en Linux