2010-01-31 98 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。提示輸入密碼的應用程序通常會這樣做。

相關問題