Aparentemente eu interpretei mal sua pergunta pela primeira vez, então aqui está minha resposta atualizada:
Depois de enviar seu programa para o segundo plano, primeiro você precisa encontrar o PID
pgrep foo.sh
Então você poderia usar gdb para anexar a esse processo
gdb -p <PID>
Em gdb você então muda onde este programa grava
p dup2(open("/path/to/file",577, 420), 1)
p dup2(1, 2)
então você se desconecta do processo e sai gdb
detach
quit
Uma pequena explicação
577 é equivalente a O_CREAT|O_WRONLY|O_TRUNC
420 é equivalente a S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH
- Então a chamada para
open abre o arquivo e trunca-o para 0 bytes se existir ou cria um novo com as permissões de arquivo corretas, se não existir
- A primeira chamada para
dup2 duplica o descritor de arquivo retornado pela chamada para open para descritor de arquivo 1 (qual é stdout )
- A segunda chamada para
dup2 duplica o descritor de arquivo 1 para 2 (qual é stderr )