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

Kiran
fonte
Dê uma olhada nesta página. xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
richard.g

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

Mau morto
fonte
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.

Jim Hunziker
fonte