Si tengo un comando canalizado como
cat myfile | processor_application
donde procesador_aplicación es algo que se lee desde el estándar en, en fragmentos, para procesar, ¿es posible ver qué tan lejos ha llegado el archivo cat?
Posiblemente usando lsof?
¡Gracias!

Respuestas:
Puedes usar pv para hacer esto, por ejemplo
pv file | processor_applicationA medida que el pv pasa, es stdin directamente a su stdout, no necesita usar cat.
Editar Como su programa ya se está ejecutando, busque el PID del
catproceso y luego mire el contenido de/proc/<PID>/ioque le dirá cuántos bytes ha escrito: wchar.
fuente
¡Absolutamente! Pipe Viewer hace exactamente eso. Simplemente insértelo en su tubería:
Puede optimizar lejos
caten el ejemplo anterior:Lo cual tiene la ventaja de proporcionar un indicador de progreso real, ya que pv puede determinar el tamaño de la entrada directamente. Si utiliza pv en el medio de una tubería, debe proporcionar el tamaño del archivo usted mismo para obtener un progreso preciso:
Consulte el sitio web para obtener más opciones para personalizar pv.
fuente
pvcuando está disponible :-)pven una tubería usandomkfifoygdb(cuatro syscalls con gdb'sp).Si el proceso ya se está ejecutando, lsof tiene una
size/offsetcolumna que puede serle útil: busque el PID del proceso cat que desea inspeccionar y luegolsof -o -p [PID].Si el proceso aún no se está ejecutando,
pvcomo otros sugirieron es una buena opción (suponiendo que su sistema tenga esa utilidad).fuente
-ono funciona en su sistema, creo que está bastante jodido con respecto al usolsof: - / (Supongo que está ejecutando lsof como el usuario que inició elcatproceso, o como root?)