Ver pantalla de inicio de sesión (giratoria)

Ver pantalla de inicio de sesión (giratoria)

Estoy ejecutando un servidor de correo al que me conecto mediante SSH. Mi .bash_profileestá configurado para adjuntar una sesión SSH a una screensesión determinada.

Ahora me gustaría imprimir un registro (por ejemplo, el syslog) en una ventana de esta sesión de pantalla. Intenté correr

tail -f /var/log/syslog

pero la salida se detiene todos los días a las 6:25. Supongo que ese es el momento en que se gira el tronco. Entonces, ¿hay alguna manera de imprimir el registro en pantalla?

Respuesta1

Necesitastail --follow=name /var/log/syslog

La razón es que de forma predeterminada (supuestamente por motivos de rendimiento) tail abre el archivo especificado y luego lo observa.el descriptor del archivoobtiene de esa open(2)convocatoria de cambios. Esto funciona bien siempre que se cambie el archivo, se agregue o incluso se reescriba (truncandolo primero), pero deja de funcionar si el archivo se modifica.reemplazado—Es decir, eliminado y creado con el mismo nombre, y eso es lo que logrotatenormalmente ocurre.

El modo "nombre" de --followhace tailuso de una llamada al sistema más costosa stat(2)que en realidad "resuelve" el nombre del archivo cada vez a través de la capa del sistema de archivos, y si tailnota que el archivo cambió, se llama"inodo", tailvuelve a abrir el archivo.

La salida de man tail:

-f, --follow[={name|descriptor}]

generar datos agregados a medida que el archivo crece; un argumento de opción ausente significa 'descriptor'

También puede consultar la -Fopción de línea de comandos, que se define como

-Figual que--follow=name --retry

Respuesta2

Tu suposición es realmente correcta. En este momento, syslog interrumpe la escritura en el registro, crea un gz y reinicia el registro.

Podrías probar con

tail -f --retry /var/log/syslog

De esta manera, tail debería volver a intentar volver a abrir el archivo cuando se haya realizado la rotación de registros.

información relacionada