Linux下两种删除过期文件的方法详述

一、概述 在实际的C软件开发项目中,不同的软件会在不同的目录中生成文件,由于磁盘的存储空间有限,开发人员不得不考虑对目录下的过期文件进行删除。一般说来,有两种删除过期文件的方法,一种是在C程序中实现,一种是利用crontab实现。本文对这两种方法的具体实现进行详细的介绍。 为了便于说明,本文中的过期文件的后缀为.c,存放在/home/zhou/zhouzx/Test目录下,过期时间为1天。

二、在C程序中实现过期文件删除 在该方法中,我们要考虑的主要问题为: (1)要删除过期多久的文件?文件存放在哪里?文件存放路径可以查看文件生成模块的配置,,看它们将文件生成在哪个目录中;而删除过期多久的文件一般都是由需求决定的。 (2)文件不会同时超期,而是在不同的时间段里超期,对此,程序该如何处理?我们的想法是删除在当前时间段内超期的文件之后,程序休眠一段时间之后接着再去执行删除任务,相当于是周期性地执行删除任务。

完整的C程序代码如下:

/版权所有 (C)2015, Zhou Zhaoxiong。** 文件名称:DelExpiredFiles.c* 文件标识:无* 内容摘要:创建现场删除过期文件* 其它说明:无* 当前版本:V1.0* 作 者:Zhou Zhaoxiong* 完成日期:20150729*/// 重定义数据类型typedef signed int INT32;typedef unsigned int UINT32;typedef unsigned char UINT8;// 函数声明void Sleep(UINT32 iCountMs);void DelExpiredFiles(UINT8 *pszFileSaveDir, UINT32 iFileSaveDays);INT32 main();/功能描述:主函数* 输入参数:无* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期版本号修改人修改内容* ——————————————————————-* 20150729V1.0Zhou Zhaoxiong创建*/INT32 main(){ }/功能描述: 程序休眠* 输入参数: iCountMs-休眠时间(单位:ms)* 输出参数: 无* 返 回 值: 无* 其它说明: 无* 修改日期版本号修改人修改内容* ——————————————————————* 20150729V1.0Zhou Zhaoxiong创建/ void Sleep(UINT32 iCountMs){}/*—————————————————-* 功能描述: 删除超期的过期文件* 输入参数: pszFileSaveDir-过期文件保存目录iFileSaveDays-过期文件保存天数* 输出参数: 无* 返 回 值: 无* 其他说明: 无* 修改日期版本号修改人修改内容* —————————————————-* 20150729V1.0Zhou Zhaoxiong创建—————————————————-*/void DelExpiredFiles(UINT8 *pszFileSaveDir, UINT32 iFileSaveDays){}

三、利用crontab实现过期文件删除 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell脚本。利用这个特性,我们可以将删除过期文件的指令存放在shell脚本中,然后用crontab 命令来周期性地调用这个脚本执行删除操作。 在crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:

week command

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

具体操作步骤如下: 1.编写删除过期文件的shell脚本,取名del_expiredfiles.sh,存放在/home/zhou/zhouzx/Test目录下。文件内容为:

#!/bin/kshFILEPATH=”/home/zhou/zhouzx/Test”DAYS=main(){find $FILEPATH -name “*.c” -ctime +$DAYS -type f -exec rm -rf {} \;}## Execute main functionmain $*

2.登录到root用户下,执行crontab –e命令进入crontab文件中,在该文件中添加如下内容:

/del_expiredfiles.sh -D 1

对照crontab文件中任务的格式,我们可以看出所添加内容的具体含义是:每天的1点钟执行/home/zhou/zhouzx/Test/目录下的del_expiredfiles.sh文件。

3.保存对crontab文件的修改,观察命令执行结果。

四、总结 以上两种删除过期文件的方法在实际的软件开发项目中均有应用,大家要根据项目组的实际情况来选择合适的方法。

本人微信公众号:zhouzxi,请扫描以下二维码:

有时我们选择改变,并非经过深思熟虑,而更像是听见了天地间冥冥中的呼唤,

Linux下两种删除过期文件的方法详述

相关文章:

你感兴趣的文章:

标签云: