在后台运行命令并将输出打印到文件而不打印到屏幕

在后台运行命令并将输出打印到文件而不打印到屏幕

假设我想在后台运行某些内容并将其打印到文件中。但是,当我执行以下操作时,它仍然打印到屏幕上...有人知道为什么吗?我该怎么办?谢谢。

./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 &

这样程序就不会挂起您的终端并将两者发送stdoutstderr名为nohup.out.

相关内容