对于以下命令:
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&是用来干什么的?
发布于 2013-05-08 23:00:02
碰巧,在nohup下运行的命令从未写入stdout或stderr,也没有向其发送任何输入。但是nohup无法知道这一点,因此它告诉您,任何输入都将被丢弃,任何输出都将被写入nohup.out。
为了避免这种情况,将nohup的S的stdin、stdout和stderr重定向到/dev/null。
ssh -t esolve@hostname 'sudo nohup bash -c "ls > log 2>&1 &" </dev/null >/dev/null 2>/dev/null'至于|&,来自巴什手册:
管道的格式是-p[时间] command1 [ E76f{或} command2…]。管道中每个命令的输出通过管道连接到下一个命令的输入。也就是说,每个命令都读取前面命令的输出。此连接在命令指定的任何重定向之前执行。如果使用
|&,则command1的标准误差通过管道连接到command2的S标准输入,它是2>&1 |的缩写。
这是一个bash扩展,也出现在zsh中。
https://unix.stackexchange.com/questions/75176
复制相似问题