我想将命令“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)”。