文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用shell怎么清理系统日志

2023-06-09 14:19

关注

使用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_supportechoerror() {  printf "${RC} * ERROR${EC}: %s\\n" "$@" 1>&2;}echoinfo() {  printf "${GC} * INFO${EC}: %s\\n" "$@";}echowarn() {  printf "${YC} * WARN${EC}: %s\\n" "$@";}

下面看下shell清理系统日志

设置日志峰值,到达则删除
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怎么清理系统日志问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯