我在后台运行python脚本,但为什么它仍会打印到控制台,即使是通过管道传输到文件?
我尝试了以下命令:
python script.py &
python script.py > output.txt &
我尝试了一个简单的脚本:
print "hello world"
使用
python script.py &
它仍会打印到控制台。
但是
python script.py > output.txt &
按预期工作,不会打印到控制台。
答案 0 :(得分:7)
可能是在stderr上输出。试试这个:
python script.py > output.txt 2>&1 &
或者看起来您可能已经启动了仍在运行的后台任务:
python script.py &
键入fg
将其置于前台,然后使用Ctrl-C
将其终止。
答案 1 :(得分:2)
答案 2 :(得分:2)
有时甚至这还不够。某些应用程序写入/ dev / console而不是/ dev / stdout或/ dev / stderr。提示输入密码的应用程序通常会这样做。
答案 3 :(得分:2)
python的问题在于它会缓冲stdout而不会将其丢弃到磁盘上。你需要像那样运行你的脚本
python -u script.py > output.txt &
或者您可以使用无缓冲输出(unbuffered stdout in python (as in python -u) from within the program)
答案 4 :(得分: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