como usar nohup enquanto ainda envia stderr para o terminal

2
o nohup redireciona automaticamente o stderr para o stdout, mas eu quero enviá-lo para o terminal (ele mostra o progresso). Como eu posso fazer isso?

    
por IttayD 30.06.2015 / 11:31

2 respostas

1

Como nohup manual declara:

NAME
   nohup - run a command immune to hangups, with output to a non-tty

Ele é usado para executar um comando SEM um tty associado a ele, você pode encerrar sua sessão e o comando continuará em execução, portanto, sua saída não está anexada a um tty, portanto, não sendo capaz de mostrar a saída. nohup cria um arquivo chamado nohup.out embora, você possa acessar esse arquivo com tail -f de qualquer terminal e manter o whatching na saída do comando.

    
por 30.06.2015 / 11:42
3

Apenas redirecione-o. Tome este script, por exemplo, que imprime uma linha para stderr e outra para stdout:

#!/bin/sh
echo stderr >&2
echo stdout

Se eu executar agora com nohup e redirecionar o erro padrão para um arquivo, ele funcionará como esperado:

$ nohup a.sh 2>er
$ cat er
nohup: ignoring input and appending output to ‘nohup.out’
stderr

Observe que ele também inclui o stderr de nohup em si, pois você está redirecionando a saída de nohup . Você pode fazer o mesmo com stdout:

nohup a.sh > foo

Basicamente, nohup usa apenas nohup.out quando você não redireciona a saída.

Para imprimir o stderr no terminal, você pode usar o redirecionamento de processo para passar stderr através de tee :

$ nohup a.sh 2> >(tee)
nohup: ignoring input and appending output to ‘nohup.out’
stderr
    
por 30.06.2015 / 12:45