FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

locate [Linux]

locate [Linux] 2005-07-14 19:38
Piioo
hi,
ich hab das Problem, dass "locate" dem neustart nicht mehr geht. Dass heisst ich muss wieder unte su "updatedb" ausführen. Weis Jemand, wieso es so ist und wie man es beheben kann?

(SuSE 9.0 2.6 Kernel)

Re: locate [Linux] 2005-07-15 00:06
UncleOwen
Was heisst "nicht mehr geht"?

Re: locate [Linux] 2005-07-15 01:02
Wolf
locate wird afaik konfiguriert in /etc/sysconfig/locate. Schau mal nach, ob da vielleicht so Sachen wie RUN_UPDATEDB falsch eingestellt sind.

RUN_UPDATEDB wird z.B. von cron-Jobs benutzt, um zu schauen, ob sie updatedb starten sollen. Zum Beispiel von /etc/cron.daily/updatedb. [img]http://www.fb18.de/gfx/24.gif[/img]

Viel Glück…

Re: locate [Linux] 2005-07-15 03:26
Piioo
ich schau mal nach, aber das komische ist, locate garnix mehr findet, so als wenn die db wieder leer wäre…wird die den geleert nach dem neustart?

nun in locate steht, dass die db aufgefrischt werden soll und zwar unter dem account "nobody":
RUN_UPDATEDB=yes
RUN_UPDATEDB_AS=nobody

und /etc/cron.daily/updatedb ist auch vorhanden…..vielleicht sollte ich es als root starten

(ich glaube ich hab mal was mit cron gemacht, ka ob der noch richtig funktioniert, kann man den irgendwie zurücksetzen oder etwas ähnliches?)

Re: locate [Linux] 2005-07-15 05:24
Wolf
ich schau mal nach, aber das komische ist, locate garnix mehr findet, so als wenn die db wieder leer wäre…wird die den geleert nach dem neustart?
man locate:
The file name databases contain lists of files that were on
the system when the databases were last updated.
man locatedb:
Normally, file name databases are updated by running the updatedb program periodically, typically nightly.
Also normalerweise nicht. Sonst würde es auch keinen Sinn machen, einen daily-Job daraus zu machen..
Könnte sein, dass der Pfad, in dem die db ist, beim Neustart gelöscht wird. Aber das ist unüblich, s.o.
nun in locate steht, dass die db aufgefrischt werden soll und zwar unter dem account "nobody":
RUN_UPDATEDB=yes
RUN_UPDATEDB_AS=nobody
Ich bin mir nicht sicher, aber RUN_UPDATEDB_AS=root sollte nicht allzu falsch sein, vor Allem, da ja /usr/sbin/cron eh von root beim Startup gestartet wird.
und /etc/cron.daily/updatedb ist auch vorhanden…..vielleicht sollte ich es als root starten
Da cron.daily-Jobs eh von cron und damit mit root-Rechten gestartet werden, tust Du das schon.
(ich glaube ich hab mal was mit cron gemacht, ka ob der noch richtig funktioniert, kann man den irgendwie zurücksetzen oder etwas ähnliches?)
Na ja, kommt drauf an, was Du gemacht hast.
Es gibt aber nicht so etwas wie
wolf@mokrates:~$ /usr/sbin/cron --revert-to-default Solch eine Option stellt jedoch Dein Paketinstallationsprogramm mit Sicherheit bereit. Lies die Doku.
Auch eine Neuinstallation stellt die defaults wieder her. Jedoch würd ich an Deiner Stelle erst _alles mögliche Andere_ versuchen.

Übrigens:
You can also use the environment variable LOCATE_PATH to set the list of database files to search.
Die solltest Du mal überprüfen.

Normalerweise kooperieren cron-Jobs auch mit syslogd, d.h., Du solltest in /var/log/syslog* etwas Information zur Ausführung Deiner cron-Jobs finden.

Mehr fällt mir nicht mehr ein.. Schau doch mal, ob Du in einschlägigen Linuxforen / IRC-Channels Hilfe findest.

Re: locate [Linux] 2005-07-17 18:44
Anonymer User
also, seit einer weile wird bei suse der locate nicht mehr standardmässig installiert. d.h. in der yast nach locate suchen und installieren. frage wäre also kommt der von suse oder sonstwoher?

updatedb wird (bei suse) generell um null uhr gestarted, oder wenn der load an dem tag für eine weile niedrig ist und er noch nicht ausgeführt wurde (z.b. weil der rechner erst um 0:01 eingeschaltet wurde).
wenn updatedb nicht von root ausgeführt wird gibt es eine nicht so grosse datenbank, aber kein sicherheitsleck. wenn nobody irgendwie so gar keine rechte hat, ist die datenbank leer.

Dann is'
RUN_UPDATEDB_AS=root
eine hilfreiche idee.

wenn die datenbank mit root rechten gleich gebraucht wird:
shell> sudo updatedb

die datenbank wird jedes mal von updatedb neu erstellt und bevor der nicht mindestens einmal gelaufen ist gibt's halt keine.

greetz,
zx81.


P.S.:was meint eigentlich neustart, die ganze geschichte geht den kernel wenig an, den cron-dämonen neu starten oder im ernst den rechner?

Re: locate [Linux] 2005-07-18 15:15
Piioo
ich hab nun erstmal root eingestellt und schau nach ob es funktioniert…

ich glaube ich weis was passiert ist:

nobody hat wahrscheinlich keine Rechte bei mir, somit kann er die DB nicht aktualizieren.
Wenn ich updatedb selbst ausgeführt habe, wurde die DB aktualiziert. Nachdem aber der Cronprozess mit nobody updatedb ausgeführt hat, wurde einfach die DB mit "nichts" überschrieben, da nobody keine Rechte hat und somit "nichts" fand….

mal sehen ob es stimmt
=> stimmt