CentOS Bash中后台执行命令重定向后仍输出至屏幕的问题
问题原因及解决办法
你遇到的情况是因为siege工具的输出逻辑设计:它把请求/响应的详细内容输出到标准输出(stdout),但最终的汇总统计信息被输出到了标准错误(stderr)——哪怕这部分内容不是错误信息。
你用的> pressure_image.log只重定向了标准输出到文件,标准错误还是会默认输出到终端屏幕,所以汇总信息会显示出来。
解决方法
把标准错误也一起重定向到同一个文件就行,用下面两种命令都可以:
方法1(兼容多数Shell):
siege -H "Content-Type:application/json" -c 10 -r 1000 'http://h1:9091/identity/co POST < identity_image.json' > pressure_image.log 2>&1 &
这里的2>&1表示把文件描述符2(stderr)的输出重定向到文件描述符1(stdout)当前指向的位置,也就是和stdout一起写入pressure_image.log。
方法2(仅Bash支持,更简洁):
siege -H "Content-Type:application/json" -c 10 -r 1000 'http://h1:9091/identity/co POST < identity_image.json' &> pressure_image.log &
&>是Bash的简写,直接把stdout和stderr都重定向到指定文件。
末尾的&可以让命令在后台执行,不占用当前终端会话。
内容的提问来源于stack exchange,提问作者Tiina
相关产品推荐
相关产品推荐

