Daniel López Azaña

Tema

Social Media

Blog

GNU/Linux, Open Source, Cloud Computing, DevOps y más...

Comando fatrace: cómo saber en tiempo real qué procesos escriben en un fichero

fatrace command man page

Normalmente es fácil saber cuál es el proceso o procesos que están escribiendo sobre un fichero dado en Linux, ya que o bien conocemos previamente su origen, por ejemplo el access_log de Apache, o bien podemos hallarlo fácilmente con los comandos fuser o lsof. Sin embargo, a veces nos ocurrirá que aunque conozcamos el origen o el cometido de un fichero, son tantas las aplicaciones que pueden estar haciendo uso de él simultáneamente, que es muy difícil saber cuál de ellas es la que más escribe o la que lo está haciendo en un momento determinado, lo cual nos resultaría muy útil para saber por ejemplo por qué un fichero de log está creciendo desmesuradamente o qué aplicación está haciendo un uso abusivo de nuestro sistema , ya sea por un fallo o de forma intencionada.

Para conocer esta información disponemos en Linux del comando fatrace , que muestra todos los eventos de acceso a ficheros que se producen en todo el sistema , aportándonos información sobre el nombre y el PID del proceso responsable de dicho evento, en qué fichero se ha producido el evento, y el tipo de evento, es decir, si se trata de una apertura, lectura, escritura o cierre de dicho fichero.

Normalmente este comando no estará presente en nuestro sistema, pero podremos instalarlo desde los repositorios habituales de nuestra distribución:

– Debian / Ubuntu:

$ sudo apt-get install fatrace

– Centos / Fedora / Red Hat:

$ sudo yum install -y fatrace

Así, para ver qué procesos escriben sobre un fichero en tiempo real, ejecutaremos el comando así:

$ sudo fatrace -f W | grep .xsession-errors
konsole(13009): W /home/daniloaz/.xsession-errors 
konsole(13009): W /home/daniloaz/.xsession-errors 
konsole(13009): W /home/daniloaz/.xsession-errors 
konsole(13009): W /home/daniloaz/.xsession-errors 
konsole(13009): W /home/daniloaz/.xsession-errors 
konsole(13009): W /home/daniloaz/.xsession-errors 
konsole(13009): W /home/daniloaz/.xsession-errors 
konsole(13009): W /home/daniloaz/.xsession-errors

En el ejemplo podemos ver como el comando fatrace muestra líneas que se repiten cientos de veces cada vez que hacemos un gesto con el ratón, lo cual nos está indicando claramente que el proceso konsole con PID 13009 tiene algún tipo de fallo que está provocando que se escriba desmesuradamente sobre el fichero .xsession-errors, que era nuestro objetivo inicial.

Daniel López Azaña

Sobre el autor

Daniel López Azaña

Emprendedor tecnológico y arquitecto cloud con más de 20 años de experiencia transformando infraestructuras y automatizando procesos.

Especialista en integración de IA/LLM, desarrollo con Rust y Python, y arquitectura AWS & GCP. Mente inquieta, generador de ideas y apasionado por la innovación tecnológica y la IA.

Artículos relacionados

cpu-cores

Cómo saber cuántos procesadores y núcleos tiene una máquina Linux

El método más sencillo para saber el número de procesadores presentes en una máquina Linux es el siguiente:Otra forma de obtener el mismo resultado, el cual también nos permite obtener información adicional sobre nuestro procesador es el comando lscpu:O también podemos examinar el fichero cpuinfo del sistema de ficheros /proc:Podemos encontrar numerosos detalles adicionales sobre nuestros procesadores en /proc/cpuinfo, entre ellos el modelo de CPU y el número de núcleos o cores que tiene:

13 de marzo de 2012
terraform-and-route53-logos

Cómo importar rápidamente todos los registros de una zona DNS de Route53 en Terraform

El comando terraform import nos permite importar en HashiCorp Terraform recursos que ya existían previamente en el proveedor con el que estemos trabajando, es este caso AWS. Sin embargo, sólo permite importar dichos registros uno por uno, con una ejecución de terraform import cada vez. Esto, aparte de ser tremendamente tedioso, en algunas situaciones se vuelve directamente impracticable. Este es el caso de los registros de una zona DNS de Route53. La tarea puede resultar inabarcable si tenemos varias zonas DNS, y cada una tiene decenas o cientos de registros. En este artículo te ofrezco un script en bash que te permitirá importar en Terraform todos los registros de una zona DNS de Route53 en cuestión de segundos o de pocos minutos.

8 de febrero de 2022
Ctrl+S

Desbloquear la línea de comandos de Linux tras pulsar Ctrl+s en Bash

Dado que la combinación de teclas Control+s es muy utilizada como atajo para la opción de Guardar ficheros en aplicaciones gráficas como editores de texto, editores de imágenes, navegadores web, etc. a veces nos traiciona el subconsciente cuando estamos trabajando desde la línea de comandos de Linux y utilizamos esa misma combinación de teclas cuando estamos por ejemplo editando un documento con Vim con la intención de guardarlo. A partir de ese momento observamos que ninguna tecla responde, la shell se ha bloqueado y ya no podemos hacer nada más en ella y nos entra un sudor frío porque no podemos acceder al documento que estábamos editando y no podemos salvar los cambios.

27 de abril de 2017

Comentarios

Sé el primero en comentar

Enviar comentario