GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay una forma adecuada de borrar los registros?

Solución 1:

Puedes usar:

> /var/log/mail.log

Eso truncará el registro sin que tengas que editar el archivo. También es una forma fiable de recuperar el espacio. A veces, las personas cometen el error de usar rm en el registro y luego recrean el nombre del archivo, si otro proceso tiene el archivo abierto, no recupera el espacio hasta que ese proceso cierra su control y puede estropear sus permisos.

Además, si está viendo el contenido del registro, puede usar el tail comando:

tail -f /var/log/mail.log

Ctrl-C romperá la cola.

Solución 2:

Sí, hay una forma adecuada:no borrar registros en absoluto. Tu giras a ellos. La rotación implica cambiar la salida del registro a un nuevo archivo, con el mismo nombre, con los N archivos de registro anteriores guardados en un conjunto de N nombres de archivo relacionados.

La forma en que uno rota los registros depende de cómo uno los escribe en primer lugar. Este es un punto que a menudo se pasa por alto. Algunas de las respuestas aquí lo tocan al menos, mencionando que algunos programas de registro mantienen un descriptor de archivo abierto para el archivo de registro, por lo que simplemente eliminar el archivo no liberará espacio, ni siquiera cambiará la salida a un archivo de registro nuevo.

Si el programa que escribe el archivo de registro es multilog del daemontools paquete, por ejemplo, entonces no hace nada para rotar los registros en absoluto, sin scripts manuales, sin cron trabajos. Simplemente dile a multilog esa salida de registro es a un directorio, y él mismo mantendrá un conjunto de N archivos de registro automáticamente rotados y limitados en tamaño en ese directorio.

Si el programa que escribe los archivos de registro es svlogd del runit paquete, para otro ejemplo, se aplica casi lo mismo. No hace nada aparte de apuntar la herramienta a un directorio. Mantendrá un conjunto de N archivos de registro automáticamente rotados y limitados por tamaño en ese directorio.

Si está utilizando rsyslog para escribir archivos de registro, se le puede indicar al programa de registro que se detenga después de que el archivo de registro alcance cierto tamaño y ejecute un script. Tiene que escribir la esencia del script, para cambiar el nombre del archivo de registro y eliminar los archivos de registro antiguos en función de las restricciones de tamaño total, pero al menos el programa de registro cerró el archivo y detuvo la escritura del registro mientras esto sucedía.

El antiguo syslogd forma de rotar registros, aún esperada por programas de registro como syslog-ng y como lo ejemplifican herramientas como logrotate mencionado por djangofan en otra respuesta aquí, es algo más casual. Uno ejecuta un cron trabajo que cambia periódicamente el nombre de los archivos de registro y reinicia el demonio de registro (utilizando cualquier supervisor de demonio bajo el que se esté ejecutando). El problema con esto, por supuesto, es que no impone un límite de tamaño general. En semanas lentas, uno puede obtener N archivos de registro diarios muy pequeños, mientras que en días ocupados puede obtener 1 archivo de registro muy grande que supera con creces el límite de tamaño.

Es por eso que más adelante y mejores herramientas como multilog y svlogd tienen opciones de configuración de tamaño de archivo y, por supuesto, comprueban los tamaños de los archivos de registro. El mundo ha aprendido que sondear los registros en un horario con cron trabajos, o incluso un logrotate daemon, deja ventanas para que el tamaño sea incorrecto, y que el lugar adecuado para tener estos controles, y así rigurosamente hacer cumplir los límites de tamaño definidos por el administrador para que los archivos de registro de uno nunca se traguen la partición en la que están, está en el programa que realmente está escribiendo los archivos en primer lugar.

Solución 3:

Puedes usar esto también..

truncate /opt/package/logs/*.log --size 0

Aquí todos los archivos de registro en /opt/package/logs quedarán vacíos..

Solución 4:

Sí, existe una herramienta para Linux llamada LogRotate.

Solución 5:

Si la razón por la que borra el registro es para liberar espacio, puede cat /dev/null para ellos, sin interrumpir los programas que escriben en él. ¡Nunca los borres! algún software puede quejarse al dejar de funcionar o al ignorar el registro por completo hasta el próximo reinicio

cat /dev/null > /path/to/logfile

# to empty all the logs in a directory
for i in /var/log/*; do cat /dev/null > $i; done

Linux
  1. Manera de modificar un archivo en el lugar?

  2. ¿Cómo borrar Journalctl?

  3. ¿Hay alguna manera de 'uniq' por columna?

  4. ¿Cuál es la forma correcta de usar inotify?

  5. ¿Hay alguna forma de recortar un archivo NETCDF?

Configurando logrotate en Linux

Rotación de archivos de registro

Registros del sistema

¿Cuál es una forma conveniente de verificar lo que se agrega a un archivo de registro en tiempo real?

¿Buscar el archivo de registro de Firefox?

Cómo vaciar un archivo de registro en Linux