Respuestas:
#!/bin/bash
touch /script_logs/test.log
MaxFileSize=2048
while true
do
sh test.sh >> /script_logs/test.log
#Get size in bytes**
file_size=`du -b /script_logs/test.log | tr -s '\t' ' ' | cut -d' ' -f1`
if [ $file_size -gt $MaxFileSize ];then
timestamp=`date +%s`
mv /script_logs/test.log /script_logs/test.log.$timestamp
touch /script_logs/test.log
fi
done
He eliminado el "&", ya que puede causar un problema.
cp
y mv
, ¿puedo eliminar el archivo de registro, entonces será un nuevo archivo de registro con el mismo nombre? (Mi requisito es, si el archivo de registro alcanza cierto límite, quiero eliminar ese archivo de registro y luego crear un nuevo archivo )
>>
para agregar al archivo de registro, >
lo sobrescribirá una y otra vez.
>
, obtengo tail: test.log: file truncated Hello World!
... Si lo uso >>
, recibo el mensaje de registro correcto, pero el tamaño del archivo está aumentando. Sin condición comprobando la condición ... ;-(
¿ savelog
Qué hay de usar ?
Está disponible en Debian y RH y prácticamente en cualquier otra distribución de Linux que conozco. Es un script de shell / bin / sh, por lo que también debería ejecutarse en cualquier otro Unix.
por ejemplo, antes de escribir cualquier cosa para test.log
ejecutar savelog -n -c 7 test.log
. Esto mantendrá las 7 versiones no vacías más recientes de test.log. Por defecto, comprimirá los registros rotados (pero eso se puede desactivar con -l
).
Si lo necesita, puede verificar el tamaño test.log
y solo savelog
si supera un cierto tamaño.
/usr/bin/savelog
script de shell en sources.debian.net/src/debianutils/4.7
savelog
ninguno de mis cuadros RHEL / CentOS 5/6, así que lo descargué ad hoc y parece funcionar bien para mis necesidades.
savelog
es que cambia el nombre del archivo pero luego toma mucho tiempo descomprimir los viejos antes de terminar. Mientras tanto, el registro .0 ya recibe entradas para los próximos días. Idealmente, el tiempo entre la rotación del registro y la señalización del proceso para volver a abrir el registro debe ser mínimo. Desactivo savelog
la función de compresión debido a esto.
Escribí un logrotee este fin de semana. Probablemente no lo haría si hubiera leído la excelente respuesta demultilog
@ JdeBP .
Me centré en que fuera ligero y capaz de bzip2 sus fragmentos de salida como:
verbosecommand | logrotee \
--compress "bzip2 {}" --compress-suffix .bz2 \
/var/log/verbosecommand.log
Sin embargo, todavía hay mucho por hacer y probar.
Como todavía no puedo agregar comentarios a la respuesta aceptada , una sugerencia de BusyBox , donde du
no tiene una -b
bandera:
du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1