我想将命令“apachectl configtest”的输出记录到一个文件中。所以我尝试了以下命令:

root@ubuntu:~# echo $(apachectl -t) >> /tmp/apache_config_check
[Sun Feb 21 14:35:23.614947 2016] [proxy_html:notice] [pid 29249] AH01425: I18n support in mod_proxy_html requires mod_xml2enc. Without it, non-ASCII characters in proxied pages are likely to display incorrectly.
Syntax OK

但它的输出是空的:
root@ubuntu:~# cat /tmp/apache_config_check

root@ubuntu:~#

我还尝试了命令本身的一个变体:
root@ubuntu:~# apachectl -t >> /tmp/apache_config_check

以及T恤上的变化:
root@ubuntu:~# $(apachectl -t) | tee /tmp/apache_config_check

没有运气。
我真的不知道有什么其他方法可以通过管道输出,也不知道为什么上面的命令失败了。这是基本的东西吗?

最佳答案

问题是apachectl正在将其输出发送到stderr而不是stdout。因此,您需要按如下方式重定向stderr:

apachectl -t > /tmp/apache_config_check 2>&1

2>&1是shell脚本的魔法,它说“将文件描述符2(stderr)上的输出重定向到文件描述符1(stdout)”。

10-04 16:59