shell脚本隔五分钟清理一次log文件

shell脚本隔五分钟清理一次log文件,第1张

步骤一:编写自动清理日志文件shell脚本

# vim logAutoClean.sh

#!/bin/bash

log_path="/home/server/core/logs/app"

#目录存在,删除修改时间为7天前的文件

if [ -d "${log_path}" ]then

echo start delete log 7 days ago...

find "${log_path}"/* -name '*.log.gz' -mtime +240 -exec rm -rf {} \

echo end delete log ...

fi

# :wq! 保存并退出

步骤二:脚本搭慎文件授权(可执行权限)

# chmod +x logAutoClean.sh

测试一下:

# sh logAutoClean.sh

步骤三:创建crontab定时任务

# crontab –e

进入编辑页面(第一次进入会让你选择编辑器,这里我们选择3[vim.basic]就ok)。

设置每天凌晨1点执行(假定清除脚本在目录/home/server/core/logs/app下),编辑crontab,增加如下行:

00 01 * * * /home/server/core/logs/app/logAutoClean.sh

可先设置五分钟执行一次,测试下脚本

*/5 * * * * /home/server/core/logs/app/logAutoClean.sh

如果定时任务不生效,重启下crond服务

# service crond restart //重启服务

附录:crontab用法说明

crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。

每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的

在crontab文件中如何输入颤桥需要执行的命令和时间。该文件中每行都包括六个域,其中前五知洞敬个域是指定命令被执行的时间,最后一个域是要被执行的命令。

每个域之间使用空格或者制表符分隔。格式如下:

格 式: minute hour day-of-month month-of-year day-of-week commands

合法值: 00-59 00-23 01-31 01-12 0-6 (0 is sunday)

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

crontab 命令

-l 在标准输出上显示当前的crontab。

-r 删除当前的crontab文件。

-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。

其实没有必要写shell脚本,简单一句话放在系统定时任务里就行了。

比如你的日志文件名叫a.log。路径为/tmp/a.log;州毕

那么你可以写个定时任务,这样做:crontab -e 进入定时任务器,然后把下面这段写到里面

00 02 * * * echo " " >/tmp/a.log

然后保存退出就可以了。这段内容意思是,每天凌晨2点自动清空a.log内容。你也可以自己定义多久清一次。比册枯芹如败带想10分钟清一次,就这么写*/10 * * * * echo " " >/tmp/a.log。具体的crontab时间定义你可以去百度查查。希望对您有用!

1、新建sh文件

删除30天以前的文件

#!/bin/bash

find /home/sdu/server/node1/logs/ -mtime +30 -print | xargs rm -rf

 //注释让消源-mtime是距离上一次修改时间 -print是只显示文件 xargs是获取find查找的结果在通过rm命令删除

2、部署服务器

3、设置crontab定时任务

打开定时任务配置文件:crontab -e

定时调用test.sh:* * * * * /home/test.sh

        保存退出:按键ESC,输入:wq

第一个*        一小时当中的第几分钟      0-59

第二个*        一天当中的第几小时          0-23

第三个*        一个月当中的第几天          1-31

第四个*        一年当中的第几月              1-12

第五个*        一周当中的星期几              0-7(0和7都代表周日)

*        代表任何时间,比如第一个 * 就代表一小时中的每分钟都执行

,        代表不连续的时间,比如 0 8,12,16 * * * 代表每天8,12,16点0分执行

-        代坦态表连续的时间范围,比如0 5 * * 1-6 代表在周一到周六凌晨5点0分执行

*/n     代表每个多久执行一次,比如*/10 * * * *代表每隔10分钟执行一次

例子:

45 22 * * *    

在22点45分执行

0 17 * * 1     

在每周1的17点0分执行

0 5 1,15 * *  

在每月1号和15号的凌晨5点0分执行

40 4 * * 1-5  

在每周一到周五的凌晨4点40分执行

*/10 4 * * *    

在每天的凌晨4点,每隔10分钟执行一次

0 0 1,15 * 1  

每月1号和15号,每周1的0点0分都会执行

注意:星期几和几号最好不要同时出现,他们的意义都是天,容易混淆

4、查看目前都有那些定时任务

        crontab -l

5、备注:

定时任务需要crond服务的支持

1.启动方法  service crond restart

2.该服务默认是开机启动的

取消定时任务

1.全部取消 crontab -r

2.取消某个 crontab -e 配置文件,删除要取消的哪一行配置

若定时任务存在,编辑shell脚本后,不用做任何 *** 作,不放心的话可以启动脚本看下是否报错 sh 脚本名桥空字


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8193188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存