Home · Kontakt · Impressum
contents index previous up next
Next: 11.4 Disk Quotas Up: 11.3 Auf der Suche Previous: 11.3.1 find

Unterabschnitte


11.3.2 Suchen mit locate

Eine schneller Suchmöglichkeit als find ist der Befehl locate. Dieser stützt sich auf eine Datenbank und muß nicht wie find das Dateisystem direkt durchsuchen. Allerdings muß die Datenbank immer auf den aktuellsten Stand sein um auch die Dateien zu finden. Bei neueren SuSE-Versionen gehört der Befehl nicht mehr zur Standardinstallation. Bei der Suche nach Programmdateien ist oft der Befehl whereis schneller und der Befehl find ist weitaus mächtiger. Um den Befehl nutzen zu können, müssen Sie bei SuSE 9.0 das Paket findutils-locate installieren.


11.3.2.1 locate

Auf der Basis der Datenbank /var/lib/locatedb liefert locate die Position von Dateien im Verzeichnisbaum.
locate [DATEINAME]

Der Befehl locate XYZ ist wesentlich schneller als find / -name XYZ. Allerdings muß auch immer die Datenbank auf dem neuesten Stand sein. Die Anwendung ist sehr einfach, so zeigt der Befehl

locate "*.ps"
alle Dateien an, die mit ``.ps'' enden.


11.3.2.2 /var/lib/locatedb

Die Datei /var/lib/locatedb enthält eine Liste aller Dateien des Dateisystems zu einem bestimmten Zeitpunkt. Sie ist eine große Binärdatei, die Sie mit dem Befehl
od -c /var/lib/locatedb | less
betrachten können.

Mit dem Befehl updatedb wird die Datenbank auf den neuesten Stand gebracht.


11.3.2.3 updatedb

Das Kommando updatedb bringt die für locate wichtige Datenbank /var/lib/locatedb auf den neuesten Stand.
updatedb [OPTIONEN]

Optionen
--localpaths Die lokalen Verzeichnisse werden mit eingebunden
--netpaths Die Netzwerk-Verzeichnisse werden mit eingebunden
--prunepaths LISTE Liste der ausgeschlossenen Verzeichnisse
--output DATEI Name der Ausgabedatei
 

Für eine generelle Konfiguration des Befehls kann eine Datei updatedb.conf benutzt werden.

In vielen Distributionen wird das Update automatisch durch ein mit cron gestartetes Skript durchgeführt. Bei SuSE 9.0 ist das Skript updatedb im Verzeichnis /etc/cron.daily verantwortlich. Die Datei sieht in einer leicht gekürzten Version so aus.

 
enterprise:~ # cat /etc/cron.daily/updatedb
#!/bin/sh
...
# Copyright (c) 2003 SuSE Linux AG, Nuernberg, Germany.
# Author: Burchard Steinbild <bs@suse.de>, 1996
#         Florian La Roche <florian@suse.de>, 1996

# paranoia settings
umask 022

PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH

# get information from /etc/rc.config
if [ -f /etc/sysconfig/locate ] ; then
    . /etc/sysconfig/locate
fi

# update database for locate
if [ -n "$RUN_UPDATEDB" -a "$RUN_UPDATEDB" = "yes" -a \
     -x /usr/bin/updatedb ] ; then

    # avoid error messages from updatedb when using user nobody for find.
    cd /

    PARAMS="`test -n "$RUN_UPDATEDB_AS" && \
            fgrep localuser /usr/bin/updatedb > /dev/null && \
            echo --localuser=$RUN_UPDATEDB_AS`"

    PARAMS="$PARAMS `test -n "$UPDATEDB_PRUNEPATHS" && \
            echo --prunepaths=\'$(eval echo $UPDATEDB_PRUNEPATHS)\'`"

...

    eval nice -n 19 /usr/bin/updatedb $PARAMS 2> /dev/null
fi
exit 0


contents index previous up next
Next: 11.4 Disk Quotas Up: 11.3 Auf der Suche Previous: 11.3.1 find
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang