Por que o redirecionamento de I / O não funciona ao eliminar tarefas em segundo plano?

0
[~]$ kill %123

bash: kill: %123: no such job

[~]$ kill %123 2>&1 > /dev/null

bash: kill: %123: no such job

Desejo desativar todas as saídas durante a execução de tarefas em segundo plano.

A primeira saída é esperada. No entanto, a segunda saída não é.

Como mostrado na linha de comando, adicionei 2>&1 para redirecionar stderr para stdout e use > /dev/null para redirecionar toda a saída para o dispositivo nulo. Mas a saída ainda é mostrada no terminal.

Alguma explicação?

Obrigado antecipadamente.

Informações atualizadas:

O seguinte comando funciona como esperado:

kill %123 > /dev/null 2>&1
    
por xmllmx 24.11.2017 / 06:08

1 resposta

1

O redirecionamento de saída é uma propriedade do processo. Portanto, ao redirecionar com 2 > & 1, isso define a saída atual de stdout para stderr, que é o TTY atual e, em seguida, o seguinte > define o stdout para / dev / null, o que deixa stderr definido para o TTY. Em suas informações atualizadas, você definiu corretamente a stdout primeiro para que ambas acabem sendo / dev / null.

    
por 24.11.2017 / 06:49