百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

懒人专用:利用自动脚本清理不断增长的多余日志

off999 2025-03-26 15:26 84 浏览 0 评论

本期跟运维有关

技术类型: Linux指令

应用平台: Centos

使用范围: 命令行/脚本

用到工具: vi

在我们常用的Linux服务器上, 每天由各种服务生成的日志文件有很多

如果不注意的话, 就有可能出现日志文件过大的问题,从而占用我们过多的磁盘空间

人工定时检查, 既费力又不讨好, 还容易错过处理时机,导致磁盘空间告急

日志增长, 让人捉急

程序员天生就是懒的, 所以我们来解决一下这个问题

Linux中有个sed 命令是利用脚本来处理文本文件。

sed 可依照脚本的指令来处理、编辑文本文件。

语法

sed [-hnV][-e<script>][-f][文本文件]

在这里我们用到它的其中一个参数:

-i	此选项会直接修改源文件

先举个栗子, 我们准备一个简单的文本文件,用来模拟日志文件

你可以用vi手工创建这个文件

试一下这么一条指令

'2d'中的d, 表示删除, 它会删除指定行中的所有内容

sed -i '2d' demo.txt

第2行被删除了

一行行删除, 这不符合我们的要求

一般日志记录, 最新的在后面, 旧的在前面

那么我们需要删除第1行至第5行要怎么做?

sed -i '1,5d' demo.txt

把刚才的demo.txt恢复一下, 方便展示效果

前5行成功删除

好, 有了这个后, 我们就可以来正式准备我们的脚本了

先创建自动化脚本

vi auto.sh

为了我们的自动脚本更聪明些, 我们先来定义一个方法

脚本文件内容, 这里我们清前3条试试

$(1) 表示是方法的第1个参数

#!/bin/bash
function cleanline(){
    sed -i '1,3d' ${1}
}

这样做的目的, 是当我们同时要管理(清理)多个日志文件时, 就很方便了

这样调用(写在方法下方), 注意日志文件要完整的路径

cleanline "/data2/logs/demo.txt"

给这个新的脚本文件执行权限

chmod +x auto.sh

恢复用来演示的demo.txt内容, 执行脚本

./auto.sh

前3行清除成功

到这里还有点问题, 为了我们的函数更健壮一些

我们需要考虑一下, 如果日志行数太少时, 就不要再清理, 其一删除可能会出错; 其二日志全清了不方便查看最近的日志,总要留一点不是么.

这个时候我们要借助awk命令来计算一下日志文件的行数, 以方便函数的判断执行

把刚才的函数进一步完善, 只有当大于5行时, 才删除多余的日志行内容

function cleanline(){
  count=$(awk 'END{print NR}' ${1})
  echo "${1} lines: ${count}"
  if [ $count -ge 5 ] ;then
    echo "${1} over 5 line"
    sed -i '1,3d' ${1}
  fi
}

执行看看效果

行数小于5时就不再清理日志了

投入使用时, 可以参考这样的例子

#!/bin/bash
echo "clearing logs..."

#删除指定文件中的前5000行内容(文件行数超过7000行的话)
function cleanline(){
  count=$(awk 'END{print NR}' ${1})
  echo "${1} lines: ${count}"
  if [ $count -ge 7000 ] ;then
    echo "${1} over 7000 line"
    sed -i '1,5000d' ${1}
  fi
}

cleanline "/data/logs/nginx.log"
cleanline "/data/logs/db.log"
cleanline "/data/logs/java.out"

具体行数可以根据实际日志增长速度来设定

更进一步的可以把行数也通过参数传入, 这样cleanline函数就可以变得更通用

最后

把这个脚本放到自动任务里去, 这样:

crontab -e

添加一行, 让它每天凌晨1点执行一次

0 1 * * *       /root/auto.sh

结束

安逸了, 走, 省下来的时光摸鱼去

这期就酱,下期再见

复杂的问题简单化

每次只关注一个知识点

对技术有兴趣的小伙伴可以关注我, 我经常分享各种奇奇怪怪的技术知识

相关推荐

win10有产品id没有密钥(win10 我没有产品密钥)

WIN10,在左下角输入WINDOWSPOWERSHELL,然后点击系统查询结果第一项,在弹出的窗口中输入:(Get-WmiObject-query‘select*fromSoftware...

win10截屏后找不到了(win10截屏后找不到了怎么办)

Win10系统截屏后没有更新通知并不是一个常见的问题。可能是由于系统设置或者安装的软件造成的。如果系统设置为静音或者禁用通知,那么截屏后不会有通知。另外,一些截屏软件可能会阻止系统通知,需要手动设置...

微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
运行定时关机命令(运行定时关机命令怎么设置)

1、打开电脑,按住【Win+R】组合键,弹出运行命令,在编辑框内输入如下命令:shutdown-s-t3600;电脑定时关机运行2、shutdown-s-t3600命令的含义如下:shut...

win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
键盘快捷键(键盘快捷键是哪个)

电脑键盘快捷键大全:Ctrl+1,2,3... 功能:切换到从左边数起第1,2,3...个标签Ctrl+A 功能:全部选中当前页面内容Ctrl+C 功能:复制当前选中内容Ctrl+D 功能:打开“添加...

宏基acer官网商城(宏基官方商城)

宏碁本本底部有个序列号标签,不是粉色的那个,粉色的是系统的序列号,白色的是本本的出厂序列号,上宏碁官网查查你的序列号就知道真假了。在盖子的后面就可以查询到序列号,或者是去网上查询宏碁笔记本在官网下...

网盘在哪里打开(华为网盘在哪里打开)

给你的是一个网盘地址吧,直接把这个地址放到浏览器地址栏就好了,如果有提取码,他会提示你输入提取码的。一般都是在网上找到百度云链接,然后把文件保存在自己的百度网盘文件夹里面的。打开百度网盘app,...

win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
win7sp1专业版(win7专业版vl)

Win7系统SP1是系统发布后第一个SP包x64是64位操作系统。Windows7指的是微软公司的Windows7操作系统ultimate指的是旗舰版(with表示伴随,说明这是提供商所提供...

手写输入法手写板怎么设置(手写输入法手写板怎么设置 iphone)

手写输入法设置方法:1、打开手机至桌面主页,保持手机处于工作状态;  2、在手机桌面主页列表找到设置,点击打开并进入设置主界面;  3、在设置主界面找到系统设置选项,点击打开并进入系统设置主界面;  ...

推荐杀毒软件(下载杀毒软件最新版)
推荐杀毒软件(下载杀毒软件最新版)

好的杀毒软件有360杀毒,金山毒霸,AVG杀毒等等。1,360杀毒,品牌介绍:360安全卫士品牌是一款由奇虎360公司推出的功能强、效果好、受用户欢迎的安全杀毒软件。360安全卫士拥有查杀木马、清理插件、修复漏洞、电脑体检、电脑救援、保护隐...

2025-11-12 08:51 off999

百度云盘官网(百度云盘官网下载)

网盘在手机上面仅仅是一个图标,他是不占用手机硬盘的,当然,如果你从网盘上下载了文件到本地,下载的文件就会占用手机的硬盘空间。要找到这个文件,可以通过文件管理器来进行查找,也可以通过路径的方式来查找,但...

路由器设置管理系统(路由器设置管理员密码怎么设置)
路由器设置管理系统(路由器设置管理员密码怎么设置)

电脑端:把华为路由器接通电源,并开启WIFI,如果你使用电脑PC端,请使用网线连接路由器;成功连接到路由器之后,打开电脑浏览器,在浏览器中输入IP地址:192.168.3.1即可进入华为路由器管理界面;进入我要上网页面。在上网方式下拉框中,...

2025-11-12 07:51 off999

win10家庭版密钥在哪里看(windows10家庭版密钥在哪里)

要查看Windows10系统的激活密钥,请按照以下步骤操作: 1.点击“开始”菜单,然后选择“设置”(齿轮图标)。 2.在“设置”窗口中,选择“更新和安全”。 ...

取消回复欢迎 发表评论: