GNU/Linux >> Linux Esercitazione >  >> Linux

7 Esempi pratici di comandi di localizzazione di Linux – mlocate e updateb

Quando è necessario cercare alcuni file, in genere è possibile utilizzare il comando trova. trova è una buona utilità di ricerca ma è lenta.

Tuttavia individuare può cercare i file molto rapidamente.

Sebbene il comando locate funzioni molto velocemente, non ha comunque superato il comando find perché presenta alcune limitazioni.

Questo articolo spiega tutto ciò che devi sapere sul comando locate .

Come funziona il comando di localizzazione? – aggiornatob e aggiornatob.conf

Quando diciamo che individua le ricerche molto rapidamente, la prima domanda che viene in mente è che cosa rende la localizzazione così veloce?.

Bene, locate non cerca i file sul disco, ma cerca i percorsi dei file in un database.

Il database è un file che contiene informazioni sui file e sul loro percorso nel sistema. Il file del database di individuazione si trova in:

/var/lib/mlocate/mlocate.db

La prossima domanda logica è:cosa mantiene aggiornato questo database mlocate?

Bene, esiste un'altra utility nota come updatedb . Quando esegui updateb, esegue la scansione dell'intero sistema e aggiorna il file di database mlocate.db.

Quindi una limitazione del comando "localizza" è la sua dipendenza dal database che può essere aggiornato da un'altra utility "updatedb". Quindi, al fine di ottenere i risultati più recenti e affidabili dal comando "localizza", il database su cui funziona dovrebbe essere aggiornato a intervalli regolari.

Possiamo anche configurare l'utilità 'updatedb' secondo le nostre esigenze. Questo può essere ottenuto aggiornando updateb.conf. Questo è un file di configurazione che updateb legge prima di aggiornare il database. updateb.conf si trova in /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"

Il file updateb.conf contiene informazioni sotto forma di VARIABLES=VALUES. Queste variabili possono essere classificate in :

  • PRUNEFS:un elenco di tipi di file system separati da spazi bianchi (come quelli usati in /etc/mtab) che non dovrebbero essere scansionati da updateb. La corrispondenza del tipo di file system non fa distinzione tra maiuscole e minuscole. Per impostazione predefinita, nessun tipo di file system viene ignorato. Quando la scansione di un file system viene ignorata, vengono ignorati anche tutti i file system montati nel sottoalbero, anche se il loro tipo non corrisponde a nessuna voce in PRUNEFS.
  • PRUNENAMES:un elenco di nomi di directory separati da spazi bianchi (senza percorsi) che non devono essere scansionati da updateb. Per impostazione predefinita, nessun nome di directory viene saltato. Tieni presente che è possibile specificare solo le directory e non viene utilizzato alcun meccanismo di pattern (ad es. globbing).
  • PRUNEPATHS:un elenco separato da spazi bianchi di nomi di percorsi di directory che non dovrebbero essere scansionati da updateb. Ciascun nome di percorso deve essere esattamente nella forma in cui la directory verrebbe segnalata da locate. Per impostazione predefinita, nessun percorso viene saltato.
  • PRUNE_BIND_MOUNTS: Una delle stringhe 0, no, 1 o sì. Se PRUNE_BIND_MOUNTS è 1 o sì, i mount di binding non vengono scansionati da updateb. Vengono ignorati anche tutti i file system montati nel sottoalbero di un montaggio di collegamento, anche se non sono montaggi di collegamento. Per impostazione predefinita, i montaggi di binding non vengono ignorati.

Nota che tutte le informazioni di configurazione di cui sopra possono anche essere modificate o aggiornate tramite le opzioni della riga di comando nell'utilità 'updatedb'.

Prima di provare a individuare esempi di comandi, assicurati di esplorare trova esempi di comandi.

Esempi pratici di comando di localizzazione

1. Cerca un file usando loca

Per cercare un file particolare utilizzando locate, procedi come segue

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

Il comando seguente cerca httpd.conf nell'intero sistema.

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

Puoi anche usare "localizza -0" per visualizzare tutto l'output in una riga. Ad esempio:

$ locate -0 httpd.conf

2. Visualizza solo il Conte

Per ottenere il conteggio del numero di voci corrispondenti, utilizzare locate -c come mostrato di seguito.

$ locate -c httpd.conf
3

3. Usa updateb per aggiornare e localizzare il database

Supponiamo di aver eseguito il backup di un file esistente:

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

Se provi a cercare sysctl.conf utilizzando l'utilità 'localizza', non troverai sysctl.conf.orig.

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

Il motivo è che dopo la creazione di sysctl.conf.orig il database su cui funziona l'utilità locate non viene aggiornato. Quindi aggiorniamo il database usando il comando 'updatedb' ed eseguiamo nuovamente locate:

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

Tieni presente che l'aggiornamento db deve essere eseguito come root.

# updatedb

Dopo l'aggiornamentob, se esegui locate, troverai il file sysctl.conf.orig.

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

4. Modifica la posizione del database mlocate

Il database predefinito che legge l'utilità di localizzazione è /var/lib/mlocate/mlocate.db, ma se desideri collegare il comando locate con qualche altro database conservato in un'altra posizione, usa l'opzione -d.

Ad esempio :

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

Nota che il percorso del database può anche essere preso da stdin e se viene menzionato un percorso vuoto, viene selezionato il database predefinito.

5. Verifica l'esistenza del file

Supponiamo ora che il file sysctl.conf.orig che abbiamo creato nell'esempio 3 sopra sia stato eliminato e, se si tenta di individuare sysctl.conf, verrà comunque visualizzato il file 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

Come puoi vedere dall'output sopra, il comando locate mostra sysctl.conf.orig anche dopo che il file è stato eliminato. Questo risultato è fuorviante.

Naturalmente, puoi eseguire updateb e provare di nuovo a localizzare, che mostrerà i risultati corretti.

Oppure puoi semplicemente usare 'locate -e', che visualizzerà solo i file che esistono nel sistema, quando esegui il comando locate. cioè anche quando il file esiste in mlocate.db, verificherà comunque che il file sia fisicamente presente nel sistema prima di visualizzarlo.

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

6. Ignora caso in Individua output

Per impostazione predefinita, il comando locate è configurato per accettare il nome del file con distinzione tra maiuscole e minuscole. Per rendere i risultati senza distinzione tra maiuscole e minuscole, possiamo utilizzare l'opzione -i :

Nell'esempio seguente, abbiamo creato due file con lettere minuscole e maiuscole.

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

# updatedb

Se usi il comando locate solo con il minuscolo, troverà solo il file minuscolo.

# locate new.txt
/tmp/new.txt

Usa locate -i, che ignorerà maiuscole e minuscole e cercherà sia il file minuscolo che quello maiuscolo.

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

7. Limita l'output di localizzazione

Nell'esempio seguente, il comando locate mostrava diverse voci.

$ 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
..

Se vuoi visualizzare solo un certo numero di record, usa l'opzione locate -l e specifica quanti record vuoi vedere nell'output del comando locate.

Ad esempio, di seguito vengono visualizzati solo 5 record (anche quando il comando locate trova diversi record..)

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

Trova esempi di comandi

Come puoi vedere, gli esempi di comando locate sono abbastanza semplici da usare. Tuttavia, per ottenere un output affidabile ed eseguire alcune complesse operazioni di ricerca, dovresti anche sapere come utilizzare il comando trova in modo efficace.

  • Mamma, l'ho trovato! — 15 Esempi pratici di comandi Trova Linux
  • Papà, l'ho trovato!, 15 fantastici esempi di comandi Trova Linux (parte 2)

Linux
  1. Comando Linux Cat:utilizzo ed esempi

  2. Comandi Linux - Panoramica ed esempi

  3. Comando cp in Linux:7 esempi pratici

  4. Comando di arresto di Linux:5 esempi pratici

  5. 5 Esempi pratici del comando dd in Linux

12 Esempi pratici di In Command in Linux

16 Esempi pratici e utili di Echo Command in Linux

15 esempi pratici di comando Rsync in Linux

5 esempi pratici di Tail Command in Linux

echo Command in Linux:7 esempi pratici

Pratico comando Ping negli esempi di Linux