¿Hay alguna manera de mantener fijo el tamaño del archivo de registro sin rotarlo por un nuevo archivo vacío y eliminar (o archivar) el archivo antiguo? Por ejemplo, si configuro el tamaño máximo del archivo de registro en 1 MB, después de que el tamaño del archivo aumente más allá de ese límite, se bloqueará automáticamente, el texto se agregará en 'cola' y la parte más antigua del texto se extraerá para mantener el tamaño del archivo 1 MB .
13
rm -f *.tar.gz.*
Respuestas:
Podrías escribir un pequeño script bash para hacer esto. Simplemente ajuste el archivo a un cierto recuento de bytes usando
tail -c
y sobrescriba el archivo.de
man tail
:fuente
Su única solución puede ser escribir su propio sistema de archivos de espacio de usuario o contribuir a uno existente. Mire la lista parcial en el sistema de archivos en el espacio de usuario
Si no tiene las habilidades para contribuir, ofrezca una publicidad del proyecto o $$$ o ambos, para agregarlo por usted.
Desearía tener el tiempo para hacerlo, siempre he querido algo exactamente como esto.
fuente
Puede hacer algo similar con un FIFO, que es como un archivo de tamaño de cero bytes.
Sin embargo, tenga en cuenta que si nada está LEYENDO desde este archivo, entonces el proceso de syslog puede bloquearse y dejará de escribir en TODOS sus archivos de registro. No estoy seguro de si este comportamiento ha cambiado con las versiones más nuevas de Ubuntu / CentOS.
Un ejemplo aqui
Para otro ejemplo, intente algo como esto.
Haz tu FIFO:
Y agregue esto a (r) syslog.conf, luego reinicie syslog:
Luego vea el FIFO desde una ventana:
Y en otra ventana, envíe algunas cosas a syslog:
Debería ver las líneas "Prueba *" en la salida de
cat
arriba.Esta característica puede ser excelente para la depuración, especialmente si no le importa mantener los datos por más tiempo. Por ejemplo, si solo desea ver todo, excepto el spam de firewall, puede hacer algo como esto:
fuente
Aquí está mi segunda respuesta. Este es un muy hackish.
Use watch (1) para ejecutar repetidamente
tail --bytes=1024
(los últimos 1024 bytes del archivo de registro, gracias a @jjclarkson por esa respuesta).Y luego ver el archivo con:
La diferencia entre
watch
y un ciclo while es quewatch
solo actualizará /tmp/messages.watch si hubo cambios en / var / log / messages.Y bueno, supongo que podría poner un
test
bucle while para que la cola solo se ejecute si se actualizó / var / log / messages, pero no lo entenderé ahora.fuente
https://groups.google.com/group/mod.sources/browse_thread/thread/b2136b3ab7e924e/f785b37c218bb576?hl=en&ie=UTF-8&q=prune+log+file&pli=1
Muchos demonios (¿la mayoría? ¿Todos?) Volverán a abrir sus archivos de registro si se les envía una señal HUP (por ejemplo, por el mismo trabajo cron que ejecuta podar)
fuente
Estoy seguro de que el póster original ha encontrado una solución después de 8 años. Aquí hay otro para otros que pueden leer este hilo ...
la limitación limita el tamaño de la salida de un programa y conserva los últimos 200 MB de salida con el siguiente comando:
run_program | curtail -s 200M myprogram.log
https://github.com/Comcast/Infinite-File-Curtailer
fuente