背景
在命令行中执行sh文件后,终端里会显示打印出来的信息,但需要一点点翻动来看很麻烦。以下命令帮助我们将标准输出和标准错误显示在终端上,并且保存到文件中。
命令
命令如下,直接在命令行中输入即可:
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)
解释
- LOG_STDOUT 为输出日志所在的目录
- LOG_STDERR 为错误日志所在的目录
- bash xxx.sh是执行任务脚本,加入-x参数是可以把sh里面的信息也打印出来(否则可能会忘记该任务用了哪些参数)
- 最后使用tee命令,可以使得输出和错误信息都保存到文件,同时也保持在终端中显示。
结果
执行以上命令后我们会在相应目录下得到两个日志文件:
其中out文件记录了stdout内容,err文件记录了所执行的sh脚本的内容,以及stderr的内容。同时在终端也能同步打印输出信息。