shell脚本打印日志方法
2015-11-24 22:02
696 查看
作者:【吴业亮】云计算开发工程师
博客:http://blog.csdn.net/wylfengyujiancheng
在shell脚本执行过程中如果没有日志记录,特别是脚本比较长的情况下在执行完再定位问题很难发现问题原因,因此在脚本中增加日志显得十分重要。如何在日志中记录是哪个用户什么时间执行的哪个脚本,执行结果又是什么呢?下面介绍日志打印方法
example 1
调用log_info函数,如果希望只记录相关信息,不对命令执行结果进行判断
判断/etc/passwd是否存在,如果存在就记录一条日志“/etc/passwd is exist.”
example 2
调用fn_log函数,如果命令执行成功就回显绿色信息,失败回显红色信息。并在日志中记录成功或失败信息。
example 3
如果脚本在执行过程中用户按了CTR+C 终止脚本执行,回显“DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!!”,并在日志中记录。
记录日志函数代码如下:
博客:http://blog.csdn.net/wylfengyujiancheng
在shell脚本执行过程中如果没有日志记录,特别是脚本比较长的情况下在执行完再定位问题很难发现问题原因,因此在脚本中增加日志显得十分重要。如何在日志中记录是哪个用户什么时间执行的哪个脚本,执行结果又是什么呢?下面介绍日志打印方法
example 1
调用log_info函数,如果希望只记录相关信息,不对命令执行结果进行判断
判断/etc/passwd是否存在,如果存在就记录一条日志“/etc/passwd is exist.”
[code] if [ -f /etc/passwd ] then echo -e "\033[32m /etc/passwd is exit \033[0m" log_info "/etc/passwd is exist." fi
example 2
调用fn_log函数,如果命令执行成功就回显绿色信息,失败回显红色信息。并在日志中记录成功或失败信息。
[code]rm -f /tmp/messages && cp -a /var/log/messages /tmp fn_log "rm -rf /tmp/message && cp -a /var/log/message /tmp" ping -c 3 10.10.10.10 fn_log "ping -c 3 10.10.10.10 "
example 3
如果脚本在执行过程中用户按了CTR+C 终止脚本执行,回显“DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!!”,并在日志中记录。
记录日志函数代码如下:
[code]#!/bin/bash #log path is /var/log/openstack-kilo #if commod execute sucessed,it will return 0 else return 1 # Copyright 2014 Intel Corporation, All Rights Reserved. function log_info () { if [ -d /var/log ] then mkdir -p /var/log fi DATE_N=`date "+%Y-%m-%d %H:%M:%S"` USER_N=`whoami` echo "${DATE_N} ${USER_N} execute $0 [INFO] $@" >>/var/log/openstack-kilo #执行成功日志打印路径 } function log_error () { DATE_N=`date "+%Y-%m-%d %H:%M:%S"` USER_N=`whoami` echo -e "\033[41;37m ${DATE_N} ${USER_N} execute $0 [ERROR] $@ \033[0m" >>/var/log/openstack-kilo #执行失败日志打印路径 } function fn_log () { if [ $? -eq 0 ] then log_info "$@ sucessed." echo -e "\033[32m $@ sucessed. \033[0m" else log_error "$@ failed." echo -e "\033[41;37m $@ failed. \033[0m" exit 1 fi } trap 'fn_log "DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!! "' 2
相关文章推荐
- Linux Bash 字符串/布尔/文件操作符
- [zz]Linux系统相关shell命令
- Linus Bash Shell 的特殊变量和关系运算符
- 【学神-RHEL6.5】1-17 shell基础及if表达式
- python 从shell读取指定文件以及写入指定文件
- HBase Shell工具操作HBase
- [工具类] Shell
- 转:makefile里面引用shell注意
- shell 里执行sqlldr,not found
- Shell自动修改CentOS6网卡配置文件
- expect shell python glpi exception.mac
- shell任务不受意外中断影响的常见方法
- 使用 Screen 创建并管理多个 shell
- PowerShell,远程操作,读写复制备份文件
- git中用shell命令停止nodejs服务
- 定时执行powershell获取邮箱登录数据
- 如何使用XShell登录亚马逊EC2云服务器
- windows使用xshell免密码登陆远程Linux服务器教程
- bash programming
- [PowerShell Utils] Remotely install Hyper-V and Failover Cluster feature on a list of windows 2012 servers