Como redirecionar a saída de um aplicativo em segundo plano para / dev / null


100

Eu gostaria de redirecionar a saída gerada de um aplicativo em segundo plano no Linux para / dev / null.

Estou usando o editor de texto kate e ele imprime todas as mensagens de depuração no terminal que gostaria de redirecionar para / dev / null.

Alguma ideia de como fazer isso?

obrigado


Respostas:


230

Você usa:

yourcommand  > /dev/null 2>&1

Se ele deve ser executado em segundo plano, adicione um &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1significa redirecionar stdoutpara /dev/nullE stderrpara o lugar onde stdoutaponta naquele momento

Se você deseja stderrocorrer no console e somente stdoutacessando, /dev/nullpode usar:

yourcommand 2>&1 > /dev/null

Neste caso stderré redirecionado para stdout(por exemplo, seu console) e depois o original stdouté redirecionado para/dev/null

Se o programa não terminar, você pode usar:

nohup yourcommand &

Sem qualquer parâmetro, todas as saídas vão para nohup.out


ambos funcionam, mas há uma pequena diferença, mas não se lembre
evildead

ah ok entendi e adicionei a outra versão
evildead

Se este for o último comando em um arquivo bash, uma coisa que notei é que ele deixa o console de comando que chamou o arquivo sem um prompt.
Dennis

@elig redirecionar a saída de um aplicativo já em execução não é possível imo, ou pelo menos não tão facilmente, porque o redirecionamento via dup2()ocorre imediatamente depois, fork()mas antes exec*(). Uma vez exec*()executado o programa, o shell não tem a capacidade de redirecionar a saída desse processo. Corrija-me se eu estiver errado, mas não sei sobre um shell que implementou essa funcionalidade.
evildead de

3

Eles também redirecionarão ambos:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

embora o manual do bash diga que o primeiro é o preferido.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.