linux下定时任务执行cron和日志转出logrotate

一、概述
logrotate是对日志文件进行转储、压缩或邮寄等处理的工具,它读取配置文件内容,并根据配置文件内容对日志文件进行处理。
用定期运行工具cron或周期运行工具anacron执行logrotate则可以定期对日志文件进行处理。
cron工作过程:cron为守护进程,每分钟会读取配置文件/etc/crontab,检查设置项与当前系统时间是否相匹配,相匹配则执行设置项中的命令。
cron必须在开机状态下定期执行任务,因此为了避免关机后,错过执行时间导致任务没有执行的情况,用anacron做补充,其原理是比较时间戳文件/var/spool/anacron来判断是否需要执行;对于openrc初始化系统的设备,采取的办法是运行脚本/usr/sbin/run-crons,该脚本会判断文件/var/spool/cron/lastrun/文件的修改时间来判断是否需要执行/etc/cron.{hourly,daily,weekly…}中的脚本是否需要执行,cron的主配置文件crontab中设置run-crons每10分钟执行一次,Red Hat开发了vixie-cron的分支cronie,2009年其中包含了2.3版本的anacron参考
程序:/usr/sbin/logrotate
配置文件:
/etc/logrotate.conf
/etc/logrotate.d/

2、cron程序:/usr/sbin/cron
配置文件:
/etc/crontab
二、logrotate部署
1、编译logrotate;
2、复制关联库POPT库和logrotate可执行文件到目标系统相应目录下;
3、添加logrotate配置文件到/etc/logrotate.d/目录下
例如:logrotate.d/test_file
4、放置脚本文件/etc/cron.daily/logrotate,以定期运行logrotate
内容来源于Ubuntu16.04:/etc/cron.daily/logrotate文件

三、测试文件部署:
1、产生测试文件
在/etc/crontab中最后添加
*/10 * * * * root /bin/date >> /var/log/test_file
注:测试文件位置:/var/log/test_file
或1.1、取消配置文件/etc/crontab中最后一行注释
*/10 * * * * root test -x /usr/sbin/run-crons && /usr/sbin/run-crons
2、修改/etc/crontab的文件属性为644
chmod 644 /etc/crontab
2、添加logrotate配置文件
/etc/logrotate.d/test_file

3、更新至用户配置文件crontab
crontab -u root /etc/crontab
4、确定部署成功
(1)查看cron是否运行
ps -ef | grep cron
(2)10分钟后查看测试文件/var/log/test_file中是否有日期数据
(2)打开cron日志
a、取消/etc/syslog.conf中的注释行
#cron.* /var/log/cron.log
b、查看日志文件/var/log/cron.log
(3)查看测试文件/var/log/test_file中是否有日期数据

4、错误解决
1、若没有成功运行,请查看是否有/etc/cron.allow文件,该文件存在的话,只有该文件中有的工作才能执行
2、在/etc/syslog.conf中打开cron日志文件,在日志文件/var/log/cron.log中打印如下错误:
(SYSTEM) BAD FILE MODE (/etc/crontab)
原因:/etc/crontab文件权限不对,应该为644

四、涉及到的文件或目录:
/usr/sbin/logrotate #日志转储工具,由cron启动
/etc/logrotate.conf #logrotate的主配置文件
/etc/logrotate.d/ #logrotate的配置文件,定义各日志转储规则
/usr/sbin/cron #定期运行任务的工具,守护进程,会运行/etc/cron.{daily,monthly}目录中的脚本,其中logrotate的运行脚本放在/etc/cron.daily目录中
/etc/crontab #cron的主配置文件
/usr/sbin/run-crons #crontab中调用的脚本(同anacron具有类似的功能,即不要求机器24小时运行)
/etc/cron.daily/logrotate #logrotate的运行脚本,每天由cron启动一次

预期结果
1、每天会生成/var/log/test_file的转储文件;
根据转储规则,总共存在3个副本,延迟压缩。

注:自测时可将/etc/cron.daily/logrotate复制到/etc/cron.hourly目录去,1小时后查看/var/log/test_file的转储文件,测试完后必须将/etc/cron.hourly中/logrotate删除,否则会引起混乱。

五、anacron部署
1、anacron配置
(1)编译安装anacron
make && make install
结果:添加文件
可执行文件:/usr/sbin/anacron
日期记录目录:/var/spool/anacron
(2)配置
建立/etc/anacrontab文件,内容来源于anacron源码/README
内容:

# /etc/anacrontab example
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# format: period delay job-identifier command
1       5       cron.daily      run-parts /etc/cron.daily
7       10      cron.weekly     run-parts /etc/cron.weekly
30      15      cron.monthly    run-parts /etc/cron.monthly

2、说明
anacron一般通过cron来调用实现固定周期的任务执行(机器可以不连续开机)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值