find locate updatedb

In questa lezione vedremo come effettuare delle ricerche per individuare determinati file o directory all’interno del nostro file system.
Per fare ciò Linux dispone di diversi comandi, in questa guida vedremo come funzionano e a cosa servono i tre principali.

Il modo più semplice e veloce per cercare file o directory ci è offerto dal comando locate che effettua ricerche sulla base del nome dei file. Il suo funzionamento è semplicissimo: è sufficiente accompagnare locate al termine che si vuole cercare. Il risultato sarà un elenco di file e directory che contengono nel loro nome e percorso la parola che si è cercato.

locate termine_da_cercare
Se, ad es., volessimo cercare nel nostro server tutti i file che hanno nel nome il termine “pippo”, useremo:
locate pippo
Locate è davvero velocissimo! Il perchè di questa velocità sta nel fatto che in realta il comando in questione non effettua una ricerca real-time tra i file della macchina, ma si limita a spulciare un apposito database contenente informazioni sui files presenti nella macchina in un dato momento. E’ pertanto importante tenere aggiornato questo database usando, di volta in vola, l’apposito comando, ovvero updatedb.
Altro comando utile è find che ci consente di ricercare file e directory in base al nome, alla data di creazione o alla sua dimensione.
Il comando find è molto potente… ma attenzione, talvolta è anche piuttosto lento!!!

Vediamo ora come usare find:

Se volessimo cercare in base al nome del file useremo l’opzione -name, in questo modo:

find /directory/dove/cercare/ -name termine_da_cercare
Se ad es. volessimo cercare in tutta la macchina tutti i file che hanno nel nome il termine “pippo” (come abbiamo fatto con locate), useremo:
find / -name pippo
Se volessimo cercare in base alla data di creazione del file useremo l’opzione -ctime seguita dall’età (espressa in giorni) del file da cercare.
find /directory/dove/cercare/ -ctime età_in_giorni
Se ad es. volessimo cercare nella directory /home/web/miosito/ un file creato 7 giorni fa useremo:
find /home/web/miosito/ -ctime 7
Se, per finire, volessimo cercare in base alla dimensione useremo l’opzione -size seguita dalla dimensione in K. Find restituirà tutti i file di dimensione uguale o superiore.
find /directory/dove/cercare/ -size dimensione_in_K
Se ad es. volessimo cercare nella directory /home/web/miosito/fotografie/ tutti i file con dimensione uguale o maggiore di 100 K scriveremo:
find /home/web/miosito/fotografie/ -size 100

‘locate’ e ‘updatedb’ sono i primi a cercare l’esistenza di qualsiasi file su un sistema Linux.

Per funzionare in modo efficiente, “locate” utilizza un database anziché cercare i singoli percorsi di directory.

Affinché funzioni e rimanga aggiornato, significa che il database stesso deve essere aggiornato.

Per fare ciò, viene richiamato ‘updatedb’.

Puoi invocare updatedb manualmente ogni volta che ne hai voglia. Tuttavia, è abbastanza normale, per questo binario essere eseguito in un cron. Cron.daily alle 5 del mattino per essere esatti.

Le due domande di fondo che chiederete è
‘come faccio a cambiare ciò che è incluso / escluso “, e
“come faccio a impostare il tempo in cui questo viene aggiornato.

Ciò che interessa è /etc/cron.d/Daily/50update-locatedb

Questo è un soft link al comune pool di script di cron in /etc/cron.d/lib Il ’50’ dice al processo cron in background l’ordine in cui eseguire questo e altri script trovati nella stessa directory. Tutti gli “oggetti” trovati nella directory quotidiana vengono eseguiti ogni giorno alla stessa ora. (vedi sotto)

Non preoccupatevi troppo di ciò che i collegamenti software sono, in sostanza, questo meccanicismo è un “modo Linux di fare le cose”. Un pool di script comuni viene mantenuto in una directory? Lib, e sono collegati a, da varie altre parti del file system Linux. In questo modo, le copie ridondanti dei file binari sono ridotte al minimo e solo uno script deve essere modificato per influenzare tutti i giocatori. In questo caso, di tutti gli script utilizzabili da cron, nella cron library, siamo interessati allo script update-locateb.

Mentre siamo in tema di librerie di cron, non essere troppo impressionato dal nome. Non è solo per i guru, sono semplici script di shell bash che chiunque, tu ed io, possiamo scrivere.

Quando viene richiamato l’aggiornamento?

5:05 a ogni mattina.

Come lo cambio?

Modifica / etc / crontab

cambia il tempo di script giornaliero in qualcosa di diverso da 55 5, OR

modifica la voce hash out per updatedb in modo che venga eseguita separatamente ogni volta che vuoi.

Vedi cron per la spiegazione di questo file

quali directory vengono incluse?

TUTTI i file system montati, inclusi dos, _if_ montati.

Come posso escludere alcune cartelle?

modifica /etc/cron.d/update-locatedb