Como ocultar informações do processo do shell ao iniciar o processo em segundo plano?

17
[USER@SERVER ~] sleep 3 &
[1] 5232
[USER@SERVER ~] 
[1]+  Done                    sleep 3
[USER@SERVER ~] 

Como eu / dev / null estas duas mensagens ?:

[1] 5232
[1]+  Done                    sleep 3

p.s .: então eu preciso da saída do processo, mas não das duas linhas mencionadas!

    
por LanceBaynes 10.12.2011 / 13:18

4 respostas

24

Não é a saída do programa, são algumas informações úteis sobre o shell.

De qualquer forma, eles podem ser ocultados usando o subshell e o redirecionamento de saída

( sleep 3 & ) > /dev/null 2>&1
    
por 10.12.2011 / 13:24
3

No bash ou zsh, você pode chamar disown %1 para dizer ao shell para esquecer o trabalho. Em seguida, o shell não imprimirá nenhuma mensagem sobre esse trabalho, nem mostrará quando você executar jobs ou enviar um SIGHUP para ele. Em zsh, iniciar o trabalho com &! em vez de & é equivalente a chamar disown imediatamente.

    
por 10.12.2011 / 22:07
0

Não é possível comentar (ainda) sobre @Gilles, mas parece que & disown também funciona no bash:

sleep 3 & disown
    
por 25.01.2013 / 00:13
0

Tente:

user@host:~$ read < <( sleep 10 & echo $! )
user@host:~$ echo $REPLY
28677

E você ocultou a saída e o PID . Observe que você ainda pode recuperar o PID de $ REPLY

    
por 13.06.2016 / 02:46

Tags