跳转至

shell脚本开启日志输出

脚本外部调试,日志输出

我们记录脚本执行过程,一般都写在外部,比如

Bash
1
2
3
4
5
# 标准输出与错误输出统一导出到日志
bash test.sh >> tmp.log 2>&1
# 单独导出,1为标准输出,2为错误输出
bash test.sh 1>> tmp.log  # 标准输出导入日志,控制台不输出
bash test.sh 2>> tmp.log  # 错误输出导入日志,控制台输出正确内容

以上是脚本的正常执行输出,一般脚本内部使用 echo print 等打印的内容

但是一些命令执行的过程,可能需要 -x 开启调试,然后将详细内容输出到日志

这些都是在脚本外部执行,一般用于 调试

脚本内部启用日志输出

也可以将相关日志输出需求写在脚本内部,使用时直接执行,默认输出日志

非常简单,在脚本开头启用

Bash
1
2
3
4
5
6
7
8
#!/bin/bash
set -x # 开启调试功能

# 终端显示,并且日志输入到文件,脚本调试时使用
exec > >(tee -a /root/bash_log) 2>&1  

# 将执行日志输出到log,终端不会显示了,一般后台执行时使用
exec >> /root/bash_log 2>&1 

tee 命令

将执行过程打印到控制台并且输出到文件

普通输出

command | tee output.log

command | tee -a output.log -a为追加

可以使用 |& 来传输 标准与错误输出:

command |& tee -a output.log

另一种标准与错误输出

command > >(tee -a output.log) 2>&1