Como redirecionar a saída de um programa em execução para / dev / null

19

Eu sei que, para suprimir a saída de um programa, posso redirecioná-lo para /dev/null , por exemplo, para ocultar todas as mensagens de erro e aviso do cromo, posso iniciar o programa como este

chromium-browser 2> /dev/null &

No entanto, se eu esquecer as mensagens de erro e digitar

chromium-browser &

(o que é bastante irritante quando eles aparecem no meio de um comando) Eu não sei o que fazer, exceto para parar o aplicativo e iniciá-lo novamente corretamente.

Posso de alguma forma redirecionar a saída de erro sem reiniciar o aplicativo?

    
por phunehehe 03.09.2010 / 09:59

3 respostas

8

Você também pode iniciar o navegador com nohup e fechar a janela do terminal com o seguinte:

nohup chromium-browser &

Dessa forma, o navegador será iniciado e desconectado do console, que pode ser fechado silenciosamente.

    
por 03.09.2010 / 13:28
22

Isso foi respondido aqui: aqui por vladr . A resposta é (citando):

  • anexar ao processo em questão usando o gdb e executar:
  • p dup2 (aberto ("/ dev / null", 0), 1) (para redirecionamento stdout)
  • p dup2 (aberto ("/ dev / null", 0), 2) (para redirecionamento stderr)
  • separar
  • sair

Eu tentei no seguinte script:

[edição após o primeiro comentário:]

sleep 10 # so I can have the time to attach to the process
if [ "$sonorfather" == "father" ] # avoid infinite recursion 
then 
   sonorfather=son ./test & 
fi 

while true 
do 
   echo "stdout $sonorfather" 
   echo "stderr $sonorfather" >&2 
   sleep 1 
done 

Eu desabilitei a saída stderr antes que o processo filho fosse criado, aqui está a saída:

stdout father 
stdout son 
stdout father 
stdout son 
[and so on...]. 

Espero que isso responda à sua pergunta: o processo filho stderr também foi redirecionado.

    
por 03.09.2010 / 10:47
6

Você também pode configurar um alias para chromium-browser para executar chromium-browser 2> /dev/null

por exemplo. se você estiver usando bash, edite /home/username/.bashrc e adicione linha:

chromium-browser='chromium-browser 2> /dev/null'

ou melhor ainda

chrome='chromium-browser 2> /dev/null'

e salve algumas teclas digitadas.

    
por 03.09.2010 / 11:06