Aparentemente eu interpretei mal sua pergunta na 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
Em seguida, você pode usar gdb para anexar a esse processo
gdb -p <PID>
Em gdb , você muda onde o programa grava para
p dup2(open("/path/to/file",577, 420), 1)
p dup2(1, 2)
você desanexa do processo e sai gdb
detach
quit
Uma pequena explicação
-
577é equivalente aO_CREAT|O_WRONLY|O_TRUNC -
420é equivalente aS_IRUSR|S_IWUSR|S_IRGRP|S_IROTH - Portanto, a chamada para
openabre o arquivo e o trunca para 0 bytes, se existir ou cria um novo com as permissões de arquivo corretas, se não existir - A primeira chamada para
dup2duplica o descritor de arquivo retornado pela chamada paraopenpara o descritor de arquivo1(que éstdout) - A segunda chamada para
dup2duplica o descritor de arquivo1to2(que éstderr)