該文章轉自:http://blog.csdn.net/wylfengyujiancheng/article/details/50019299
------------------------------------------------------------------------------------
在shell腳本執行過程中如果沒有日志記錄,特別是腳本比較長的情況下在執行完再定位問題很難發現問題原因,因此在腳本中增加日志顯得十分重要。如何在日志中記錄是哪個用戶什么時間執行的哪個腳本,執行結果又是什么呢?下面介紹日志打印方法
example 1
調用log_info函數,如果希望只記錄相關信息,不對命令執行結果進行判斷
判斷/etc/passwd是否存在,如果存在就記錄一條日志“/etc/passwd is exist.”
if [ -f /etc/passwd ] then echo -e "\033[32m /etc/passwd is exit \033[0m" log_info "/etc/passwd is exist." fi
- 1
- 2
- 3
- 4
- 5
- 6
example 2
調用fn_log函數,如果命令執行成功就回顯綠色信息,失敗回顯紅色信息。並在日志中記錄成功或失敗信息。
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 "
- 1
- 2
- 3
- 4
- 5
example 3
如果腳本在執行過程中用戶按了CTR+C 終止腳本執行,回顯“DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!!”,並在日志中記錄。
記錄日志函數代碼如下:
#!/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