linux下每天都在产生LOG日志文件,如果不定期删除,迟早挤爆硬盘,如果手动删除,几次可以,不是长久之计。这些事交给Linux系统就可以解决。

试验环境:

系统:CentOS 6.5 x64

测试路径、测试文件名、测试时间(2017-06-05)

执行命令:

# find /root/Text -mtime +3 -name "log.*" -exec rm -f {} \;

命令解释:

find     查找命令

/root/Text  查找路径

-mtime     文件最后修改时间

+3      3天前(或理解成从命令执行当前日期开始,当天不算,保留3个文件)

-name    查询方式为查询文件名

"log.*"    查找log开头后面为任意长度字符的文件(不明白可以找“正则表达式”教程看看)

-exec     固定写法

rm -f    符合条件的执行删除并不提示

{}      固定写法,注意左右有空格

\;      固定写法,注意左右有空格

-mtime说明一下,Linux中的文件的时间属性只有三个:

atime(Access time)    文件最后访问时间。

mtime(Modified time)    文件最后修改时间。

ctime(Change time)    文件最后修改权限时间。(比如执行过chmod)

用stat命令来看看文件详细信息,find会找到文件的Modified时间作为参数。

# stat log.2017-06-01

有人注意到,文件名是06-01,但是显示时间是06-05,怎么回事。因为可以用"touch -d"命令来修改Modified,现在将文件修改回原来日期06-01。

# touch -d "21:55 06/01/2017" log.2017-06-01或# touch -d 06/01/2017 log.2017-06-01

上面命令第一个是时间和日期都修改,下面那个是只修改日期。

另外也可以单独修改时间或者月份,如下

以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000 。 

touch -d "6:03pm" file touch -d "05/06/2000" file touch -d "6:03pm 05/06/2000" file

touch -d "2017-05-31 08:10:30" test.doc    同时修改文件的修改时间和访问时间touch -m -d "2017-05-31 08:10:30" test.doc   只修改文件的修改时间touch -a -d "2017-05-31 08:10:30" test.doc   只修改文件的访问时间

上面find命令,写好了我们加入系统自动执行。命令:

# crontab -e

打开后和操作vi编辑软件一样(因为crontab默认就是用vi来编辑的)

# crontab -l

列出内容,定义凌晨2点执行。

参考文章: