記錄一下shell日志顏色處理
_COLORS=${BS_COLORS:-$(tput colors 2>/dev/null || echo 0)}__detect_color_support() { # shellcheck disable=SC2181 if [ $? -eq 0 ] && [ "$_COLORS" -gt 2 ]; then RC='/033[1;31m' GC='/033[1;32m' BC='/033[1;34m' YC='/033[1;33m' EC='/033[0m' else RC="" GC="" BC="" YC="" EC="" fi}__detect_color_supportechoerror() { printf "${RC} * ERROR${EC}: %s//n" "$@" 1>&2;}echoinfo() { printf "${GC} * INFO${EC}: %s//n" "$@";}echowarn() { printf "${YC} * WARN${EC}: %s//n" "$@";}
下面看下shell清理系統日志
1.設置日志峰值,到達則刪除
2.定時檢測,crontab添加定時任務
3.后臺掛載 : ./xx.sh &
工作腳本:
#! /bin/sh#日志目錄及限定大小workdir="/var/*.log"maxsize=100#搜索最老文件,不加目錄默認的本目錄里邊的文件 r倒序輸出 t時間 head -n1取第一行 awk命令括號$1位文件名 管道連接oldfile(){ oldfile=`ls $workdir -t 2>/dev/null| head -n1 | awk '{printf $1}'`}clear_old_log(){ if [ ! $oldfile ] then #echo "日志不存在" 1>/dev/null return 0 fi while true; do oldfile if [ ! $oldfile ] then return 0 fi logsize=`du -ms $oldfile 2>/dev/null| awk '{printf $1}'` #m表示兆 k b if [ $logsize -gt $maxsize ] then str1="log" str2="err" if [[ $oldfile == *$str1* ]] then pkill snake rm -rf $oldfile fi if [[ $oldfile == *$str2* ]] then service mysql restart pkill snake rm -rf $oldfile fi else break fi done}testing(){ while true; do workdir="/var/*.log" oldfile clear_old_log workdir="/var/lib/mysql/*.err" oldfile clear_old_log done}testing定時任務腳本:#! /bin/sh#a=`pgrep -f test1.sh|wc -l`#if [ $(ps -ef|grep test.sh|wc -l) -gt 1 ]if test $(pgrep -f test.sh|wc -l) -ge 1 then exitficd /home/zxd/./test.sh下邊這個帶有日志時間加時間戳及系統負載檢測:#! /bin/bashstrA="long string"strB="string"result=$(echo $strA | grep "${strB}")if [[ "$result" != "" ]]then echo "包含"else echo "不包含"fi#日志目錄及限定大小workdir="/var/*.log"maxsize=100#給文件加時間戳:函數里的變量必須在腳本函數后邊跟著,這里$1不是命令行跟的參數,命令行的參數為腳本的$1filetime(){ a=$(date +%Y%m%d%H%M%S) A=$1.$(date +%Y%m%d%H%M%S) echo $A}filetime "/var/log"#搜索最老文件,不加目錄默認的本目錄里邊的文件 r倒序輸出 t時間 head -n1取第一行 awk命令括號$1位文件名 管道連接oldfile(){ oldfile=`ls $workdir -rt 2>/dev/null| head -n1 | awk '{printf $1}'`}clear_old_log(){ if [ ! $oldfile ] then echo "日志不存在" 1>/dev/null return 0 fi while true; do oldfile if [ ! $oldfile ] then echo "日志不存在" 1>/dev/null return 0 fi logsize=`du -bs $oldfile 2>/dev/null| awk '{printf $1}'` if [ $logsize -gt $maxsize ] then str1="log" str2="err" if [[ $oldfile == *$str1* ]] then pkill snake rm -rf $oldfile fi if [[ $oldfile == *$str2* ]] then service mysql restart pkill snake rm -rf $oldfile fi else break fi done}testing(){ echo "run" while true; do oldfile clear_old_log echo "222" workdir="/var/lib/mysql/libmaster.err" oldfile clear_old_log done}disk=`df |grep /dev/mapper/fedora-root | awk '{printf $5}' | sed 's/%//g'`echo "磁盤已用:%$disk"memtotal=`cat /proc/meminfo |grep MemTotal |awk '{printf $2}'`memfree=`cat /proc/meminfo |grep MemFree |awk '{printf $2}'`used=$((100- memfree*100/memtotal))echo "內存已用:%$used"echo "exit"testing
總結
以上所述是小編給大家介紹的shell日志顏色處理方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答