Linux定期清理nginx 日志
要在Linux系统中定期清理Nginx日志,你可以使用logrotate
工具,它是一个应用于日志文件的管理工具,可以用来自动旋转、压缩、删除和邮寄日志文件。
首先,确保logrotate
已经安装。如果没有安装,可以使用包管理器进行安装,例如在Debian或Ubuntu上:
sudo apt-get install logrotate
接下来,创建一个logrotate
配置文件或编辑已有的配置文件。通常,Nginx的日志文件通常位于/var/log/nginx/
目录下。
创建一个新的配置文件,例如/etc/logrotate.d/nginx
,并添加以下内容:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 nginx adm
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
解释一下这个配置:
daily
:日志文件将每天轮换一次。missingok
:如果日志文件不存在,不要报错。rotate 7
:保留7天内的日志文件。compress
:通过gzip压缩轮换出去的日志文件。delaycompress
:压缩操作将推迟到下一次轮换。notifempty
:如果日志文件为空,则不进行轮换。create 0640 nginx adm
:轮换后创建新的日志文件,设定权限和所有者。sharedscripts
:这是一个可选的指令,它表明postrotate脚本将在所有日志文件轮换之后运行一次。postrotate/endscript
:在日志文件轮换之后运行的脚本,这里是发送USR1信号给Nginx,让其重新打开日志文件。
这样配置后,logrotate
会自动按照你的设定进行日志文件的管理。确保你的logrotate
配置是正确的,可以使用logrotate
命令手动测试配置:
sudo logrotate /etc/logrotate.d/nginx
最后,设置一个cron任务来定期执行logrotate
:
sudo crontab -e
添加以下行到crontab文件中,以每天凌晨1点执行logrotate
:
0 1 * * * /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
保存并退出编辑器,这样就完成了定期清理Nginx日志的设置。
评论已关闭