java执行定期删除文件脚本_定时清理文件shell脚本

一个测试机上部署多个应用,总是经常出现磁盘空间已满,不能部署应用的情况,所以写了个小脚本,用于定时清理日志,避免出现这种情况。

1、如果是清理固定路径下的文件,可以直接用命令方式。

命令方式

(1)编写命令:

find /*/logs -name 'catalina.out*.log' -and  -mtime +7

测试方法:把路径中的*变为具体的路径,在linux命令窗口中执行,调试结果(-mtime +7为删除最后修改时间在7天以前的文件,可自己配置)

(2)在linux上配置定时任务:

说明:因为我们使用的是系统的crontab文件,系统的crontab文件路径为:/etc/crontab

编辑crontab文件:

命令:vi /etc/crontab

输入I;进入编辑模式

在文件末尾写入步骤一的命令

配置任务定时时间:

crontab定时配置说明:

*(分)  *(时)   *(天)  *(月)  *(星期)

crontab中最终写入的命令为: 23 59 * * * root find /*/logs -name 'catalina.out*.log' -and  -mtime +7 -type f |xargs rm(每天23:59分开始执行此命令

(3)检验定时任务是否执行:

命令: tail /var/spool/mail/root

(4)若定时任务没有执行,输入命令   service crond status,确保crond状态为 is  running

2、但是有时候需要同时清理多个路径下的指定文件,这时,我们最好就写个shell脚本了,下面是shell脚本的实现方式

shell脚本方式:

(1)vi /*/deletelog.sh(脚本路径可变,保证在path变量中就可以)

脚本:

#!/bin/bash

workdir=("/export/Domains" "/home/admin")#可填写多个路径

for wdir in ${workdir[@]}

do

echo  filepath is $wdir

if [ $wdir =  ${workdir[0]} ] ;then

fileStr=`find  $wdir/*/logs -type d`

echo files is $fileStr

else

fileStr=`find  $wdir -type d`

echo filee is $fileStr

fi

for dir in $fileStr

do

echo file name is $dir

find $dir -name '*log*' -and -mtime +7  -type f | xargs rm

if [ $? -eq 0 ];then

echo $date delete $dir success!

else

echo $date delete $dir FAILD!

fi

done

done

(2)赋给deletelog.sh 文件执行权限

命令:chmod 700    /*/logs/deletelog.sh

(3)编辑crontab文件:

命令:vi /etc/crontab

输入I;进入编辑模式

在文件末尾写入步骤一的命令

配置任务定时时间:

crontab定时配置说明:

*(分)  *(时)   *(天)  *(月)  *(星期)

crontab中最终写入的命令为: * 9 * * * root /*/deletelog.sh >> /export/*/deletelog.log(带输出日志)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值