locate findet nicht alles

F

francwalter

Aktives Mitglied
Thread Starter
Dabei seit
25.04.2008
Beiträge
950
Reaktionspunkte
39
Hallo

ich verwende auf meinem MacBook mit OS 10.6.8 schon seit langem den nützlichen Terminalbefehl "locate", mit dem man, nach der Erstellung einer DB mit "updatedb" (als root, also mit sudo) in Windeseile jede Datei mit Pfad auf dem System finden kann.

Ich weiß nicht, ob es erst seit neuestem ist, jedenfalls findet locate keine Dateien (mehr?) in meinen Userunterverzeichnissen.
Also z.B. in:

/Users/f/

werden noch alle Dateien gefunden, aber bereits in:

/Users/f/Documents/

wird nichts mehr gefunden, jedenfalls keine der Dateien die ich probiert habe.
Ich habe aber nichts eingeschränkt (mit prune in der Config o.ä.), also ich weiß nicht was die Ursache ist.
Die Berechtigungen sind auch nicht anders und die Verzeichnistiefe ist es auch nicht (in anderen Verzeichnissen wird viel tiefer gefunden).
Ich habe die Konfigurationsdatei auch gar nicht geändert.

Das ist mein Pfad:

Code:
echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/opt/X11/bin:/usr/local/git/bin:/usr/local/MacGPG2/bin:/usr/X11/bin

Was kann das sein?

Ich bin ratlos und finde nichts darüber im Netz.

Danke franc
 
das hat was mit den zugriffsrechten zu tun, updatedb läuft nur mit geringen zugriffsrechten und die verzeichnisse in deinem home sind nur für deinen user lesbar.
entweder musst du die verzeichnis leserechte erweitern oder halt updatedb mit höheren zugriffsrechten laufen lassen.
 
Ach so, ich verstehe, updatedb kommt nicht in das Verzeichnis rein, weil die Rechte auf 700 stehen.

Wie kann ich updatedb denn mit höheren Zugriffsrechten laufen lassen? Ich starte es ja schon mit sudo (ohne geht es ja auch nicht).
 
auch wenn du es mit sudo startest, werden die rechte auch nobody zurück gesetzt....
stört dich was an spotlight, so dass du locate nutzt?
 
Wie kann ich denn dann verhindern, dass die Rechte auf nobody zurückgesetzt werden?
Ich bin der einzige Benutzer auf meinem MacBook.

Spotlight verwende ich nicht.
 
Gibt es einen Grund weswegen du locate nutzt? Ist es in irgendeiner Form besser als find?
 
Danke für den Link.

Wenn ich diesem updatedb-Skript statt 0 eine 1 setze geht es aber immer noch nicht.
Ich habe dann den Benutzer "nobody" dort gegen meinen Benutzernamen "f" getauscht und damit geht es.

Aber ich verstehe das Skript nicht, in diesem Skript:

/usr/libexec/locate.updatedb

steht eingangs ja:

Code:
if [ "$(id -u)" = "0" ]; then
        rc=0
        export FCODES=`mktemp -t updatedb`
        chown nobody $FCODES
        tmpdb=`su -fm nobody -c "$0"` || rc=1
        if [ $rc = 0 ]; then
                install -m 0444 -o nobody -g wheel $FCODES /var/db/locate.database
        fi
        rm $FCODES
        exit $rc
fi

Die Bedingung ([ "$(id -u)" = "0" ]) ist ja erfüllt, wenn die Benutzer-ID 0 ist, also bei root.
Wenn man da jetzt statt 0 eine 1 setzt, wird die Bedingung ja nicht erfüllt, aber was heißt das?

In der Folge wenigstens, dass locate die Dateien von f in Verzeichnissen mit 700 (von f) immer noch nicht lesen kann. Aber warum?
 
Gibt es einen Grund weswegen du locate nutzt? Ist es in irgendeiner Form besser als find?
Ungefähr 1 Milliarde mal schneller, das ist eigentlich aber auch schon der einzige Grund :)
 
Und was ist mit 'mdfind'?
 
  • Gefällt mir
Reaktionen: win2mac, francwalter und ProjectBuilder
Das ist übrigens das, was du in der GUI als Spotlight kennst. Solltest du Spotlight also "ausgeschalten" haben (durch das Deklarieren von allem als privat z.B.), dann findet das auch nichts.
 
Danke, super Tipp.
Spotlight funktioniert, habe gleich einen Link erstellt:

Code:
ln -s /usr/bin/mdfind /usr/sbin/spotlight

weil ich mir spotlight besser merken kann :)
 
auch wenn du es mit sudo startest, werden die rechte auch nobody zurück gesetzt....
stört dich was an spotlight, so dass du locate nutzt?

Gibt es einen Grund weswegen du locate nutzt? Ist es in irgendeiner Form besser als find?

... ich habe vor einigen Tagen nach "Installationsresten" von Paralleles und Hamachi gesucht ...
locate ... hat mir die Orte angezeigt ... Spotlight schwieg sich da aus .....
 
Spotlight indiziert afaik auch keine Systemörtchen wie /usr/local (oder zeigt dir nur die Ergebnisse nicht an? Hatte da mal vor längerer Zeit was gelesen, kann mich aber nicht mehr ganz erinnern), locate dagegen geht nicht in den Userordner. Find findet alles, aber da er keine Datenbank nutzt braucht es halt etwas.

Danke, super Tipp.
Spotlight funktioniert, habe gleich einen Link erstellt:

Code:
ln -s /usr/bin/mdfind /usr/sbin/spotlight

weil ich mir spotlight besser merken kann :)
Ein Alias ist hier mMn die sauberere Lösung.
alias spotlight=mdfind
 
  • Gefällt mir
Reaktionen: francwalter
Indiziert schon, zeigt aber nicht an, da für den modernen Endnutzer gedacht, den alles nur verwirrt. Die ganz normale Findersuche zeigt allerdings alles an, und da kann man auch bequem eingrenzen/auswählen, zig Kriterien angeben. Und sie basiert auf dem Spotlightindex.
 
Noch ein Tipp für 'GUI-Fans': Easyfind findet alles, und zwar wirklich alles ... Ich benutze das, wenn Spotlight versagt ... gibts im AppStore gratis.
 
Zurück
Oben Unten