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

记录一下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日志颜色处理方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 深入理解Shell输出颜色与控制

    前言 大家都知道使用ls命令列出文件列表时,不同的文件类型会用不同的颜色显示.那么如何实现这样带颜色的文本输出呢?答案并不复杂,不管是用shell还是C语言. 一.shell下的实现方法 先来讲在shell下,如何实现.用echo命令就可以实现,参看以下例子: echo -e "33[32mHello, world!" 当你在终端里敲下这条命令后,是不是发现系统用绿色输出了"Hello,world!",不止如此,连之后的命令提示符都变成了绿色?不要着急,听我继续说.

  • 在shell或者perl中改变字体或背景的颜色

    在shell下提到终端的颜色的时候不得不提到几个提示符变量: PS1:默认提示符,也就是远程登上系统之后,打开终端,我们天天见到的那个熟悉的提示符: [root@vps ~]$echo $PS1[\u@\h \W]$ PS2:就是我们命令一行写不完在我们命令行下我们打上"\",另起一行所显示的那个: [root@vps ~]$echo "hello" \> "world"hello world[root@vps ~]$echo $PS1[\

  • Powershell 查询 Windows 日志的方法

    论坛里面有人询问如何使用powershell脚本查询文件修改的审计日志,豆子服务器没开这个功能,不过尝试写了个类似的脚本可以查询日志,并输出对应的xml内容. 基本方法是get-winevent, 可以指定对应的eventid,获取列表.如果想获取这个事件具体的内容,需要根据不同事件的xml内容进行变化. 比如 $Events = Get-WinEvent -ComputerName syddc01 -FilterHashtable @{Logname='Security';Id=4771} -

  • linux shell的输出效果修改方法(界面颜色)

    文本终端的颜色可以使用"ANSI非常规字符序列"来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符"ME",然后重新设置屏幕到缺省设置,输出字符 "COOL"."e"是命令 echo 的一个可选项,它用于激活特殊字符的解析器."\033"引导非常规字符序列."m"意味着

  • shell脚本实现分日志级别输出的方法

    shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能 ①设定日志级别,实现可以输出不同级别的日志信息,方便调试 ②日志格式类似为:[日志级别] 时间 funcname:函数名 [lineno:行号] 日志信息 ③不同级别,设定不同颜色 ④让其变为函数库文件,重用代码 下面看看我用shell记录日志的进化之路 1.最简单的日志记录方式 对于刚入门的同学,记录日志一般用echo加重定向方式,这应该是最原始的方式了^_^ echo "log me

  • Linux下日志按日分割的shell

    这个脚本是在LNMP论坛找到的,感觉很不错~~ 脚本如下: #!/bin/bash #function:cut nginx log files for lnmp v0.5 and v0.6 #author: http://lnmp.org #设置你的日志存放的目录 log_files_path="/home/wwwlogs/" #日志以年/月的目录形式存放 log_files_dir=${log_files_path}$(date -d "yesterday" +&

  • Shell脚本定期清空大于1G的日志文件

    一个关于如何在指定文件大于1GB后,自动删除的问题. 批处理代码如下: 复制代码 代码如下: #!/bin/bash # 当/var/log/syslog大于1GB时 # 自动将其备份,并清空 # 注意这里awk的使用 if ! [ -f /var/log/syslog ] then echo "file not exist!" exit 1 fi if [ `ls -l /var/log/syslog|awk '{print $5}'` -gt $((1024*1024)) ] th

  • Linux shell脚本输出日志笔记整理(必看篇)

    1.日志方法简介: #日志名称 log="./upgrade.log" #操作日志存放路径 fsize=2000000 #如果日志大小超过上限,则保存旧日志,重新生成日志文件 exec 2>>$log #如果执行过程中有错误信息均输出到日志文件中 #日志函数 #参数 #参数一,级别,INFO ,WARN,ERROR #参数二,内容 #返回值 function zc_log() { #判断格式 if [ 2 -gt $# ] then echo "parameter

  • 利用shell命令统计日志的方法详解

    前言 大家都知道,通过使用 shell 命令可以很方便地对日志进行统计和分析,当服务有异常的时候,需要去排查日志,那么掌握一种统计日志的技巧就是必不可少的了. 假设有一个包含下面内容的日志文件 access.log.我们以统计这个文件的日志为例. date=2017-09-23 13:32:50 | ip=40.80.31.153 | method=GET | url=/api/foo/bar?params=something | status=200 | time=9.703 | bytes=

  • linux BASH shell下设置字体及背景颜色

    BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字符的显示颜色改为黑色 \e[31m 将字符的显示颜色改为红色 \e[32m 将字符的显示颜色改为绿色 \e[33m 将字符的显示颜色改为淡红色 \e[34m 将字符的显示颜色改为蓝色 \e[35m 将字符的显示颜色改为紫色 \e[36m 将字符的显示颜色改为淡蓝色 \e[37m 将字符的显示颜色改为灰色 \e[40m -- \e[47m 设置背景色 \e[40m 将背景色设

  • Shell脚本切割tomcat的日志文件

    鉴于在调试logback和log4j的文件切割一直无法成功,随性用shell写个脚本用来切割tomcat下的日志文件(大家如果有在logback或log4j使用文件切割成功的话,可以留下使用方式,先谢谢了) 1:废话少说,直接贴上脚本: #!/bin/sh log_dir=/var/log/tomcat monitor_file=$1 #tomcat目录下的catalina.out文件的绝对路径 file_size=`du $monitor_file | awk '{print $1}'` if

  • shell脚本中echo显示内容带颜色的实现方法

    shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: 复制代码 代码如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: 复制代码 代码如下: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1.字背景颜色和文字颜色之间是英文的"" 2.文字颜色后面有个m 3.字符串前后可

随机推荐