¿Hay alguna forma de usar el comando update para ubicar archivos en OS X sin tener que ejecutar updatedb manualmente?

1

Estoy considerando usar un alias para localizar, ya que me resulta muy incómodo tener que ejecutar updatedb tan a menudo en mac.

¿Tienes alguna idea o soluciones para esto?

    
pregunta sorin 19.02.2016 - 13:31

3 respuestas

4

Si desea ubicar para actualizar con mayor frecuencia, debe modificar el archivo /System/Library/LaunchDaemons/com.apple.locate.plist .

Específicamente, desea buscar la sección <key>StartCalendarInterval</key> y modificarla según sus especificaciones. De forma predeterminada, la localización está configurada para actualizarse a las 3:15 am cada sábado (el domingo es el primer día que comienza 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>

Esto funciona como cron, por lo que puede especificar un asterisco si lo desea, por ejemplo, para ejecutarlo todos los días. Simplemente cambia el 6 a y * y se ejecutará a las 3:15 todos los días.

Una forma más fácil de hacer esto si desea que se ejecute en un intervalo establecido, por ejemplo, cada 3 horas, puede usar la directiva StartInterval <integer> . Entonces, para que su tarea se ejecute cada tres horas, inserte la siguiente directiva en el archivo plist:

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

El número entero es el número de segundos. Entonces, 60 segundos en un minuto, 60 minutos en una hora y así sucesivamente.

No olvides eliminar la directiva StartCalendarInterval .

Por último, pero definitivamente no menos importante ... haga una copia de seguridad de su archivo .plist antes de modificarlo. De esta manera, si manejas las cosas, tienes una buena configuración a la que recurrir.

Nota: para que estos cambios funcionen en OS X El Capitan, debe desactivar la Protección de integridad del sistema (SIP) de OS X. SOLO puede hacerlo usando csrutil en el Modo de recuperación del sistema.

Arranque Mac en la Recuperación del Sistema presionando Comando + R .

Usando Terminal, ingrese csrutil disable

Deberías ver lo siguiente: Successfully disabled System Integrity Protection. Please restart machine for changes to take effect.

Reiniciar.

locate debería actualizarse según su programación.

Descargo de responsabilidad: Este no es un procedimiento recomendado. Si bien esta respuesta aborda la pregunta técnicamente, no cubre el "¿Por qué es necesario para ¿Deseas modificar el programa updatedb? ".

    
respondido por el Allan 19.02.2016 - 14:55
0

Localizar siempre consulta una base de datos que está desactualizada, actualizada periódicamente o que no se creó en primer lugar de forma predeterminada.

En OS X, sería mejor utilizar mdfind , que utiliza la base de datos de Spotlight y se actualiza constantemente. Incluso puede iniciar una consulta en vivo mdfind y cuando otro proceso cree un archivo que coincida con sus criterios de búsqueda, el resultado llegará casi al instante.

Cambiar su alias para usar mdfind en lugar de locate le permite evitar las limitaciones de diseño de locate y el comando find que usa para rastrear el sistema de archivos.

    
respondido por el bmike 19.02.2016 - 15:03
0
La base de datos de

locate se actualiza de forma predeterminada solo semanalmente. Cambiar su programa requiere deshabilitar el SIP, como ya se explicó, lo que significa deshabilitar los mecanismos de seguridad puestos allí para su protección. No recomendado. Además, locate parece encontrar solo archivos "públicos", por lo tanto, no los archivos que se encuentran en el directorio principal.

mdfind solo buscará cosas que encuentre una búsqueda de Spotlight. Por ejemplo, parece faltar archivos dentro de los paquetes de archivos. Y está en algún lugar entre inconveniente, impreciso e inútil si solo desea buscar en función de los nombres de archivo.

La última opción, pero clásica, es usar el comando find en la terminal. Tiene muchas opciones, así que mejor compruebe man find . Pero el uso básico de localización es simple: find <root directory for search> -iname <filename_with_wildcards> . Probablemente será lento (dependiendo de qué tan grande es la parte del árbol del sistema de archivos en el que está buscando), pero le muestra el estado actual del sistema de archivos, tal como lo ve el usuario actual. Entonces, ejecútelo con sudo y buscará todos los archivos en el sistema.

Y si desea buscar sin bajar al nivel de la Terminal, puede probar el software gratuito EasyFind por las Tecnologías de Devon . Funciona bien.

    
respondido por el hmijail 29.06.2016 - 16:07

Lea otras preguntas en las etiquetas