redirecionamento para arquivos com nohup e pipe

2

Para o seguinte comando:

ssh -t esolve@hostname 'sudo nohup bash -c "ls > log 2>&1 &"'

Sempre recebi informações de erro:

       nohup: ignoring input and appending output to 'nohup.out'

por que isso aconteceu e como evitar essas informações de erro?

Além disso, a seguir (eu uso para habilitar saída para tela e arquivo),

   stdbuf -o 0 command|& tee logfile

para que é usado o & ?

    
por misteryes 09.05.2013 / 00:37

1 resposta

5

Acontece que o comando que você está executando em nohup nunca grava em stdout ou stderr e que você não está enviando nenhuma entrada para ele. Mas nohup não tem como saber disso, então ele diz que qualquer entrada seria descartada e qualquer saída seria gravada em nohup.out .

Para evitar isso, redirecione stdin, stdout e stderr de nohup para /dev/null .

ssh -t esolve@hostname 'sudo nohup bash -c "ls > log 2>&1 &" </dev/null >/dev/null 2>/dev/null'

Quanto a |& , do manual do bash :

The format for a pipeline is

[time [-p]] [!] command1 [ [| or |&] command2 …]

The output of each command in the pipeline is connected via a pipe to the input of the next command. That is, each command reads the previous command’s output. This connection is performed before any redirections specified by the command.

If |& is used, the standard error of command1 is connected to command2’s standard input through the pipe; it is shorthand for 2>&1 |.

Esta é uma extensão do bash, também presente no zsh.

    
por 09.05.2013 / 01:00