定时清理日志任务

  • 前言
  • 一.定时清理简述
    • 1.1查看/etc/crontab文件
    • 1.2 删除文件命令
    • 1.3 给脚本添加权限:
    • 1.4 将脚本添加到定时任务
  • 2.计划任务
    • 2.1创建shell
    • 2.2 编辑shell脚本:
    • 2.3计划任务:
  • 三.经典案例

前言

当我们在生产过程中,都会遇到诸如此类的问题。定时清理日志成为了必不可少的一步骤!

一.定时清理简述

当我们要定期的备份以及删除时,我们需要写一个shell 脚本,然后用 crontab 来每天定期执行。

1.1查看/etc/crontab文件

linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux系统也提供了使用者控制计划任务的命令 :crontab 命令。

cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cron进程,cron进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务

Linux下的任务调度分为两类系统任务调度和用户任务调度

系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件


其中具体内容含义:

minute: 表示分钟,可以是从0到59之间的任何整数。hour:表示小时,可以是从0到23之间的任何整数。day:表示日期,可以是从1到31之间的任何整数。month:表示月份,可以是从1到12之间的任何整数。week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

1.2 删除文件命令

find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;实例命令:find /usr/local/tomcat/logs/ -mtime +30 -name "*.log" -exec rm -rf {} \;    //将/opt/soft/log/目录下所有30天前带".log"的文件删除。

说明:

具体参数说明如下:

find:linux的查找命令,用户查找指定条件的文件;/opt/soft/log/:想要进行清理的任意目录;-mtime:标准语句写法;+30:查找30天前的文件,这里用数字代表天数;"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;-exec:固定写法;rm -rf:强制删除文件,包括目录;{} \; :固定写法,一对大括号+空格+\+;

(注意:可添加:0 */1 * * * echo “Have a break now.” >>
/usr/local/myScript/logs/test.txt 每一个小时往test.txt中插入一条数据,主要用于测试是否执行该脚本。

1.3 给脚本添加权限:

1.4 将脚本添加到定时任务

vim /var/spool/cron/root10 1 * * *  /usr/local/myScript/cleanlog.sh    每天凌晨1点10分执行(还可以使用命令直接进入编辑:crontab -e)查看定时任务:crontab -l

2.计划任务

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

2.1创建shell

touch /opt/soft/bin/auto-del-30-days-ago-log.shchmod +x auto-del-30-days-ago-log.sh新建一个可执行文件auto-del-30-days-ago-log.sh,并分配可运行权限

2.2 编辑shell脚本:

vi auto-del-30-days-ago-log.sh编辑auto-del-30-days-ago-log.sh文件如下:
#!/bin/sh
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;ok,保存退出(:wq)。

2.3计划任务:

#crontab -e将auto-del-30-days-ago-log.sh执行脚本加入到系统计划任务,到点自动执行输入:10 0 * * * /opt/soft/log/auto-del-30-days-ago-log.sh这里的设置是每天凌晨0点10分执行auto-del-30-days-ago-log.sh文件进行数据清理任务了。

完成以上三步,你就再也不每天惦记是否硬盘空间满了,该清理日志文件了,再也不会受到服务器硬盘空间不足的报警信息了,开心的去玩耍吧!

三.经典案例

一、删除XX天(默认10天)之前某个目录下面带.log的日志文件,并且输出文件显示删除的文件

#!/bin/sh#如果没有输入变量值,默认天数为10
start=$(date +%y-%m-%d-%H%M%m)
File=/temp/delete_$start.txt
FilePath=/dataecho $Fileif [ ! -n "$1" ];
thenday=10
elseday=$1
fi#-mtime 10 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件
echo "输出日志文件:"
echo "find $FilePath -mtime +$day -name "*.log*" > $File"
find $FilePath -mtime +$day -name *.log* > $Fileecho "删除日志文件:"
echo "find $FilePath -mtime +$day -name "*.log*"  -exec rm -rf {} \;"
find $FilePath -mtime +$day -name *.log*  -exec rm -rf {} \;

二、删除XX天(默认10天)之前的文件夹

#!/bin/sh#如果没有输入变更值,默认天数为10
start=$(date +%y-%m-%d-%H%M%m)
File=/temp/delete_backup_$start.txt
FilePath=/data/backupecho $Fileif [ ! -n "$1" ];
thenday=10
elseday=$1
fi#删除10天之前的文件夹
echo "输出日志文件:"
echo "find $FilePah -type d -ctime +$day > $File"
find $FilePath -type d -ctime +$day > $File#压缩10天之前的文件夹
echo "find $FilePath -type d -ctime +$day | xargs gzip -r"
find $FilePath  -type d -ctime +$day | xargs gzip -recho "删除日志文件:"
echo "find $FilePath -type d -ctime +$day | xargs rm -rf"
find $FilePath  -type d -ctime +$day | xargs rm -rf

三、清空文件内容(产生日志文件过大,占用磁盘空间),可以与定时任务结合使用

每天早上6点执行    0  6 * * *  sh /log/CleanLogFile.sh
#!/bin/bash
path=/log
filename=$path/BigLog.txt#搜索大于10KB的文件
#-size +10k
#搜索小于10KB的文件
#-size -10k
#搜索等于10KB的文件
#-size 10kif [ $# -ne 1 ]
then  #echo "默认设置文件大小为500M"  filesize=500Melsefilesize=$1
fi echo "设置清除文件大小:$filesize"if [  -f "$filename" ]; then    rm -rf $filenameecho  "原始文件已删除"
elseecho "$filename不存在"
fi find $path -name "*.*"  -size +$filesize -exec ls -lh {} \; | awk '{ print $5,$9}' > $filenamefor line in `cat $filename`
do#如果有匹配的内容则立即返回状态值0echo "$line" | grep -q "$path"#$? 是指上一条命令的执行状态, 0就是正常if [  $? -eq 0 ]then#获取文件类型filetype=${line#*.}if [ $filetype == "zip"  ];thenecho "rm -rf $line"rm -rf $lineelseecho "执行清空命令 cat /dev/null > $line"cat /dev/null  >  $linefifi
done

编写shell定时任务

执行命令:[root@localhost ~]# crontab -e10 0 * * * /data/auto-del.sh >/dev/null 2>&1查看定时任务:[root@localhost ~]# crontab -l
10 0 * * * /data/auto-del.sh >/dev/null 2>&1备注:每隔30分钟root执行一次:*/30 * * * *  /data/auto-del.sh >/dev/null 2>&1每天晚上1点执行:0 1 * * *  /data/auto-del.sh >/dev/null 2>&11.通过crontab –e来创建自己的定时任务,5个*的含义是,第一个*是分,第二个*是小时,第三个*是日,第4个*是月,第5个*是周,第6列是命令2.-exec   command   {} \;      —–将查到的文件执行command操作,{} 和 \;之间有空格3.find 命令三个选项用于按照时间查找,单位都是小时:mtime — 文件内容上次修改时间
atime — 文件被读取或访问的时间
ctime — 文件状态变化时间

情况一:正常情况(系统有service命令)

重启服务命令:[root@centos7 /]# service crond restart

启动服务命令:[root@centos7 /]# service crond start

停止服务命令:[root@centos7 /]# service crond stop

参考:https://blog.csdn.net/qq_39291929/article/details/79054452https://www.cnblogs.com/think-in-java/p/5712197.htmlhttps://www.cnblogs.com/zuoshaowei/p/10577443.html

Linux脚本定时清理日志任务相关推荐

  1. Linux服务器定时清理日志文件、Linux cron定时任务

    文章目录 1. 准备工作 2. 脚本实现 2.1 执行命令准备 2.2.Linux 下创建定时任务-crontab 2.2.1.crontab 常用命令 2.2.2 命令行操作 3.附甜点 cron校 ...

  2. linux下定时清理日志任务

    1.创建定时清除日志脚本(/usr/local目录下) mkdir scriptTask  创建脚本文件夹,存放所有的脚本 在scriptTask 目录下创建脚本 find 对应目录 -mtime + ...

  3. Linux定时清理日志

    Linux定时清理日志 shell脚本编写 设置定时器,定期执行脚本 shell脚本编写 1.先创建出一个一个文件夹用于保存.sh文件 mkdir crontab-file 2.创建.sh文件 vim ...

  4. Exchange 2007 SP1 如何定时清理日志???

    Exchange 2007 SP1 如何定时清理日志??? 时间:2011-12-31 11:00Tag标签:来源:未知 作者:达思科技 点击: 93次 此文章出自: 专业数据恢复 问:Exchang ...

  5. mysql日志满如何清理_mysql 日志爆满,删除日志文件,定时清理日志

    今天发现网站不能正常访问,于是登陆服务器查找问题. 机智的我随手用命令:df -l 发现 硬盘爆满了,于是就知道问题所在了. Filesystem 1K-blocks Used Available U ...

  6. linux配置定时删除日志文件,Linux使用shell脚本定时删除历史日志文件

    Linux使用shell脚本定时删除历史日志文件,文件,小时,时间,目录,脚本 Linux使用shell脚本定时删除历史日志文件 易采站长站,站长之家为您整理了Linux使用shell脚本定时删除历史 ...

  7. linux下定时清理磁盘日志步骤

    1.编写清理日志的shell脚本 #! /bin/bash #进入要清理文件的路径 cd /XX/bin #echo "please clear startserver1.log and s ...

  8. linux crontab清理脚本,crontab定时清理日志

    1创建shell脚本 vi test_cron.sh #!/bin/bash #echo "====`date`====" >> /game/webapp/test_c ...

  9. Linux使用Shell定时清理日志文件

    ①根据进程名查找ProxyPoolRMIImpl进程,找到关联进程PID,终止这些进程. ②删除该进程产生的日志文件. ③重启服务 #!/bin/sh webproxy_id=`ps -ef|grep ...

最新文章

  1. java升序问题_JAVA并发理解之重排序问题
  2. flux服务器推消息,在Spring WebFlux响应式处理程序中发送JMS消息:它是否阻塞?
  3. [Swift]LeetCode2. 两数相加 | Add Two Numbers
  4. Python高级——闭包与装饰器
  5. Flutter图像绘制原理深入分析
  6. 面试题(一)—Java基础(上)
  7. javascript中的变量如果没有定义就使用的话
  8. java.util.ConcurrentModificationException错误解决方案
  9. Fedora 13 正确安装 VirtualBox 3.2.x 的 步骤
  10. 最新前端四天精通node.js视频教程
  11. 市场调研策划书_市场调研计划书模板
  12. Matlab绘制柱状图, 设置figure的最大最小值
  13. android weex开发流程,阿里Weex混合app开发工程搭建指南(android为例)
  14. php 公众号推送图片尺寸,『微信公众号运营技巧』推送文图片什么尺寸最佳?...
  15. ps将psd等比缩放、等份切片、psd转为jpg、Cutterman、切片方法、旋转方法(编辑)
  16. appium+weditor+模拟器使用细节
  17. 学习并行计算(CUDA Python)-1-初尝试
  18. 微信小游戏-飞机游戏玩法改造系列(二:支持血条)
  19. Elasticsearch高级使用-自动补全
  20. 常用半导体器件 绪论

热门文章

  1. C语言编程随角度变换的四边形的面积
  2. python爬虫获取拉钩网在线搜索招聘信息(超实用!)
  3. Mysql主从复制集群配置与实战
  4. 东南亚电商发展迅猛,中国卖家“钱”途光明
  5. 他打算上计算机课程 英文翻译,计算机专业课程名称英文翻译
  6. VS2013导入新项目时,连接数据库问题。
  7. CatfishCMS文件上传漏洞(CNVD-2021-42363)
  8. HFSS微带阵列天线仿真
  9. CCNA精品学习资料汇总(学习手册+笔记+题库)
  10. idea中使用javap命令