Esiste un modo per utilizzare il comando di aggiornamento per individuare i file su OS X senza dover eseguire updatedb manualmente?

1

Sto pensando di usare un alias per localizzare, dato che trovo davvero scomodo dover eseguire updatedb così spesso su mac.

Hai qualche idea o soluzione alternativa per questo?

    
posta sorin 19.02.2016 - 13:31
fonte

3 risposte

4

Se desideri che vengano aggiornati più frequentemente, devi modificare il file /System/Library/LaunchDaemons/com.apple.locate.plist .

In particolare, vuoi trovare la sezione <key>StartCalendarInterval</key> e modificarla secondo le tue specifiche. Per impostazione predefinita, locate è configurato per l'aggiornamento alle 3:15 del mattino ogni sabato (la domenica è il primo giorno che inizia con 0).

<key>StartCalendarInterval</key>
        <dict>
                <key>Hour</key>
                <integer>3</integer>
                <key>Minute</key>
                <integer>15</integer>
                <key>Weekday</key>
                <integer>6</integer>
        </dict>

Funziona come cron, quindi puoi specificare un asterisco se lo desideri, ad esempio per eseguirlo ogni giorno. Cambia semplicemente 6 in e * e verrà eseguito ogni giorno alle 3:15.

Un modo più semplice per farlo se vuoi che venga eseguito a intervalli regolari, ad esempio ogni 3 ore, puoi utilizzare la direttiva StartInterval <integer> . Pertanto, affinché l'attività venga eseguita ogni tre ore, inserire la seguente direttiva nel file plist:

<key StartInterval</key>
   <integer>108000</integer>

Il numero intero è il numero di secondi. Quindi, 60 secondi in un minuto, 60 minuti in un'ora e così via.

Non dimenticare di rimuovere la direttiva StartCalendarInterval .

Ultimo, ma sicuramente non meno importante ... crea una copia di backup del tuo file .plist prima di modificarlo. In questo modo, se fai un po 'di movimento, hai una buona configurazione da utilizzare.

Nota: per fare in modo che queste modifiche funzionino sotto OS X El Capitan, è necessario disabilitare la System Integrity Protection (SIP) di OS X. Puoi farlo SOLO utilizzando csrutil in Modalità ripristino di sistema.

Avvia Mac in Ripristino del sistema tenendo premuto Comando + R .

Usando Terminale, inserisci csrutil disable

Dovresti vedere quanto segue: Successfully disabled System Integrity Protection. Please restart machine for changes to take effect.

Reboot.

locate ora dovrebbe essere aggiornato in base alla tua pianificazione.

Dichiarazione di non responsabilità: Questa non è una procedura consigliata. Sebbene questa risposta risolva tecnicamente la domanda, non copre "Perché è necessario modificare la pianificazione aggiornata? " domanda.

    
risposta data 19.02.2016 - 14:55
fonte
0

Locate consulta sempre un database che è scaduto, periodicamente aggiornato o non creato in primo luogo per impostazione predefinita.

Su OS X, è meglio usare mdfind che utilizza il database Spotlight e viene aggiornato costantemente. Puoi persino avviare una query mdfind live e quando un altro processo crea un file che corrisponde ai tuoi criteri di ricerca, il risultato arriverà quasi all'istante.

Cambiare il tuo alias per usare mdfind invece di locate ti consente di aggirare le limitazioni di design di locate e il comando find che usa per eseguire la scansione del filesystem.

    
risposta data 19.02.2016 - 15:03
fonte
0
Il database

locate è di default aggiornato solo settimanalmente. Cambiando il suo programma è necessario disabilitare SIP, come già spiegato, il che significa disabilitare i meccanismi di sicurezza messi lì per la vostra protezione. Non consigliato. Inoltre, locate sembra trovare solo file "pubblici", quindi non i file nella tua directory home.

mdfind troverà invece solo le cose trovate da una ricerca Spotlight. Ad esempio, sembra mancare i file all'interno dei bundle di file. Ed è a metà strada tra l'inconveniente, l'impreciso e l'inutile se vuoi solo trovarlo in base ai nomi dei file.

L'ultima opzione, ma classica, è usare il comando find nel terminale. Ha molte opzioni, quindi controlla meglio man find . Ma l'utilizzo di base simile a quello di localizzazione è semplice: find <root directory for search> -iname <filename_with_wildcards> . Sarà probabilmente lento (dipende da quanto è grande la parte dell'albero del filesystem in cui stai cercando), ma ti mostra lo stato attuale del filesystem, come visto dall'utente corrente. Quindi eseguilo con sudo e cercherai tutti i file nel sistema.

E se vuoi trovarlo senza scendere al livello Terminal, puoi provare il freeware EasyFind di Devon Techonologies . Funziona bene.

    
risposta data 29.06.2016 - 16:07
fonte

Leggi altre domande sui tag