Algo mas simple seria hacer un programa/script (en python ? :D ) para invocar el comando deseado y capturar cuando ha leido y escrito el proceso, ej:
mystat.py cat archivo.txt al momento de arranque de mystat.py, lanza el comando deseado, captura el PID y vas leyendo continuamente /proc/PID/io (read_bytes)... salu2.- Ed.- 2009/2/3 Aldrin Martoq <amar...@dcc.uchile.cl> > On Sat, 2009-01-31 at 21:44 -0300, Daniel Serpell wrote: > > El problema es que no resuelve la pregunta original, ya que el parche de > > biblioteca se debe aplicar *antes* de iniciar el programa. > > Yep, segun segui buscando y creo que systemtap puede entregar el $pos de > un fd (y eso cumple mis requerimientos), pero no he tenido tiempo de > probar (ademas que systemtap no viene por default AFAIK). > > Otra opcion que vi _sin modificar los programas_ seria armar un modulo > del kernel que ponga un archivo especial en /proc, y uno de el PID y > tire un mapa de los archivos. Ej: > > # echo $PID > /proc/fdmaps > #fd #pos > 0 -1 > 1 -1 > 2 -1 > 3 545345 > > Internamente deberia encontrar el task dado un pid, iterar sobre > task->files y llamar al llseek interno (vfs_lseek creo que era)... > > > Claro, uno podría mediante GDB inyectar código adicional en tiempo de > > ejecución, pero eso es bastante complejo. > > Gracias Daniel, estuvo interesante! Pero no me atreveria a pichicatear > un programa ya corriendo con GDB (ni tu solucion ni inyectar codigo). > > > La solucion de dd y pv estan buenas y no las conocia (en particular la > ultima), el problema es que tienes que reprogramar tus scripts o las > cosas que estan andando... y hay software que no puedes modificar de > esta forma (ej: una base de datos). > > > Slds, > -- > Aldrin Martoq <amar...@dcc.uchile.cl> > http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/ > -- Eduardo Silva http://edsiper.linuxchile.cl