executando o comando em segundo plano e imprime a saída em um arquivo sem imprimir na tela

4

Suponha que eu queira executar algo em segundo plano e imprimi-lo em um arquivo. No entanto, quando eu faço o seguinte, ele ainda imprime na tela ... Alguém sabe por quê? e o que devo fazer? Obrigado.

./mc.x & 2>&1 > test.out  
wait
    
por user40780 21.03.2017 / 08:01

2 respostas

6

Coloque o plano de fundo no final, como:

./mc.x 2>&1 > test.out &

N.B .: Seus redirecionamentos são ineficazes, pois 2 > & 1 fará stderr onde stdout vai (ou seja, exibir e qual vai de qualquer maneira). Então, stdout irá em um arquivo test.out. Trocar sua ordem teria feito todos stderr + stdout vá para o arquivo test.out.

    
por 21.03.2017 / 08:20
3

Bem, primeiro a sintaxe que você está tentando usar deve ficar assim:

./mc.x > test.out 2>&1

Aviso extra & no comando que você tentou usar. E sim, desta forma você não poderá enviar o programa para um segundo plano.

TL; DR use nohup para realizar o que você deseja:

nohup 2>&1 ./mx.c &

Desta forma, o programa não suspende o seu terminal e envia os arquivos stdout e stderr para um arquivo chamado nohup.out .

    
por 21.03.2017 / 08:15