【linux】执行bash文件后如何记录终端打印出来的输出和错误信息

背景

在命令行中执行sh文件后,终端里会显示打印出来的信息,但需要一点点翻动来看很麻烦。以下命令帮助我们将标准输出和标准错误显示在终端上,并且保存到文件中。

命令

命令如下,直接在命令行中输入即可:

1
2
3
4
5
LOG_STDOUT="/home/xxx/log/$(date '+%Y%m%d_%H%M%S')_out.log"
LOG_STDERR="/home/xxx/log/$(date '+%Y%m%d_%H%M%S')_err.log"

bash -x xxx.sh > >(tee "$LOG_STDOUT") 2> >(tee "$LOG_STDERR" >&2)

解释

  1. LOG_STDOUT 为输出日志所在的目录1. LOG_STDERR 为错误日志所在的目录1. bash xxx.sh是执行任务脚本,加入-x参数是可以把sh里面的信息也打印出来(否则可能会忘记该任务用了哪些参数)1. 最后使用tee命令,可以使得输出和错误信息都保存到文件,同时也保持在终端中显示。

结果

执行以上命令后我们会在相应目录下得到两个日志文件:
在这里插入图片描述
其中out文件记录了stdout内容,err文件记录了所执行的sh脚本的内容,以及stderr的内容。同时在终端也能同步打印输出信息。


【linux】执行bash文件后如何记录终端打印出来的输出和错误信息
https://abigail61.github.io/2024/11/23/原创-- 【linux】执行bash文件后如何记录终端打印出来的输出和错误信息/
作者
Yajing Luo
发布于
2024年11月23日
许可协议