linux 日志服务器部署(计划任务输出日志并定期清理)

前言

crontab执行任务的时候希望输出日志,但是日志之需要保留一段时间会自动清理掉,不然会把磁盘装满的。因此,就希望系统自动去删除。幸好,tmpwatch这个服务会自动清理/tmp目录(主要文件不要放/tmp目录),只要安装好tmpwatch这个包就可以了,这个依赖crontab执行的。那现在就需要把crontab日志输出到带日期的文件名中就可以了。

linux 日志服务器部署(计划任务输出日志并定期清理)(1)


crontab设置

使用crontab -e进行任务编辑,不推荐直接编辑/var/spool/cron/下的文件,有些错误不提示

crontab -e

* * * * * /home/linuxyunweicai/job.sh >> /tmp/job.log.$(date %Y%m%d) 2>&1

新建的job等2分钟才会开始执行,如果需要马上执行,直接重启一下crond服务就可以了。

发现没有日志生成,看下cron的日志/var/log/cron

Jun 2 13:44:01 linuxop CROND[23261]: (root) CMD (home/linuxyunweicai/job.sh >> /tmp/job.log.$(date )

后面的东西就没了,因此应该是%的原因:在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date %Y%m%d在crontab里是不会执行的,应该换成date \%Y\%m\%d。

修改任务

* * * * * /home/linuxyunweicai/job.sh >> /tmp/job.log.$(date \%Y\%m\%d) 2>&1

这样子就可以了,在/tmp目录下会生成job.log.20180602的日志文件,tmpwatch默认是清理10天前的文件,这样子就不怕日志文件没有清除导致磁盘爆满。


tmpwatch设置

tmpwatch的配置文件是放到 /etc/cron.daily/tmpwatch,这个目录的脚本,cron每天会执行一次,这里就是一个shell脚本,如果需要修改日志保留时间可以修改这个脚本。

#! /bin/sh

flags=-umc

/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \

-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \

-X '/tmp/hsperfdata_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \

-X '/tmp/pymp-*' 10d /tmp

/usr/sbin/tmpwatch "$flags" 30d /var/tmp

for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do

if [ -d "$d" ]; then

/usr/sbin/tmpwatch "$flags" -f 30d "$d"

fi

done


总结

Linux是不是很简单而强大呢!

linux 日志服务器部署(计划任务输出日志并定期清理)(2)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页