Mi secuencia de comandos bash produce un archivo de registro. Ahora me gustaría implementar algo de rotación de archivos de registro.
Digamos que la primera vez que se llama somelog.log, la próxima vez que se cambió el nombre a somelog.log.1 y el nuevo archivo de registro somelog.log.
La tercera vez que el nuevo registro es somelog.log de nuevo, pero somelog.log.1 se cambia el nombre a somelog.log.2 y el viejo somelog.log a somelog.log.1.
yo sería capaz de conceder un máximo de 5.
por ejemplo
¿Este hecho antes (script de ejemplo), cualquier sugerencia. Agradezco cualquier consejo.Giro del archivo de registro del script de Bash
7
A
Respuesta
2
Pruebe esta función bash, que toma dos parámetros:
- número de megabytes máximo del archivo debe superar para ser girado (de lo contrario se deja sin tocar)
- ruta completa del nombre de archivo.
fuente:
function rotate() {
# minimum file size to rotate in MBi:
local MB="$1"
# filename to rotate (full path)
local F="$2"
local msize="$((1024*1024*${MB}))"
test -e "$F" || return 2
local D="$(dirname "$F")"
local E=${F##*.}
local B="$(basename "$F" ."$E")"
local s=
echo "rotate msize=$msize file=$F -> $D | $B | $E"
if [ "$(stat --printf %s "$F")" -ge $msize ] ; then
for i in 8 9 7 6 5 4 3 2 1 0; do
s="$D/$B-$i.$E"
test -e "$s" && mv $s "$D/$B-$((i+1)).$E"
# emtpy command is need to avoid exit iteration if test fails:
:;
done &&
mv $F $D/$B-0.$E
else
echo "rotate skip: $F < $msize, skip"
fi
return $?
}
0
que acabo de hacer un script bash para ello: https://github.com/lingtalfi/logrotator
Básicamente comprueba el tamaño de su archivo de registro, y si supera un umbral arbitrario, se copia el archivo de registro en un directorio de registro.
Es Cron amable, o se puede utilizar de forma manual también.
Un comando típico se parece a lo siguiente:
> ./logrotator.sh -f private/log -m {fileName}.{datetime}.txt -v
Cuestiones relacionadas
- 1. Registro de Python solo registro del script
- 2. Archivo de registro de script Bash para mostrar continuamente
- 3. Salida JSON del script Bash
- 4. Recuperar script de texto plano del script bash compilado
- 5. Cómo pasar variables del script de Python al script bash
- 6. Script Bash: uso del comando "script" de un script bash para iniciar sesión
- 7. línea de ejecución del archivo en bash
- 8. Determinar la ruta del script BASH ejecutar
- 9. Eliminación del argumento final script bash
- 10. bash: pasando los argumentos del script
- 11. Detectar clics del mouse en script bash
- 12. ¿Cómo sé el nombre del archivo de script en un script Bash?
- 13. bash filepath al directorio principal del archivo
- 14. Bash Script - Leer archivo binario
- 15. Crecimiento del archivo de registro de MongoDB
- 16. Sintaxis del bash de Bash
- 17. saliendo de registro de git desde un script bash
- 18. Bash Script para Push/Pull del repositorio privado de Git?
- 19. Script Bash para probar automáticamente la salida del programa - C
- 20. ¿Cómo leer usando "leer" del descriptor de archivo 3 en el script bash?
- 21. bash - ¿Obtener mtime del archivo específico?
- 22. En un script bash, ¿cómo saneo la entrada del usuario?
- 23. Salida automática del script bash shell en el error
- 24. BASH cómo ejecutar un comando en la terminación del script?
- 25. Pase los parámetros del script bash a subprocesar sin cambios
- 26. Bash Script, Terminar proceso tirando de archivo PID
- 27. Script bash de autodejección
- 28. Cómo pasar argumentos de variable del script bash al script python
- 29. Bash: eliminar según la fecha del archivo sello
- 30. Script Bash para editar el campo CFBundleVersion del archivo PROJECT-Info.plist
hombre [logrotate] (http://linux.die.net/man/8/logrotate)? –
Ya respondieron. [Aquí] [1] [1]: http://stackoverflow.com/questions/3690936/change-file-name-suffixes-using-sed/3691279#3691279 –