2016-11-24 228 views
0

重定向命令输出的问题已被多次询问,但是我遇到了一个奇怪的行为。我正在使用版本为 的bash shell(debian)4.3.30(1) - 释放并试图将输出重定向到文件,但并非所有内容都记录在文件中。 我试图运行的bin文件是酱connectv4.4.1为Linux(saucelabs的客户端,在网上公开可用)bash将输出重定向到文件,但结果不完整

如果我运行

#sudo ./bin/sc --doctor 

它向我展示了一个完整的生产线
它打印:

信息:解析到'23 .42.27.27'
INFO:解决 'g2.symcb.com' 使用 .0.0.5'DNS服务器'10 ...... (其次是其他线)
信息: 'google.com' 不在hosts文件
信息:URL https://google.com可以达到

但是,如果我重定向相同的命令到一个文件中使用下面的命令

#sudo ./bin/sc --doctor > alloutput.txt 2>&1 

,做

#cat alloutput.txt 

同一个命令输出记录,但反对如下:

信息:解析为'23 .42.2me @ mymachine上中:/ opt/$

它具有不完整的线,下一行是下面甚至没有记录(缺少)。

我试过用>>来追加,它有同样的问题。使用命令&> alloutput.txt也不是打印整个东西。任何人都可以指出如何让上述命令的所有行完全记录到文本文件中?

UPDATE

在我设法通过使用--log alloutput.txt它完全为我提供正确的输出使用本机二进制日志的结尾。 但我让这个问题的开放,我仍然不知道为什么一个做的输出重定向

+1

'cat -v alloutput.txt'的输出是什么? – chepner

+0

@chepner:cat -v alloutput的输出。txt与上述二进制文件执行并显示在控制台中的情况相同,但是缺少一些行(如段落中所述) – heike

+1

另一个尝试:分别重定向标准错误和标准输出:'./bin/sc> out.txt 2> err.txt'。我怀疑输出CRLF行结尾的'。/ bin/sc'与stdout和stderr的非确定性混合相结合。 – chepner

回答

0

这是一个有趣的问题,我从来没有见过这种情况发生过。我打算在这里出现一个肢体,并建议这个,看看它是如何工作的:

sudo ./bin/sc --doctor 2>&1 | tee -a alloutput.txt 
+0

信息:解析为'162.222.75.243' 信息:使用DNS服务器'192.168.2.1'解析'saucelabs.com'... 信息:解析为'[email protected]:/ opt/$仍然不起作用。这真的很奇怪,尝试过不同的方法,但我仍然没有看到可能的原因 – heike

+1

我相信它与程序本身有关,以及它如何构建。如果原生二进制文件有效,那么作者可能会预期这样的情况并提供解决方案。不过,这很奇怪。如果可以,请尝试其他方法,仅用于踢腿:将结果存储在变量中,然后输出值:testVar =“$(sudo ./bin/sc --doctor)”;回声“$ testVar”; –

-1
#commandtorun &> alloutput.txt 

此命令将重定向两个错误,并输出到同一个文件中错过了一些资料/线。

+0

完全相同的结果,output.txt不完整。同一行缺失 – heike

+0

有点解释会很好。 – sjsam

+0

@sjsam我应该添加什么样的信息?我只是用Bash版本编辑原始文本 – heike