¿Cómo puedo monitorear el tamaño de un archivo?

1

Ejecuto un proyecto particular de código abierto abandonado (StreamBaby) en mi servidor de medios doméstico, un Mac Mini. Es impresionante, pero tiene un problema desafortunado que ocasionalmente hace que la aplicación genere un registro de errores absolutamente masivo, como en el orden de muchas decenas de gigabytes. A veces, cuando me doy cuenta, es más de 100 GB. Todo lo que tengo que hacer es eliminarlo, reiniciar el servicio y todo está bien, pero obviamente pueden surgir problemas si la unidad se queda sin espacio debido a esto.

Me gustaría monitorear este archivo y cada vez que tenga más de 10 MB, avisarme de alguna manera (señal sonora, enviar un correo electrónico, enviar una alerta ... algo). He encontrado servicios que supervisarán si el tamaño de un archivo ha cambiado, pero necesito monitorearlo para un tamaño específico.

¿Se puede hacer esto a través de Automator, AppleScript o algún otro medio?

    
pregunta Jonathan van Clute 13.09.2015 - 06:00

3 respuestas

1

Desde symlinking no Si trabajas , puedes usar un cronjob para borrar el archivo de vez en cuando.

Para eso necesitarás la Terminal. Si no está familiarizado, aquí hay una introducción .

Use el siguiente comando para abrir el archivo crontab (solo llame a crontab -e si desea usar vim en su lugar):

EDITOR=nano crontab -e

Inserte lo siguiente y guarde el archivo (con Ctrl-X - > y - > ingresar). Debe cambiar el archivo al archivo de registro

0 */1 * * * > "/Users/chaos/Library/Logs/SomeLog.log"

Déjame explicarte: 0 */1 * * * significa que cada hora completa se ejecutará el comando (a menos que se desactive, por supuesto). Consulte wikipedia para obtener más información.

El comando que se está ejecutando básicamente dice "no redirigir nada al archivo", truncándolo efectivamente a 0 bytes. Puedes reconocerlo desde echo something > somefile.log .

FYI: el daemon cron se iniciará automáticamente con launchd si existe un archivo cron.

    
respondido por el 2called-chaos 13.09.2015 - 14:56
1

Si no necesita realmente el contenido del archivo, puede vincularlo a /dev/null , lo que significa que todo lo escrito en el archivo desaparecerá de inmediato. Para hacerlo

  • salir de la aplicación
  • rm /path/to/logfile
  • ln -s /dev/null /path/to/logfile
respondido por el nohillside 13.09.2015 - 06:41
0

Resulta que, si bien será un poco complicado monitorear el archivo en cuestión para eliminarlo solo cuando sea necesario, en Automator es trivial simplemente abandonar el servicio en ejecución, eliminar el archivo de registro y volver a iniciar el servicio. Entonces, simplemente puedo ejecutar este trabajo todos los días a las 4 am, cuando es probable que nadie esté mirando nada desde cualquiera de los servidores, y las cosas deberían estar bien. Gracias, @patrix, @ 2called-chaos y @mark por, en última instancia, todos me llevan a esta solución.

    
respondido por el Jonathan van Clute 13.09.2015 - 20:14

Lea otras preguntas en las etiquetas