您的位置:首页 > 运维架构 > Shell

linux Shell: 定时清理指定目录下大于指定大小、指定文件名的文件?

2010-10-20 18:21 375 查看
定时清理指定目录下大于指定大小、指定文件名的文件

1、查找指定目录下大于(小于)指定大小、指定文件名的文件

find pathname –size +filesizec –name filename

find pathname –size -filesizec –name filename

2、清理(删除)

find pathname –size filesize –exec rm {} \;

3、定时

usage:    crontab [-u user] file

             crontab [-u user] { -e | -l | -r }

                        (default operation is replace, per 1003.2)

    -e    (edit user's crontab)

    -l    (list user's crontab)

    -r    (delete user's crontab)

    -i    (prompt before deleting user's crontab)

crontab定时时间格式如下:

t1  t2  t3  t4  t5  program

t1:表示分钟,取值(0-59)。

t2:表示小时,取值(0-23)。

t3:表示日,取值(1-31)。

t4:表示月份,取值(1-12)。

t5:表示星期,取值(0-6),0是星期天。

还有几个特殊的符号:“*”,“/”,“-”。

“*”表示所有取值范围内的数字,“/”表示每的意思,比如在分钟上 */2 ,表示每两分钟为一个单位,“-”表示从某个数字到某个数字。

由于crontab是个全局命令,因此可以在任何目录下操作crontab。

 

实例及总结:

在每周五的5点5分删除temp目录下文件大小走超过1KB的所有文件。

(1)文件名为findfile.sh,如下:

#!/bin/sh

find temp -size +1k -exec rm {} /;
(2)然后对findfile.sh文件操作:

chmod u+rwx findfile.sh  #修改文件属性,使该shell脚本可执行。

                                   #在该脚本所在目录,./findLog.sh就可以执行该shell脚本了。

(3)在当前目录下 crontab -e编辑crontab,键入i使其成为可输入,输入如下内容:

5 5 * * 5 /bin/sh /home/findfile.sh
/bin/sh代表shell程序,可以通过which sh 命令来查看机器的shell程序在哪个目录。

(4)启动cron服务

sudo /usr/sbin/service cron start
 

参考:

http://blog.chinaunix.net/u/31547/showart_438018.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐