Linux定时清理日志脚本
在应用疯狂打日志的情况下,服务器很容易被塞满磁盘。
先要写一个shell脚本,脚本如下。
- #!/bin/bash
- #----------------使用规范----------------
- #1、该文件固定存放在linux的 /usr/local/zjport_test/delFiles 目录下
- #2、各责任人维护好要清理日志文件的目录,并以注释方式备注写明谁维护
- #find:linux的查找命令,用户查找指定条件的文件;
- #/opt/soft/log/:想要进行清理的任意目录;
- #-mtime:标准语句写法;
- #+3:查找3天前的文件,这里用数字代表天数;
- #"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
- #-exec:固定写法;
- #rm -rf:强制删除文件,包括目录;
- # {} \; :固定写法,一对大括号+空格+\+;
- echo "del file start....."
- #find /home/logs/ -mtime +3 -name "*.log" -exec rm -rf {} \;
- find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.log.*" -exec rm -rf {} \;
- find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.out.*" -exec rm -rf {} \;
- find /usr/local/tomcat/springboot-MIA-exchange/logs/islife -mtime +1 -name "*.log" -exec rm -rf {} \;
- find /root/logs/islife -mtime +0 -name "*.log" -exec rm -rf {} \;
- find /home/yw/logs -mtime +1 -name "*.log*" -exec rm -rf {} \;
- > /usr/local/tomcat7/logs/catalina.out;
- echo "del file end"
然后要启动linux的crontab来定时运行这个脚本。
crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 -->相当于闹钟
一、日志定期删除(Linux)
1、将清理日志的shell脚本放在服务上。根据规定,定一个统一的路径和统一的命名规范。
2、将文件添加到定时任务crontab
- crontab -e:编辑当前用户的定时任务
- crontab -l:查看当前用户的定时任务
- crontab -r:删除当前用户的定时任务
3、脚本样例
- #!/bin/bash
- echo "del file start....."
- find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.log.*" -exec rm -rf {} \;
- find /usr/local/tomcat/tomcat7-8034-TaskOutside/logs -mtime +0 -name "*.out.*" -exec rm -rf {} \;
- find /usr/local/tomcat/springboot-MIA-exchange/logs/islife -mtime +1 -name "*.log" -exec rm -rf {} \;
- find /root/logs/islife -mtime +0 -name "*.log" -exec rm -rf {} \;
- find /home/yw/logs -mtime +1 -name "*.log*" -exec rm -rf {} \;
> /usr/local/tomcat/logs/catalina.out- echo "del file end"
4、crontab文件内容分析
cat /etc/crontab
- HELL=/bin/bash
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root
- HOME=/
- # For details see man 4 crontabs
- # Example of job definition:
- # .---------------- minute (0 - 59)
- # | .------------- hour (0 - 23)
- # | | .---------- day of month (1 - 31)
- # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
- # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
- # | | | | |
- # * * * * * user-name command to be executed
- 59 15 * * * /usr/local/zjport_test/delFiles/delFiles_192.168.3.134.sh >dev/null 2>&1
-----
- 前四行是用来配置crond任务运行的环境变量
- 第一行SHELL变量指定了系统要使用哪个shell,这里是bash
- 第二行PATH变量指定了系统执行命令的路径
- 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户
- 如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
- 第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
- 小 结:
- 数字的表示最好用2为阿拉伯数字显示
- 周和日最好不要同时用
- 定时任务要加注解
- 可以定向到日志文件或者空文件
- 定时任务一定是绝对路径,且目录必须存在才能出结果
- crontab 服务一定要开启运行
- # crontab时间问题
最关键的,只有 5 个参数,没有 秒 参数。所以跟标准cron定时表达式不一样
实例
- 实例1:每1分钟执行一次cmd
- * * * * * cmd
- 实例2:每小时的第3和第15分钟执行
- 3,15 * * * * cmd
- 实例3:在上午8点到11点的第3和第15分钟执行
- 3,15 8-11 * * * cmd
- 实例4:每隔两天的上午8点到11点的第3和第15分钟执行
- 3,15 8-11 */2 * * cmd
- 实例5:每周一上午8点到11点的第3和第15分钟执行
- 3,15 8-11 * * 1 cmd
- 实例6:每晚的21:30执行
- 30 21 * * * cmd
- 实例7:每月1、10、22日的4 : 45执行
- 45 4 1,10,22 * * cmd
- 实例8:每周六、周日的1 : 10执行
- 10 1 * * 6,0 cmd
- 实例9:每天18 : 00至23 : 00之间每隔30分钟执行
- */30 18-23 * * * cmd
- 实例10:每星期六的晚上11 : 00 pm执行
- 0 23 * * 6 cmd
- 实例11:每一小时执行
- 0 */1 * * * cmd
- 实例12:晚上11点到早上7点之间,每隔一小时执行
- 0 23-7 * * * cmd
5、常用命令解释
安装crontab:
- yum install crontabs
crontab服务操作说明:
- /sbin/service crond start //启动服务
- /sbin/service crond stop //关闭服务
- /sbin/service crond restart //重启服务
- /sbin/service crond reload //重新载入配置
查看crontab服务状态:
- service crond status
手动启动crontab服务:
- service crond start
查看crontab服务是否已设置为开机启动,执行命令:
- 方法一: 界面启动 ntsysv
- 方法二: 加入开机自动启动: chkconfig –level 35 crond on
查看定时任务列表
- crontab -l
编辑定时任务
- crontab –e == vim /var/spool/cron/root
crontab -r 删除定时任务
- ==> 从/var/spool/cron目录中删除用户的crontab文件
- ==> 如果不指定用户,则默认删除当前用户的crontab文件
- crontab –i 在删除用户的crontab文件时给确认提示
备份crontab文件
- crontab -l > $HOME/mycron
恢复丢失的crontab文件
- 如果不小心误删了crontab文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:
- crontab <filename> 其中,<filename>是你在$ H O M E目录中副本的文件名。
- 有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。
Linux定时清理日志脚本的更多相关文章
- Linux 定时清理日志脚本
在远程运行节点创建一个cleanlog.sh 脚本文件 vin clenalog.sh 插入以下内容 #!/bin/env bash start=$(date +%y-%m-%d-%H%M%m) Fi ...
- 实战:liunx定时清理日志脚本
参考https://blog.csdn.net/qq_39291929/article/details/79054452 1.需求:我们在 /var/log下面有 EmcsYn.log 和 ...
- 定时删除日志文件---linux定时清理日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- linux定时清理日志
服务器硬盘较小,需要自动删除日志 1.编写find命令 首先编写需要删除文件的sh #删除50天前的日志 find */logs -mtime +50 -exec rm -f {} \; #注意目录 ...
- Linux做脚本定时任务(定时清理日志)
无论一些面试问题,还是实际应用,都会用到虚拟机的定时任务.现做定时清理日志日志做一总结. 1.查看/etc/crontab文件. linux 系统则是由 cron (crond) 这个系统服务来控制的 ...
- Linux——定时清空日志内容和删除日志文件
前言 最近在做性能压测试,会生成大量的日志,导致后续越压越慢,最终磁盘空间占满之类的问题.老是要手动删除日志文件,为避免此类问题发生,编写一个Linux日志定时清理的脚本,一劳永逸. 1.shell脚 ...
- linux定时执行python脚本
每天清晨 4:00:01,用python执行/opt/aa.py文件. 编辑定时任务: #crontab -e 加入: 0 4 * * * python /opt/aa.py 保存,退出即可. 如果执 ...
- Linux定时执行.sh脚本
因为测试ffmpeg推流用flv方式的话没有做自动断流,所以要先用.sh脚本来执行关流,降低CPU和其他资源占用 首先编写.sh文件 #! /bin/bash echo "kill ffmp ...
- linux 定时清理session
php session 运营想让用户登陆网站就能永久保持登陆会话,感觉这是扯淡,因为视频播放1小时,所以我设置了两小时过期. 但是用户过多,导致session文件大量存储.产生上百万千万.服务器空间很 ...
随机推荐
- idea乱码问题
## 1. 文件中内容中文乱码 这个原因是文件的编码和项目的编码不一致导致,将项目工程和文件的编码设置成一致的(如,文件编码是GBK,那就都设置为GBK,若为UTF-8就都设置为UTF-8) ## 2 ...
- git,指南,操作
助你开始使用 git 的简易指南,木有高深内容,;). Tweet 作者:罗杰·杜德勒 感谢:@tfnico, @fhd and Namics其他语言 english, deutsch, españo ...
- Jmeter命令行运行配置环境变量
Jmeter命令行运行配置环境变量 在打开jmeter GUI界面时会弹出cmd命令窗口提示:压测时不要用GUI,要用命令行 在cmd命令行里面运行jmeter的话,需要配置jmeter环境变量,下面 ...
- 大div套多个小div,怎样设置外div的高度自适应?
在最后一个div 后面加上 overflow:hidden;如下: <div style="width:580px; height:auto; margin:0 auto; <d ...
- 进行编译时提示'error: unrecognized command line option "-std=gnu11"'如何处理?
答: 说明编译器不支持此选项,那么在Makefile中替换此选项-std=gnu11 替换成-std=gnu99或-std=c99或-std=c11等,主要看编译器都支持哪些编译选项,笔者的支持-st ...
- MacOS Laravel 安装教程
一.到官网选择 Laravel 版本 根据个人的喜好选择安装的版本,我选择的是 5.8 https://laravel.com/docs/5.8/installation 以下是 Laravel 5. ...
- thinkphp---404错误页面
在用thinkphp开发项目的时候,会额外的处理404错误页面,但是我们很多的开发人员,在处理404错误页面的时候,处理方式都是不对的. 普通处理404的操作是通过 $this->error() ...
- Tomcat 配置虚拟目录以及虚拟主机
目录 虚拟目录 虚拟主机 虚拟目录 虚拟目录的功能 一般情况下,我们的打包后的项目都是放到tomcat/webapps目录下的,然后通过localhost:8080/project_name这个链接进 ...
- HttpUtils(2)
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; impo ...
- 【翻译】Flink Table Api & SQL —Streaming 概念 ——时间属性
本文翻译自官网: Time Attributes https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/str ...