linux定时任务日志输出,linux - 计划任务输出日志并定期清理

前言

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

176f0dcaa15d12a8d76b391188ccdcb1.png

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是不是很简单而强大呢!

举报/反馈

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值