假设我有一个程序foo
,它会向控制台打印数十亿行。
如何在后台运行它,同时将其输出传递给文件?
我试过这个
./foo | output.txt&
似乎无法正常工作
答案 0 :(得分:1)
看看nohup
实用程序,它允许从tty中分离命令:
nohup sh -c "./foo 2>&1 > output.txt" &
将命令输出管道传输到文件实际上不起作用,您只能重定向它:即> output.txt
。如果后面的命令是一个接受来自其标准输入的输入但不接受被动文件的命令,那么管道是有意义的。附加2>&1
将命令标准错误输出重定向到标准输出,这样您只有一个输出管道,否则潜在的错误仍会溢出到控制tty。这里的实际命令是一个调用的shell,这是因为管道会破坏序列。