重定向到 nohup 和 pipeline 的文件问题

重定向到 nohup 和 pipeline 的文件问题

对于以下命令:

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

我总是收到错误信息:

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

为什么会发生这种情况以及如何避免此错误信息?

此外,在下面(我用它来启用输出到屏幕和文件),

   stdbuf -o 0 command|& tee logfile

& 它的用途是什么?

答案1

碰巧您正在运行的命令nohup永远不会写入 stdout 或 stderr,并且您没有向其发送任何输入。但nohup无法知道这一点,因此它告诉您任何输入都将被丢弃,任何输出都将写入nohup.out.

为了避免这种情况,请将nohup的 stdin、stdout 和 stderr 重定向到/dev/null.

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

至于|&,从bash手册:

管道的格式是

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

管道中每个命令的输出通过管道连接到下一个命令的输入。也就是说,每个命令都会读取前一个命令的输出。此连接在命令指定的任何重定向之前执行。

如果|&使用 ,则 的标准错误通过管道command1连接到的标准输入;command2它是 的简写2>&1 |

这是一个 bash 扩展,也存在于 zsh 中。

相关内容