Linux 将标准输出重定向到不工作的文件

Linux 将标准输出重定向到不工作的文件,linux,bash,io-redirection,Linux,Bash,Io Redirection,我有一个使用子进程获取HTML的脚本: misha@misha-K42Jr:~/git/domain_classifier$ python webkit_retrieve.py error-cut.txt html/error -N 5 http://kurabo.co.jp HostNotFoundError http://monarch.com HostNotFoundError http://nssmgmt.com HostNotFoundError http://sbcglobal.ne

我有一个使用子进程获取HTML的脚本:

misha@misha-K42Jr:~/git/domain_classifier$ python webkit_retrieve.py error-cut.txt html/error -N 5
http://kurabo.co.jp HostNotFoundError
http://monarch.com HostNotFoundError
http://nssmgmt.com HostNotFoundError
http://sbcglobal.net HostNotFoundError
http://dynamixcorp.com SslHandshakeFailedError
http://groupe-synox.com RemoteHostClosedError
QFont::setPixelSize: Pixel size <= 0 (0)
http://www.cnn.com NoError
http://pacbell.net TimeoutError
misha@misha-K42Jr:~/git/domain\u分类器$python webkit\u retrieve.py error-cut.txt html/error-N 5
http://kurabo.co.jp HostNotFoundError
http://monarch.com HostNotFoundError
http://nssmgmt.com HostNotFoundError
http://sbcglobal.net HostNotFoundError
http://dynamixcorp.com SslHandshakeFailedError
http://groupe-synox.com RemoteHostClosedError
QFont::setPixelSize:Pixel size stdout.txt

QFont::setPixelSize:Pixel size您已将标准输出发送到文件,但您的程序正在报告错误,这些错误将转到标准输出。要设置stderr的重定向,请使用
2>
语法


此链接可能会有所帮助:

您的输出将进入标准错误。尝试使用以下命令重定向stderror和stdout:

<command> 2>&1 <file>
2>&1

使用
&
进行重定向,这应该将
stdout
stderr
重定向到指定的文件

我有一个QApplication作为脚本的一部分。这似乎在某种程度上影响了输出重定向。其他没有QApplication的脚本似乎按照预期重定向。它可能是某个地方的一个bug,但我不会费心去追踪它。

如果它回显到
stderr
,那么当命令运行时,只要
stdout
重定向,它不会仍然显示在终端上吗?很好。鉴于“像素大小”行的外观,几乎看起来stderr实际上被重定向了stderr正在按照linux系统上的默认行为正确地打印到标准输出(像素大小的东西)。我不想重定向stderr,我想重定向stdout。你在文件中得到了什么?文件是空的,因此
cat stdout.txt
绝对不会打印任何内容。如果输出是到stderror,那么我会在控制台中看到它(就像我在第一种情况下所做的那样)。在第二种情况下,输出被重定向到一个文件,但该文件最终为空。不起作用,文件未被创建。我一直在成功地使用
,20年后它停止了(不确定这是否与python脚本不起作用有关)。现在有了
&>
它就工作了。这是怎么回事?
<command> 2>&1 <file>