- #!/bin/bash
- LOG_FILE="/var/log/test.log"
- >"${LOG_FILE}"
- exec &>>${LOG_FILE}
- set -x
第一行是定义日志绝对路径
第二行是先清空日志文件内容
第三行是把当前脚本的标准输出, 标准错误输出都重定向到文件 LOG_FILE 中
第四行是打印每一行 shell 命令执行
exec 是用被执行的命令行替换掉当前的 shell 进程, 且 exec 命令后的其他命令将不再执行例如在当前 shell 中执行 exec ls 表示执行 ls 这条命令来替换当前的 shell 即为执行完后会退出当前 shell 但是当 exec 命令对文件描述符操作的时候, 就不会替换 shell, 而是操作完成后还会继续执行后面的命令例如第三行, 在这里 &>>LOG_FILE 意思是把标准输出, 标准错误输出都重定向到文件 LOG_FILE 中
一般只需要在脚本前面加上这几行就可以了, 日志内容就是脚本执行命令的全部过程和标准输出, 标准错误输出内容我们也可以自定义自己的打印函数:
- #!/bin/bash
- LOG_FILE="/var/log/test.log"
- exec 2>>${LOG_FILE}
- function my_log()
- {
- local curtime=`date "+%Y-%m-%d %H:%M:%S"`
- echo "$curtime $*">> ${LOG_FILE}
- }
- main()
- {
- my_log "hello world"
- }
- main "$@"
可以看到我们开始先把标准错误输出都重定向到文件 LOG_FILE 中, 我们自定义的打印函数前面会带上当前时间戳
来源: http://blog.csdn.net/peng314899581/article/details/79447509