Ubicar ficheros abiertos por un proceso

Configurando un sistema comencé a recibir errores como el siguiente:

syslog-ng[1091]: Error suspend timeout has elapsed, attempting to write again; fd='11'

El problema era que el proceso de syslog no era capaz de escribir sobre el fichero que había abierto con el file descriptor 11 pero no tenía referencias acerca de cuál era ese fichero como para comprobar por qué se producía el error.

La solución pasó por acceder al file descriptor a través del file system /proc y utilizar el comando readlink para obtener su nombre canónico.
En este caso, dado que el proceso de syslog tenía un pid=1091 (como puede observarse en la línea de log anterior), el comando a ejecutar es:

 # readlink /proc/1091/fd/11
/dev/tty10

Así pude comprobar que el sistema estaba intentando escribir sobre el terminal virtual /dev/tty10 que, en los sistemas basados en Debian, corresponden a la consola de errores del sistema. Y, como mi sistema no contaba con este terminal virtual, la solución pasó por revisar la configuración del proceso syslog‑ng eliminando las referencias a este dispositivo.

José Administrator
Apasionado por el software, la electrónica y la fotografía.
follow me

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *