我正在尝试通过 运行应用程序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