在Linux添加定时任务删除5天前的日志文件

在Linux添加定时任务删除5天前的日志文件

利用shell脚本自动清理

1.删除文件命令:

find 对应目录 -mtime +天数 -name "文件名" -exec rm -f {} \;

实例命令:

find /usr/local/mysql/logs -type f -mtime +5 -name "*.txt" -exec rm -f {} \;

说明:

将/usr/local/mysql/logs目录下所有5天前带".log"的文件删除。具体参数说明如下:

find:linux的查找命令,用户查找指定条件的文件;

/usr/local/mysql/logs:想要进行清理的任意目录;

-type f :指明类型为普通文件的文件(f 普通文件 | d 目录文件 | l 链接文件 等等)

-mtime:标准语句写法;

+5:查找5天前的文件,这里用数字代表天数;

".log":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;

(签购单接口性能测试时会产生大量签购单图片,并保持在对应的目录下,导致磁盘经常被占满,自动清除前一天签购单图片,脚本中,清除的格式改为.jpg就行)

-exec:固定写法;

rm -f:强制删除文件;

{} \; :固定写法,一对大括号+空格++;

2.计划任务:

若嫌每次手动执行语句太麻烦,可以将这小语句写到一个可执行shell脚本文件中,再设置cron调度执行,那就可以让系统自动去清理相关文件。

2.1创建shell:

touch /usr/local/mysql/logs/auto-del-5-days-txt.sh

chmod 777 auto-del-5-days-txt.sh

新建一个可执行文件auto-del-5-days-txt.sh,并分配可运行权限

2.2编辑shell脚本:

vi auto-del-5-days-txt.sh

编辑auto-del-5-days-txt.sh文件如下:

#!/bin/sh
find /usr/local/mysql/logs -type f -mtime +5 -name "*.log" -exec rm -f {} \;

ok,保存退出(:wq!)。

2.3计划任务:

键入 crontab -e 编辑crontab服务文件

将auto-del-5-days-txt.sh执行脚本加入到系统计划任务,到点自动执行

输入:

10 0 * * * /usr/local/mysql/logs/auto-del-30-days-txt.sh >/dev/null 2>&1

这里的设置是每天凌晨0点10分执行auto-del-30-days-txt.sh文件进行数据清理任务了。

 

查看该用户下的crontab服务是否创建成功, 用 crontab -l 命令

启动crontab服务

注:退出定时任务的编辑就自动生效了

一般启动服务用 /sbin/service crond start 若是根用户的cron服务可以用 sudo service crond start, 这里还是要注意 下 不同版本linux系统启动的服务的命令也不同 ,像我的虚拟机里只需用 sudo service cron restart 即可,若是在根用下直接键入service cron start就能启动服务

查看服务是否已经运行用 ps -aux | grep cron

posted @   木糖醇困了  阅读(1051)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示