83 votos

¿Hay una manera correcta para borrar los registros?

Me preguntaba si había una manera adecuada para eliminar los registros en general?

Soy nuevo en Ubuntu y estoy tratando de configurar Postfix. El registro en cuestión es /var/log/mail.log. Me preguntaba si había una manera correcta de claro, en lugar de que me va en ello y la eliminación de todas las líneas y el ahorro. Me parece que a veces los errores no se escriben inmediatamente después de que se me borre el registro y guardarlo.

Nota al margen: estoy teniendo problemas para configurar Postfix y estoy tratando de hacer más fácil para mí para leer los registros de la esperanza de que me puedan ayudar, en lugar de tener que desplazarse por todo el camino hacia abajo.

91voto

davey Puntos 4873

Usted puede utilizar:

> /var/log/mail.log

Que va a truncar el registro sin tener que editar el archivo. Es también una manera confiable de obtener el espacio de la espalda. A veces la gente comete el error de usar rm en el registro, a continuación, recreando el nombre de archivo, si hay otro proceso que tiene abierto el archivo, a continuación, usted no consigue el espacio de atrás hasta que el proceso de cierre de la manija en ella y usted puede perder hasta lo de los permisos.

También si usted está viendo el contenido del registro usted podría gustarle utilizar el tail comando:

tail -f /var/log/mail.log

Ctrl-C se rompen las colas.

30voto

JdeBP Puntos 2840

Sí, hay una manera apropiada: no borrar los registros. Usted girar . La rotación implica el cambio de registro de salida a un nuevo archivo con el mismo nombre, con el anterior N los archivos de registro guardados bajo un conjunto de N relacionadas con los nombres de archivo.

Cómo una gira de los registros depende de cómo uno está escrito en el primer lugar. Este es un menudo se pasa por alto punto. Algunas de las respuestas que aquí se tocan, al menos, mencionar que algunos programas de registro de mantener abierto un descriptor de archivo para el archivo de registro, por lo que acaba de eliminar el archivo no liberar el espacio, o incluso interruptor de salida a un nuevo archivo de registro.

Si el programa escribiendo el archivo de registro es multilog de la daemontools paquete, por ejemplo, entonces usted no hace nada para rotar los logs — ni el manual de scripts, no cron de puestos de trabajo. Simplemente dígale multilog que el registro de salida es a un directorio, y se va a mantener por una gira automáticamente y tamaño de las cubiertas de un conjunto de N de registro de los ficheros en ese directorio.

Si el programa de escritura de los archivos de registro es svlogd de la runit paquete, para otro ejemplo, mucho se aplica el mismo. No hacer nada en absoluto, aparte de punto de la herramienta en un directorio. Va a mantener una gira automáticamente y tamaño de las cubiertas de un conjunto de N de registro de los ficheros en ese directorio.

Si usted está usando rsyslog escribir archivos de registro, a continuación, el programa de registro puede ser contada a parar después de que el archivo de registro alcanza un cierto tamaño y ejecutar una secuencia de comandos. Usted tiene que escribir la carne de la secuencia de comandos para cambiar el nombre del archivo de registro y eliminar archivos de registro antiguos basados en el total de las restricciones de tamaño, pero al menos el programa de registro ha cerrado el archivo y se detuvo registro de escritura, mientras que esto está sucediendo.

El antiguo syslogd manera de rotación de registros, aún se espera por el registro de programas, tales como syslog-ng y como se ejemplifica por herramientas tales como logrotate mencionado por djangofan en otra respuesta aquí, es algo más irregular. Se ejecuta un cron de trabajo que periódicamente cambia el nombre de los archivos de registro y reinicia el registro de demonio (usando cualquier demonio supervisor se está ejecutando bajo). El problema con esto, por supuesto, es que no la imposición de un tamaño total cap. En lento semanas se puede obtener N muy pequeñas al día los archivos de registro, mientras que en los días ocupados se puede obtener 1 muy grande archivo de registro que supera ampliamente el límite de tamaño.

Esta es la razón por la tarde y mejores herramientas como multilog y svlogd han tamaño de archivo opciones de configuración y compruebe el archivo de registro de tamaños de sí mismos, por supuesto. El mundo se ha enterado de que el sondeo de los registros en un horario de con cron puestos de trabajo, o incluso un logrotate demonio, hojas de windows para el tamaño equivocado, y que el lugar adecuado para tener estos controles, y así con rigor cumplir definido por el administrador del tamaño de las tapas de modo que los archivos de registro no se trague la partición en la que están, es en el programa que en realidad está escribiendo los archivos en el primer lugar.

11voto

djangofan Puntos 2732

Sí, hay una herramienta para linux llamado "logrotate" .

10voto

Elvis Puntos 111

Si la razón por la que borrar el registro es para liberar espacio, puede cat/dev/null para ellos, sin interrumpir programas escribir en él. Nunca borrarlas. algunos programas que se queje por parada trabajando o ignorando completamente el registro 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

4voto

poige Puntos 5395

Sobrescribir contenido corto y compatibles:: > /dest/file

Pero también hay llamada de sistema truncate(2) y la correspondiente herramienta userspace truncate en muchos * NIX'es.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: