xvfb-run 仅将 STDOUT 和 STDERR 重定向到 STDOUT

xvfb-run 仅将 STDOUT 和 STDERR 重定向到 STDOUT

我正在尝试通过 运行应用程序xvfb-run。我需要独立于 STDERR 访问此应用程序的 STDOUT 流。通常,我会这样做:

node script.js > output.txt

然后我希望在控制台上看到任何 STDERR 输出,并在 中看到任何 STDOUT 输出output.txt。这很好用。但是,当我使用 运行时xvfb-run

xvfb-run node script.js > output.txt

在这种情况下,我的脚本中的 STDERR 和 STDOUT 都被放入了output.txt。这是不可取的。

如何使用xvfb-run而不失去重定向原始 STDOUT 和 STDERR 流的能力?

作为参考,这里有一个我正在测试的 Node.js 脚本示例:

process.stdout.write('STDOUT Test Line\n');
process.stderr.write('STDERR Test Line\n');

谢谢。

答案1

这是几年前报告的一个错误。/usr/bin/xvfb-run手动编辑确实解决了该问题。来自https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868876

Removing the 2>&1 from the exec line in xfvb-run solves this.

--- /usr/bin/xvfb-run   2017-07-07 07:09:57.000000000 +0200
+++ -   2017-07-19 14:07:29.727690002 +0200
@@ -180,7 +180,7 @@
 
 # Start the command and save its exit status.
 set +e
-DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1
+DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@"
 RETVAL=$?
 set -e

相关 Ubuntu 错误报告: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1059947

相关内容