IMPORTANT: No es pot trobar el paquet amb dpkg -s:
$ whereis locate locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz $ dpkg -S /usr/bin/locate dpkg: /usr/bin/locate no trobat.
Realment el fitxer és un enllaç:
$ ls -la /usr/bin/locate lrwxrwxrwx 1 root root 24 2009-07-27 09:31 /usr/bin/locate -> /etc/alternatives/locate
Això ens indica que poden haver-hi diverses implementacions de l'ordre locate, nosaltres utilitzarem slocate a Debian. Es poden configurar les alternatives amb l'ordre alternatives.
$ sudo update-alternatives --config locate There is only one alternative in link group locate: /usr/bin/mlocate Nothing to configure.
Ara si podeu buscar per:
$ dpkg -S /usr/bin/mlocate mlocate: /usr/bin/mlocate
El nom del paquet és mlocate:
$ sudo apt-get install mlocate
Els fitxers instal·lats són:
$ sudo dpkg -L mlocate /. /var /var/lib /var/lib/mlocate /etc /etc/updatedb.conf /etc/cron.daily /etc/cron.daily/mlocate /usr /usr/share /usr/share/man /usr/share/man/man8 /usr/share/man/man8/updatedb.8.gz /usr/share/man/man5 /usr/share/man/man5/mlocate.db.5.gz /usr/share/man/man5/updatedb.conf.5.gz /usr/share/man/man1 /usr/share/man/man1/mlocate.1.gz /usr/share/doc /usr/share/doc/mlocate /usr/share/doc/mlocate/changelog.gz /usr/share/doc/mlocate/NEWS.gz /usr/share/doc/mlocate/AUTHORS /usr/share/doc/mlocate/README /usr/share/doc/mlocate/TODO.Debian /usr/share/doc/mlocate/copyright /usr/share/doc/mlocate/changelog.Debian.gz /usr/bin /usr/bin/mlocate /usr/bin/updatedb.mlocate
/. /usr /usr/bin /usr/bin/slocate /usr/share /usr/share/doc /usr/share/doc/slocate /usr/share/doc/slocate/README.gz /usr/share/doc/slocate/README.Debian /usr/share/doc/slocate/copyright /usr/share/doc/slocate/changelog.gz /usr/share/doc/slocate/Changelog.gz /usr/share/doc/slocate/changelog.Debian.gz /usr/share/man /usr/share/man/man1 /usr/share/man/man1/slocate.1.gz /usr/share/man/man1/updatedb.slocate.1.gz /var /var/lib /var/lib/slocate /etc /etc/cron.daily /etc/cron.daily/slocate
$ which locate /usr/bin/locate $ type locate locate is /usr/bin/locate
$ ls -la /usr/bin/locate lrwxrwxrwx 1 root root 24 2009-08-04 20:59 /usr/bin/locate -> /etc/alternatives/locate
El paquet que heu d'instal·lar és findutils-locate (comprovat a OpenSuse)
> whereis locate
locate: /usr/bin/locate /usr/bin/X11/locate /usr/share/man/man1/locate.1.gz
> rpm -qf /usr/bin/locate > findutils-locate-4.4.0-38.27
La base de dades amb els fitxers del sistema es troba (tal i com pertoca segons l'estàndard FHS) a:
$ ls -lah /var/lib/mlocate/mlocate.db -rw-r----- 1 root mlocate 14M 2009-11-15 07:53 /var/lib/mlocate/mlocate.db
S'utilitza l'eina cron per tal d'automatitzar el procés d'actualització de la base de dades.
$ 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"
El fitxer de configuració té un manual que podeu consultar amb:
$ man updatedb.conf
Totes les opcions anomenades PRUNE (podar/retallar en anglès), indiquen casos que no s'han d'emmagatzemar a la base de dades. Així si observeu, veureu que els fitxers que es troben en sistemes de fitxers especials (proc, devptx...) i de xarxa (NFS,samba) entre d'altres no s'afegeixen a la base de dades. També s'indiquen algunes carpetes com:
/tmp /var/spool /media
i podríem també saltar certes extensions amb PRUNENAMES:
# PRUNENAMES=".git .bzr .hg .svn"
Aquesta comanda actualitza l'index/base de dades de fitxers del sistema. Si la base de dades encara no existeix es crea i si existeix s'actualitza. Un cop creada la base de dades, l'ordre locate pot realitzar cerques a la base de dades, molt més ràpides que les realitzades directament al sistema de fitxers. El resultat és que disposem d'una ordre per cerca fitxers molt més ràpida que find.
$ sudo updatedb
Al tractar-se d'un procés que pot tardar cert temps, és recomanable que l'executeu en background .Cal afegir el símbol & al final de l'ordre:
$ sudo updatedb&
NOTA: L'ordre anterior pot no funcionar si heu d'introduir la paraula de pas per a sudo!
Té però alguns inconvenients:
sincronitzada.
Permet buscar fitxers:
$ locate nom_del_fitxer
S'utilitza l'eina cron per tal d'automatitzar el procés d'actualització de la base de dades.
Aquesta comanda crear l'index de fitxers del sistema i així permet fer cerques més ràpides (no com passa amb la comanda find que busca a tot el disc dur sense índexs...)
S'executa un cop al dia (vegeu el fitxer /etc/cron.daily/slocate)
$ dpkg -L mlocate | grep cron /etc/cron.daily /etc/cron.daily/mlocate
Si consulteu el fitxer:
$ cat /etc/cron.daily/mlocate
Veureu que s'executa updatedb.mlocate:
$ ls -la /usr/bin/updatedb.mlocate -rwxr-xr-x 1 root root 34488 2009-04-29 10:34 /usr/bin/updatedb.mlocate $ whereis updatedb updatedb: /usr/bin/updatedb /usr/bin/updatedb.mlocate /etc/updatedb.conf /usr/share/man/man8/updatedb.8.gz $ ls -la /usr/bin/updatedb lrwxrwxrwx 1 root root 26 2009-07-27 09:31 /usr/bin/updatedb -> /etc/alternatives/updatedb
Els processos especificats a cron.daily s'executen cada dia a les 6:25 segons l'establert a:
$ cat /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
NOTA: si l'ordinador no està engegat a les 6:25 aleshores s'executa l'update en el moment que s'inicia l'ordinador
Permet buscar fitxers
$ locate PATTERN
normalment escriurem:
$ locate nomfitxer
Per exemple:
$ locate document.odt
El patró accepta caràcters file globbing. Si no s'especifica cap tipus de caràcter de substitució (*,?...) aleshores el comportament per defecte és:
$ locate *paraula*
També es pot treballar amb expressions regulars utilitzant l'opció:
--regex is not specified, PATTERNs can contain globbing characters. If any PATTERN contains no globbing characters, locate behaves as if the pattern were *PATTERN*.
A les cerques es diferencia entre majúscules i minúscules. Es pot modificar aquest comportament amb l'opció (-i --ignore-case)
Altres opcions són:
Podem consultar les estadístiques de la base de dades amb:
$ locate -S Base de dades /var/lib/mlocate/mlocate.db:
65629 directoris 457738 fitxers 39433567 bytes en els noms de fitxers 14517153 bytes usats per a emmagatzemar la base de dades