Extraído do link "redirecionando a saída de uma corrida processo " dado em este StackOverflow responda a uma pergunta semelhante. Você pode comparar essas instruções com esta resposta que discute o mesmo truque para outros fins.
Aqui está o processo básico, assumindo que o comando já esteja em execução. Isso funciona bem para saída STDOUT regular. O writeup original usa cat > foo1
como um exemplo de programa de saída de longa duração.
Dependendo das particularidades do processo que você deseja silenciar, talvez seja necessário executar esse processo no STDERR (ou em outros fluxos de saída) em vez de, ou além do STDOUT.
-
Encontre o processo PID.
$ ps aux | grep cat user 6760 0.0 0.0 1580 376 pts/5 S+ 15:31 0:00 cat
-
Conecte-se ao processo com o GDB.
$ gdb -p 6760 /bin/cat GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc [lots more license stuff snipped] Attaching to program: /bin/cat, process 6760 [snip other stuff that's not interesting now]
-
No GDB, feche o processo STDOUT. ("(gdb)" é o prompt do GDB; digite o que você vê nessas linhas. As outras linhas são saídas de exemplo.)
(gdb) p close(1) $1 = 0
-
No GDB, abra um novo arquivo. Notas: o valor de retorno "1" indica que o novo arquivo foi aberto como STDOUT; "0600" é o modo (permissões de arquivo) do novo arquivo (significando "legível-e-gravável para o proprietário, não para mais ninguém").
(gdb) p creat(“/tmp/foo3″, 0600) $2 = 1
-
Saia do GDB; deixe o processo em andamento.
(gdb) q The program is running. Quit anyway (and detach it)? (y or n) y Detaching from program: /bin/cat, process 6760