Wie kommt es, dass der Unix-Befehl „locate“ immer noch Dateien/Ordner anzeigt, die nicht mehr vorhanden sind?
Frage
Ich habe kürzlich meinen gesamten lokalen Webentwicklungsbereich auf die Verwendung von MacPorts-Inhalten umgestellt, anstatt MAMP auf meinem Mac zu verwenden.Ich habe mich mit Python/Django beschäftigt und brauchte MAMP nicht mehr wirklich.
Die Sache ist die, ich habe MAMP aus dem Anwendungsordner deinstalliert, auch mit der Einstellungsdatei, aber wie kommt es, dass, wenn ich den Befehl „locate MAMP“ im Terminal ausführe, immer noch alle meine /Applications/MAMP/-Inhalte angezeigt werden, als ob alles noch da wäre? ?Und wenn ich 'cd
' in /Applications/MAMP/ existiert es nicht?
Hat das etwas damit zu tun, dass „locate“ eine Art Indexsuchsystem ist und diese alten Dateipfade daher zwischengespeichert werden?Bitte erläutern Sie den Grund und wie Sie die Einträge sortieren können, damit sie nicht mehr angezeigt werden.
Lösung
Sie haben die richtige Idee: locate
verwendet eine Datenbank mit dem Namen ‚locatedb
‘. Es wird normalerweise durch das System Cronjobs (nicht sicher, welche auf OS X) aktualisiert; Sie können ein Update mit dem updatedb
Befehl erzwingen. Siehe http://linux-sxs.org/utilities/updatedb.html unter anderem .
Auch wenn Sie nicht finden Sie Dateien, die Sie erwarten, dass diese wichtige Einschränkung Abschnitt von der BUGS von OSX beachten,‘ orten (1) Mann-Seite:
The locate database is typically built by user ''nobody'' and the
locate.updatedb(8) utility skips directories which are not readable
for user ''nobody'', group ''nobody'', or world. For example, if your
HOME directory is not world-readable, none of your files are in the database.
Andere Tipps
Die anderen Antworten bezüglich der Notwendigkeit, die Ortungsdatenbank zu aktualisieren, sind richtig.Ich habe diesen Alias, um meine Lokalisierungsdatenbank zu aktualisieren:
alias update_locate='sudo /usr/libexec/locate.updatedb'
Seitdem ich es gefunden habe, nutze ich „locate“ eigentlich nicht mehr so oft mdfind.Es verwendet den Spotlight-Dateiindex, den OSX im Vergleich zum „locatedb“ viel besser auf dem neuesten Stand halten kann.Es verfügt außerdem über deutlich mehr Möglichkeiten bei der Suche über die Befehlszeile.
Ja, die lokalisieren Befehl sucht über einen Index, deshalb ist es ziemlich schnell ist. Der Index wird von dem updatedb Befehl erzeugt, die in der Regel als nächtliches ausgeführt oder wöchentlich Job.
So aktualisieren Sie es manuell, führen Sie einfach updatedb .
Nach der Manpage, seine Datenbank einmal pro Woche aktualisiert wird:
NAME
locate.updatedb -- update locate database
SYNOPSIS
/usr/libexec/locate.updatedb
DESCRIPTION
The locate.updatedb utility updates the database used by locate(1). It is typically run once a week by
the /etc/periodic/weekly/310.locate script.
Werfen Sie einen Blick auf den Mann Seite finden
http://unixhelp.ed.ac.uk/CGI / Mann-cgi? orten + 1
Sie werden sehen, dass Durchsuchungen eine Datenbank finden, nicht Ihre tatsächlichen Dateisystem. Sie können diese Datenbank aktualisieren, indem Sie den Befehl updatedb.
Auch, weil es sich um eine Datenbank ist, wenn Sie es regelmäßig aktualisiere, suchen wouln't Dateien, die im Dateisystem sind die in der Datenbank sorglosen.