1.这里使用shell脚本+定时任务的方式对nginx做每日的日志切割
2.查看nginx日志存放目录
cat /etc/nginx/nginx.conf
3.新建日志备份目录
mkdir /var/log/nginx/backup_log
3.编辑日志切割脚本
vi /etc/nginx/backup_log.sh
#!/bin/bash
date=`date +%Y%m%d`
DATE=`date +%Y%m%d%H%M`
mv /var/log/nginx/access.log /var/log/nginx/backup_log #将当天日志迁移到日志备份目录以达到切割日志的效果
mv /var/log/nginx/backup_log/access.log /var/log/nginx/backup_log/$date"_access.log" #将日志文件名称更改
mv /var/log/nginx/error.log /var/log/nginx/backup_log
mv /var/log/nginx/backup_log/error.log /var/log/nginx/backup_log/$date"_error.log"
nginx -s reload #优雅的重载nginx配置文件,不执行的话nginx不会生成日志文件
if [ $? == 0 ]; then #检测重载配置文件是否成功
echo $DATE":succes" > /var/log/nginx/backup.log
else
echo $DATE":检查nginx配置文件" > /var/log/nginx/backup.log
或使用以下脚本,两个脚本都可以完成nginx日志的切割
更推荐使用此脚本,因为nginx重载配置文件的时候,对当时节点的资源使用会瞬时翻倍,影响节点性能
#!/bin/bash
date=`date +%Y%m%d`
DATE=`date +%Y%m%d%H%M`
cp /var/log/nginx/access.log /var/log/nginx/backup_log
mv /var/log/nginx/backup_log/access.log /var/log/nginx/backup_log/$date"_access.log"
echo ' ' > /var/log/nginx/access.log #将access.log中的内容清空
cp /var/log/nginx/error.log /var/log/nginx/backup_log
mv /var/log/nginx/backup_log/error.log /var/log/nginx/backup_log/$date"_error.log"
echo ' ' > /var/log/nginx/error.log #将error.log中的内容清空
4.给脚本赋予执行权限
chmod +x /etc/nginx/backup_log.sh
5.配置定时任务(配置为每日的凌晨十二点执行切割脚本)
vi /etc/crontab
00 00 * * * /bin/sh /etc/nginx/backup_log.sh
6.配置定时任务生效
crontab /etc/crontab
crontab -l