Linux 编写bash脚本删除一些长期没有清理的日志文件

发布时间:2024年01月24日

目? ? ? ? 录

一、Linux运行很久,发现磁盘空间不足

二、找到原因,是日志文件积累太多

三、编写脚本,删除以前的日志文件


一、Linux运行很久,发现磁盘空间不足

????????今天发现一个视频平台的服务器运行特别慢,输入命令,很长时间才有反应,查看硬盘,发现硬盘已满,如下:

[root@localhost CMS]# df

文件系统??????????????? 1K-块???? 已用????? 可用 已用% 挂载点

/dev/mapper/cl-root? 52403200 52402206 ???????994?? 100% /

devtmpfs????????????? 3826724??????? 0?? 3826724??? 0% /dev

tmpfs???????????????? 3843328????? 228?? 3843100??? 1% /dev/shm

tmpfs???????????????? 3843328??? 33852?? 3809476??? 1% /run

tmpfs???????????????? 3843328??????? 0?? 3843328??? 0% /sys/fs/cgroup

/dev/sda1???????????? 1038336?? 179388??? 858948?? 18% /boot

/dev/mapper/cl-home 251097304 58056592 193040712?? 24% /home

tmpfs????????????????? 768668?????? 20??? 768648??? 1% /run/user/1000

tmpfs????????????????? 768668?????? 12??? 768656??? 1% /run/user/42

tmpfs????????????????? 768668??????? 0??? 768668??? 0% /run/user/1001

[root@localhost CMS]#

二、找到原因,是日志文件积累太多

????????经过一番查找,发现日志文件积累的太多,如下:

三、编写脚本,删除以前的日志文件

????????于是决定把/usr/local/cms/log下的所有文件遍历一遍,删除1年前所有的文件。这样就需要写一个bash脚本。如下:

#!/bin/bash 
# 定义日志文件目录 
LOGFILE_DIR="/usr/local/cms/log " 
# 定义3个月前的日期(以秒为单位) 
ONE_YEAR_AGO =$(date -d "1 year ago" +%s) 
# 使用find命令查找并删除匹配的文件 
find "$LOGFILE_DIR" -type f -newermt "$ONE_YEAR_AGO" ! -newermt "$(date +%s)" -delete

1,保存为 ?del_logs.sh

2,赋予执行权限:

[root@ecs-52a1 vidisit]# chmod +x del_logs.sh

3,执行脚本:

[root@ecs-52a1 vidisit]#./del_logs.sh

4,发现磁盘空间变为90%,感觉到还不行,只有再把更多的文件删除,于是修改脚本:

#!/bin/bash    
#定义日志文件目录  
LOGFILE_DIR="/usr/local/cms/log "    
# 定义3个月前的日期(以秒为单位)  
THREE_MONTHS_AGO=$(date -d "3 months ago" +%s)    
# 使用find命令查找并删除匹配的文件  
find "$LOGFILE_DIR" -type f -name "*.log" -newermt "$THREE_MONTHS_AGO" ! -newermt "$(date +%s)" -delete

5,执行脚本:

[root@ecs-52a1 vidisit]#./del_logs.sh

6,发现磁盘空间变为60%,感觉可以了。操作起来回复以前的节奏了。,

文章来源:https://blog.csdn.net/weixin_70208651/article/details/135796383
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。