RHEL7.9中chage命令输出重定向后生成空文件问题求助
问题分析与解决
问题原因
在RHEL 7.9中,非root用户执行chage -l myaccount时,命令的输出内容实际上是发送到**标准错误流(stderr)**而非标准输出流(stdout)。当你使用> tmp.log重定向时,仅捕获了stdout的内容,而实际的输出(在stderr中)并未被写入文件,因此生成的tmp.log是空文件。
解决方法
要正确捕获所有输出到日志文件,需要同时重定向stdout和stderr。有两种常用方式:
将stderr重定向到stdout,再统一写入文件:
chage -l myaccount > tmp.log 2>&1使用bash的简化语法直接重定向所有流到文件(适用于bash 4.0及以上版本,RHEL 7.9的bash版本满足要求):
chage -l myaccount &> tmp.log
验证方式
你可以通过以下命令验证输出流向:
- 执行
chage -l myaccount > /dev/null,如果仍能看到输出,说明内容在stderr中; - 执行
chage -l myaccount 2> /dev/null,如果仍能看到输出,说明内容在stdout中。
内容的提问来源于stack exchange,提问作者Chris James
相关产品推荐
相关产品推荐

