2009-06-29 30 views
8

Niedawno przeniosłem cały obszar programowania lokalnego na MacPorts zamiast używać MAMP na moim Macu. Dostaję się do Python/Django i nie potrzebuję więcej MAMP.W jaki sposób komenda unix locate nadal pokazuje pliki/foldery, których już nie ma?

Chodzi o to, że odinstalowałem MAMP z folderu Aplikacje, również z pliku preferencji, ale jak to się stało, że po uruchomieniu polecenia "znajdź MAMP" w Terminalu nadal widać wszystkie moje/Applications/MAMP/stuff, jakby to wszystko wciąż tam jest? A kiedy "cd" w/Applications/MAMP/to nie istnieje?

Coś związanego z lokalizacją jest rodzajem systemu indeksowania, stąd rzeczy, które te stare pliki są buforowane? Wyjaśnij, dlaczego i jak go posortować, aby już się nie wyświetlały.

Odpowiedz

8

Masz dobry pomysł: locate używa bazy danych o nazwie "locatedb". Jest zwykle aktualizowany przez zadania systemowe cron (nie wiesz, który z OS X); można wymusić aktualizację za pomocą komendy updatedb. Zobacz między innymi http://linux-sxs.org/utilities/updatedb.html.


Ponadto, jeśli ty nie znaleźć pliki, które można spodziewać się należy pamiętać, to ważne zastrzeżenie z sekcji bugów osx”locate(1) roboczogodziny stronie:

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.

+0

Z tego samego powodu lokalizowanie nie pokazuje ostatnio utworzonych plików - żadne pliki utworzone od ostatniej aktualizacjib nie są widoczne w lokalizacji. –

+0

Na OSX 10.10, system cron, który aktualizuje db, to '/ System/Library/LaunchDaemons/com.apple.locate.plist' –

+0

Ponadto, jeśli * nie * znajduje plików, które oczekujesz, zwróć uwagę na to ważne zastrzeżenie z BŁĘDÓW sekcja OSX "[zlokalizuj (1)] (http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/locate.1.html) strona man:' Baza danych lokalizacji jest zwykle budowany przez użytkownika '' nobody '', a narzędzie locate.updatedb (8) pomija katalogi, których nie można odczytać dla użytkownika "nikt", grupa "" nikt "lub świat. Na przykład, jeśli twój katalog DOM nie jest czytelny dla świata, żaden z twoich plików nie znajduje się w bazie danych. " –

0

Rzeczywiście zlokalizuj polecenie przeszukując indeks, dlatego jest dość szybki. Indeks jest generowany przez komendę updatedb, która zazwyczaj jest uruchamiana jako nocna lub praca tygodniowa.

Aby zaktualizować je ręcznie, po prostu uruchom updatedb.

0

Według strony człowieka, jego baza danych jest aktualizowana raz w tygodniu:

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

Spójrz na stronie zlokalizować człowieka

http://unixhelp.ed.ac.uk/CGI/man-cgi?locate+1

Zobaczysz, że zlokalizować przeszukuje baza danych, a nie twój aktualny system plików. Możesz zaktualizować bazę danych za pomocą polecenia updatedb.

Ponadto, ponieważ jest to baza danych, o ile nie aktualizujesz jej regularnie, zlokalizuj, nie znajduj plików znajdujących się w systemie plików, które nie znajdują się w bazie danych.

6

Inne odpowiedzi dotyczą aktualizacji bazy danych lokalizacji. Mam ten alias zaktualizować zlokalizować DB:

alias update_locate='sudo /usr/libexec/locate.updatedb' 

I rzeczywiście nie używać zlokalizować aż tak dużo, że już teraz znalazłem mdfind. Używa indeksu pliku reflektorów, który OSX jest znacznie lepszy w utrzymaniu aktualności w porównaniu z lokalizacją. Ma również nieco więcej mocy w tym, co może przeszukiwać z wiersza poleceń.

+0

Trwa to wiecznie ... –