2010-01-31 67 views
4

我在后台运行python脚本,但为什么它仍然会打印到控制台,即使是通过管道传输到文件?Python脚本输出到控制台,即使它在后台运行

我尝试下面的命令:

python script.py & 
python script.py > output.txt & 

我用一个简单的脚本尝试:

print "hello world" 

随着

python script.py & 

它仍然打印到控制台。

python script.py > output.txt & 

按预期工作,并且不打印到控制台。

+0

这应该只是工作。 “打印”是什么“”你正在使用的确切语句? – Thomas 2010-01-31 16:14:50

+0

你能发布你的程序确切的完整源代码吗? (假设它不是太多) – 2010-01-31 16:21:18

+0

它做了很多东西,但基本上我只是使用python打印命令输出结果 – extraeee 2010-01-31 16:40:10

回答

6

可能是在stderr上输出。试试这个:

python script.py > output.txt 2>&1 & 

或者它看起来像你可能已经开始仍在运行的后台任务:

python script.py & 

类型fg将其带到前台,然后用Ctrl-C杀死它。

+0

现在它不再打印到控制台了,但它不会打印到output.txt ... – extraeee 2010-01-31 16:55:17

+0

要非常小心,不要将它误输入为例如'2&> 1'。 – 2010-01-31 17:30:06

+0

是的,我仔细检查,仍然没有输出到文件.. – extraeee 2010-01-31 18:26:34

2

应该就是已经

 
python script.py > output.txt 2>&1 & 
python script.py >> output.txt 2>&1 

this为澄清的2>&1

1

使用你打印到标准输出或标准错误?这是两个不同的流。

Program 2> file # pipe standard error 
Program 2>&1 # pipe standard error to standard output (join streams) 
Program > file 2>&1 # pipe both channels to file 
2

即使有时这还不够。某些应用程序写入/ dev/console而不是/ dev/stdout或/ dev/stderr。提示输入密码的应用程序通常会这样做。

相关问题