nohup是否在管道上工作?

时间:2014-11-13 15:11:11

标签: linux bash

如果我这样做

nohup cmd1 | cmd2 &

相同
nohup "cmd1 | cmd2" &

我希望我nohup一切,因为cmd1会在端口8023上收听。

5 个答案:

答案 0 :(得分:47)

不,您需要单独将nohup添加到命令中。

建议使用以下内容:

nohup sh -c "cmd1 | cmd2" &

或者:

nohup $SHELL <<EOF &
cmd1 | cmd2
EOF

答案 1 :(得分:11)

作为nohup的替代方案,我建议

( cmd1 | cmd2 ) > logfile < /dev/null 2>&1 &

通过从终端重新路由stdin,stdout和sterr,这可以达到与nohup相同的效果,其语法至少是我喜欢的。

答案 2 :(得分:0)

nohup cmd1 | cmd2 &

不,我刚刚检查过这是如下

nohup: ignoring input and redirecting stderr to stdout

答案 3 :(得分:0)

您可以在screen会话中启动管道。按下 Ctrl-a 键,然后按下 d 键,将屏幕会话与终端分离。然后,您可以安全地退出终端机;管道将继续运行。使用screen -r重新连接到会话。

答案 4 :(得分:0)

您始终可以创建脚本文件并使用nohup运行它:

echo "cmd1 | cmd2" > nohupScript.sh
nohup nohupScript.sh &