【发布时间】:2019-04-11 05:01:27
【问题描述】:
我正在运行 Vowpal Wabbit 守护程序,我从以下命令开始:
vw -i X_b123.model -t --quiet --daemon --port 26542 -r /dev/stdout
然后我尝试向守护进程发送一些东西:
echo 'somedataforwovpal' | netcat localhost 26542 -q1
我得到答案,像这样(两行都是答案):
1:-0.0268077 2:-0.0990701 3:-0.154975
2
目前,一切都完美无缺。 我想要的只是将此输出发送到文件。这就是让我发疯的地方。为什么?通常我会做的很简单,通过发送 stdout 到这样的文件:
echo 'somedataforwovpal' | netcat localhost 26542 -q1 > myfile.txt
嗯,这只是部分起作用。该文件已创建,但它仅包含输出的第二行(仅数字 2)和第一行 1:-0.0268077 2:-0.0990701 3:-0.154975仍在打印到控制台。
所以我的想法是,第二部分将转到 stderr,所以我尝试了以下几种方法来保存 stderr/stdout 输出:
echo 'somedataforwovpal' | netcat localhost 26542 -q1 2> myfile.txt
echo 'somedataforwovpal' | netcat localhost 26542 -q1 2>&1 > myfile.txt
echo 'somedataforwovpal' | netcat localhost 26542 -q1 &> myfile.txt
echo 'somedataforwovpal' | netcat localhost 26542 -q1 > myfile.txt 2>&1
echo 'somedataforwovpal' | netcat localhost 26542 -q1 >> myfile.txt
script -c "echo '1 |w auto_t dum_qt |f auto_t dum_qt |m qm_pos_2' | netcat localhost 26542 -q1" myfile.txt
没用,还是一样。如您所见,这些方法都没有,我什至尝试过脚本,但仍然相同。真的快把我逼疯了,请问有没有人能救我?
【问题讨论】:
-
第三和第四行将同时捕获标准输出和标准错误。如果它们不起作用,那么还有其他问题。
-
你试过了吗:>> myfile.txt ...只是看到netcat没有调用两次,擦除了进程中的第一行?
-
是的,我试过了,但没有帮助,对不起
-
附加的输出行来自
vw,而不是来自netcat。当您第一次启动守护程序时,我会尝试将vwstderr 重定向到您感兴趣的文件:vw -i X_b123.model -t --quiet --daemon --port 26542 -r /dev/stdout >& myfile.txt -
arielf,谢谢,这就是问题所在(我只是不能将其作为解决方案,因为它不是答案,而是评论)
标签: bash shell unix stdout vowpalwabbit