Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44896
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 204
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-20 09:10
文章分类
文章存档

2014年(7)

2013年(4)

我的朋友

分类: 系统运维

2014-05-23 17:07:47

    今天运维的产品线下新来的研发问我,机器上应用的日志是什么时刻切割压缩的。于是我上机器看,发现那些压缩后的日志文件创建时间都是非常有规律的:凌晨4:02分,且每周一次生成一次。当时第一反应就是crontab干的了,so easy嘛~。但找遍了crontab -l -u * 各个用户的定时任务,毛线也没有啊。
    实在没办法,去/var/log/cron 下查看日志,总算有点线索了,在那个时间点,跑了这样一个任务 : /etc/cron.daily,又想起了鸟哥讲到的定时任务有分成按时、按天..写在相应的文件夹下,然后在/etc/crontab里设置执行时间。
    果然,在cron.daily里面找到了logrotate这个脚本,里面的内容很简单,核心就是这条命令: /usr/sbin/logrotate   /etc/logrotate.conf
      

      好啦,绕了这么久,最终定位到logrotate.conf 这个文件了(菜鸟一枚,经验欠缺哈)。Linux自带的命令logrotate会根据你的需求去执行,只需要将配置项写在logrotate.conf里面就行了。下面将介绍一些常用的配置项:
    
  •     dateext: 切割后的日志会加上这种格式日期:yyyymmdd,而不是简单的加上数字(默认下,cron的日志文件也会被切割,切完之后是cron.1;cron.2这样    
  •     compress: 对日志进行压缩(灰常常用的)
  •     daily|weekly|monthly|yearly: 这就比较好理解啦,就是制定切割周期,按每日、周、月、年进行切
  •     rotate  *:  "*"是一个数字,表示会将切割后的日志保存几份,比如cron的日志,Linux默认情况下保留了4份(所以我们在/var/log/下会看到 cron.1-4这四个文件)
  •     create [mode owner group]:表示对旧的日志进行切割后,马上会生成一个新的日志文件,可选项里指定这个文件的mode 拥有者和用户组(很强大的说)。当然像nginx这种,传一个重打日志的信号量进去,就会创一个新日志文件啦~~
  •     postrotate/endscript (同样常用): 表示在切割动作完成后,将想要运行的命令写在这对组合之间,这两个配置项是一组滴,缺一不可。(常用于切割后,重启进程或者bla bla..)
  •     maxage  * (常用): * 同样是数字,表示切割后的日志将保存多少天,超过这个天数的切割后的日志将会丢掉。如果你配置了mail,这些超过天数的日志将会以邮件的形式发送过去(发邮件这种貌似用得不太多吧)
  •     missingok ||nomissingok:   如果目标日志文件不存在,是否会报错(根据词义很好理解嘛)
  •     notifempty||ifempty:    如果目标日志文件为空,将不会执行切割;后面那条表示即使为空也切
  •     copytruncate:    将目标日志文件复制之后,再将该文件清空
  •     size *  :表示当日志文件大于一个值之后,才会进行切割,比如 100M 或者 300K

logrotate 非常强大,上面只是列出来了一些比较常用到的配置项~~
  






阅读(2807) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~