自动删除旧文件

有时候在做项目时候需要一直保存文件,但是由于内存容量有限,需要及时删除旧文件。以下脚本实现功能:当内存到达一定值时,删除文件时间属性较早的文件。个人完全不会shell脚本编程。都是一点点问度娘的,如有不对之处敬请谅解。

1.读取指定文件时间属性。

cd /var/www/Public/ParamsSet/
creat_time=`stat -c %Y setting4.txt`;now=`date +%s`;
echo $creat_time
echo $now 

其中creat_time为文件最后一次改动的时间(1970到现在,单位s),now为现在系统时间。

2.设置阈值进行相对应处理

memory=90
hour=1
if [ $[ $now - $creat_time ] -le 360 ];then
    printf "*************************************\n"
    n=1
    cat setting4.txt |while read line  
    do
        if [ $n -eq 2 ];then
            memory=$line
            echo $memory 
        fi
        if [ $n -eq 3 ];then
            hour=$line
            n=$[$n+1]
            echo $hour 
        fi
        n=$[$n+1]
    done
fi

这部分是我自己实际需求,可以忽略

3.读取剩余内存

cd /home/ubuntu/workspace/Server_Face/data/
p=`df / | awk '{print $5}' | grep -Eo '[0-9]+' `
echo $p
echo $memory

4.查找并根据阈值删除对应的文件

if [ $p > $memory ];then
    find . -mmin -10 -name "*.jpg" -exec rm -rvf {} \;
    echo "bigger 95"
fi

其中

find . -mmin -10 -name "*.jpg" -exec rm -rvf {} \;

查找当前目录下10min内修过过的文件并删除。查找具体见find命令,参数不同可以实现不同功能,-mmin为min,有以天为单位的参数。

5.定时执行

在Linux中,常用cron来完成定时功能。具体百度其用法。

ubuntu@tegra-ubuntu:~$ sudo crontab -e

在文件最后一行加入

*/1 * * * * sh /home/ubuntu/remove_file.sh

表示一分钟执行一次.sh,具体可以实现很多功能,可以百度cron用法。

6.重启cron

ubuntu@tegra-ubuntu:~$ service crond restart 

最后说一句,以上都是一点点百度的,在大神看来肯定很垃圾,仅仅只是为了记录方便查阅。勿喷

你可能感兴趣的:(Linux)