假设我想在后台运行某些内容并将其打印到文件中。但是,当我执行以下操作时,它仍然打印到屏幕上...有人知道为什么吗?我该怎么办?谢谢。
./mc.x & 2>&1 > test.out
wait
答案1
将背景放在最后,如下所示:
./mc.x 2>&1 > test.out &
注意:您的重定向无效,因为 2>&1 将使 stderr 转到 stdout 所在的位置(即显示和它无论如何都去的地方)。然后,stdout 将进入文件 test.out。交换它们的顺序将使所有 stderr+stdout 都转到文件 test.out。
答案2
好吧,首先您尝试使用的语法应该如下所示:
./mc.x > test.out 2>&1
&
请注意您尝试使用的命令中的额外内容。是的,这样您就无法将程序发送到后台。
TL;DR 用于nohup
完成你想要的事情:
nohup 2>&1 ./mx.c &
这样程序就不会挂起您的终端并将两者发送stdout
到stderr
名为nohup.out
.