shell日志颜色处理及清理系统日志的方法

所属分类: 脚本专栏 / linux shell 阅读数: 1028
收藏 0 赞 0 分享

记录一下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_support
echoerror() {
  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
 exit
fi
cd /home/zxd/
./test.sh
下边这个带有日志时间加时间戳及系统负载检测:
#! /bin/bash
strA="long string"
strB="string"
result=$(echo $strA | grep "${strB}")
if [[ "$result" != "" ]]
then
  echo "包含"
else
  echo "不包含"
fi
#日志目录及限定大小
workdir="/var/*.log"
maxsize=100
#给文件加时间戳:函数里的变量必须在脚本函数后边跟着,这里$1不是命令行跟的参数,命令行的参数为脚本的$1
filetime(){
 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日志颜色处理方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

linux whatis与whatis database 使用及查询方法(man使用实例)

在学习man命令时候,估计很多朋友都发现有man –f ,man –k 参数,可以查出很多数据。这些有的与man手册页相同,有些不是属于手册页的。它们数据怎么收集来的,并且whatis是怎么样工作的
收藏 0 赞 0 分享

linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random)

这篇文章主要介绍了linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random),需要的朋友可以参考下
收藏 0 赞 0 分享

linux shell命令快捷获得系统帮助(一)[man-pages定义规范]

linux命令帮助,一般有2种,命令自身代码里面带有使用帮助说明,这种一般很精简,太长了,程序自身的大小以及日常维护不方便。还有一种,就是带有帮助文件,类似windows的chm格式文件。下面我说下这2种怎么样查阅
收藏 0 赞 0 分享

linux shell实现随机数几种方法分享(date,random,uuid)

这篇文章主要介绍了linux shell实现随机数多种方法(date,random,uuid),需要的朋友可以参考下
收藏 0 赞 0 分享

linux shell 脚本实现tcp/upd协议通讯(重定向应用)

这篇文章主要介绍了linux shell 脚本实现tcp/upd协议通讯(重定向应用),需要的朋友可以参考下
收藏 0 赞 0 分享

linux shell数据重定向(输入重定向与输出重定向)详细分析

这篇文章主要介绍了linux shell数据重定向(输入重定向与输出重定向)详细分析,需要的朋友可以参考下
收藏 0 赞 0 分享

linux shell 管道命令(pipe)使用及与shell重定向区别

这篇文章主要介绍了linux shell 管道命令(pipe)使用及与shell重定向区别,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux下使用tcpdump抓包的实现方法

tcpdump是Linux下面的一个开源的抓包工具,和Windows下面的wireshark抓包工具一样, 支持抓取指定网口、指定目的地址、指定源地址、指定端口、指定协议的数据。这篇文章主要介绍了Linux下使用tcpdump抓包的实现方法,需要的朋友可以参考下
收藏 0 赞 0 分享

零基础入门篇之Linux及Arm-Linux程序开发笔记

这篇文章主要介绍了零基础入门篇之Linux及Arm-Linux程序开发笔记,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux 中 CURL常用命令详解

这篇文章主要介绍了Linux 中 CURL常用命令详解,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多