从linux命令获取屏幕上的输出

我试图得到一个命令的输出,但我不能得到它。 如果我手动运行,它会在屏幕上返回正常的结果。

[root@mymachine ~]# dnsdist -e "topQueries()" 1 Rest 0 100.0%

我试着用dnsdist -e 'topQueries() 2>&1 1> /tmp/abc 。 但是/tmp/abc仍然是空的。 我不认为screen命令可以解决它。 有没有人有任何build议?

补充信息:

1rest0 100.0%

是topQueries()的结果。 '-e'表示在dnsdist中执行一个命令。 它看起来像我们访问MySQL然后我们调用一个SQL语句。

rkosegi评论说 ,秩序是重要的。 当你运行:

 examplecommand 2>&1 1> /tmp/abc 

它采用stderr输出并将其发送到stdout当前正在进行的位置 ,然后将stdout发送到文件。

您可能需要,而不是:

 examplecommand 1> /tmp/abc 2>&1 

它将stdout发送到文件,然后将stderr发送到stdout当前正在进行的位置 ,即文件。

为了使屏幕和文件/ tmp / abc都具有stderr和stdout,你可以使用tee。

 $cat a.sh echo "stderr" >&2 echo "stdout" ./a.sh 2>&1 | tee /tmp/abc stderr stdout $ cat /tmp/abc stderr stdout