Creo que es posible si adjunta el proceso del intérprete relacionado a gdb. Lo probé con este perl one-liner
perl -e 'do { print "x\n"; sleep(1) } while(1)'
y funciona pero desafortunadamente no con un script bash similar.
En primer lugar, debe averiguar el PID de ese proceso cuya salida desea capturar. Luego comience gdben otra terminal y ejecute los siguientes comandos gdb
attach PID
call close(2)
call open("/abs/olu/te/path/filename", 65, 384)
detach PID
después de eso, todos los datos que se escriben stderrse redirigen a /abs/olu/te/path/filename, ya que
attach PID adjunta el proceso a gdb y lo detiene
call close(2)cierra el stderrdescriptor de archivo del proceso (para stdoutel descriptor de archivo es 1)
call open(...) abre un nuevo archivo y toma el número entero sin usar más bajo para el descriptor de archivo recién creado y
detach PID continúa el proceso
Al menos en mi máquina. Las dos primeras líneas son compatibles con POSIX, pero no la tercera.
El segundo y el tercer argumento de openen la tercera línea están documentados en man 2 open. En mi caso, 65 significa que opendebería crear el archivo y abrir el archivo de solo escritura, es decir O_WRONLY | O_CREAT(definido en fcntl.h). El tercer argumento le dice a open que cree el archivo con permiso de lectura y escritura para el usuario, es decir S_IWUSR | S_IRUSR(definido en sys/stat.h). Entonces, tal vez tenga que encontrar los valores apropiados en su máquina usted mismo.