技术分享 LINUX 查看内容

为什么nginx的log被自动压缩?

老高 | 发布于 2022-07-09 10:45| 浏览()| 评论() | 收藏() | 点赞() | 打印

摘要: 为什么nginx的log被自动压缩?每天都是差不多的时间发生,没写这样的脚本,看了所有用户的crontab也没有这样的任务,这是nginx干的么?还是操作系统干的?

为什么nginx的log被自动压缩?每天都是差不多的时间发生,没写这样的脚本,看了所有用户的crontab也没有这样的任务,这是nginx干的么?还是操作系统干的?

因为Nginx在安装时加入了一个logrotate任务: /etc/logrotate.d/nginx

/var/log/nginx/*.log { 
        daily 
        missingok 
        rotate 52 
        compress 
        delaycompress 
        notifempty 
        create 640 nginx adm 
        sharedscripts 
        postrotate 
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` 
        endscript 
}

Linux日志管理服务logrotate会定时读取该文件,根据设置按日志大小或天数删除/归档旧日志,创建新日志. 

配置说明: 

daily: 日志文件每天进行滚动 
missingok: 如果找不到这个log档案,就忽略过去 
rotate: 保留最进52次滚动的日志 
compress: 通过gzip压缩转储以后的日志 
delaycompress: 和compress一起使用时,转储的日志文件到下一次转储时才压缩
notifempty 如果是空文件的话,不转储 
create mode owner group:转储文件,使用指定的文件模式创建新的日志文件 
sharedscripts: 运行postrotate脚本(该脚本作用为让nginx重新生成日志文件) 
postrotate/endscript: 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

logrotate默认被加入到cron的/etc/cron.daily中作为每日任务执行,配置定义在:

/etc/cron.daily/logrotate

查看logrotate最近进行了哪些日志归档:

less /var/lib/logrotate/status

查看/etc/cron.daily每日任务是什么时候运行的:

less /etc/crontab


发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情