在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
标签:文件,auto,days,sh,天前,Linux,del,日志,txt From: https://www.cnblogs.com/lfh-blog/p/17577376.html