乐趣区

linux系统下用crontab定时清除日志文件

在应用服务器上,我们常常需要定时清理文件,尤其是日志,这时候就需要用到 Linux 自带的用于例行性工作调度的 at 和 crontab 两个命令了。其中 at 是仅执行一次的命令,这次先不谈,而 crontab 是循环执行的,符合定时清理文件的需求。cron 这个系统服务是默认启动的, 当用户用 crontab 这个命令新建工作调度后,该项工作就会被记录到 /var/spool/cron/ 里面去了,而且是以账号作为判别,比如 kindy 使用 crontab 后,他的工作被记录到 /var/spool/cron/kindy 里面去。这个文件不能直接用 vi 编辑,而需要借助命令 crontab.
crontab [-u username] [-l|-e|-r]

-u 只有 root 可以执行这个任务,不常用
-e 编辑 crontab 工作内容,常用!
-l 查阅 crontab 工作内容,常用!
默认情况下,任何用户只要不被列入 /etc/cron.deny 中,那么他就可以执行 crontab - e 去编辑自己的定时任务了

如果要定时清除的日志是已知的固定路径下的文件,比如 /*/logs,我们规定每天 23:59 定时去清除最后修改时间在 7 天以前的文件,那么首先编辑任务:
crontab -e

进入后会看到每项工作的格式是怎么定义的,然后按需求直接写任务:
23 59 * * * root find /*/logs -name ‘catalina.out*.log’ -and -mtime +7 -type f |xargs rm
再退出,以后就会定时执行啦~

退出移动版