nginx服务日志切割、定时删除任务
1.测试环境使用sudo提权的方式去启动nginx
cd /usr/local/nginx/sbin
sudo ./nginx
需求:随着日志的增长需要做日志切割和定时删除
2.切换成普通用户去执行nginx服务(1024以下的端口普通用户是没有权限执行的)
使用root用户授权
setcap cap_net_bind_service=+ep /export/servers/nginx/sbin/nginx
3.停止nginx服务(root用户执行)
cd /usr/local/nginx/sbin &&./nginx -s stop
4.切换普通用户去启动nginx服务
su - appuser
cd /usr/local/nginx/sbin &&./nginx
检查nginx服务
ps -ef |grep nginx
5.编写日志切割脚本
vim logrotate_nginx_log.sh
#!/bin/bash
# 你的日志文件存放目录
logs_path="/export/servers/nginx/logs"
# 日志文件的名字,多个需要空格隔开
logs_names=(error access)
dates=`date -d "yesterday" +"%Y%m%d"`
mkdir -p ${logs_path}/$dates/
num=${#logs_names[@]}
for((i=0;i<num;i++));do
cp ${logs_path}/${logs_names[i]}.log ${logs_path}/$dates/${logs_names[i]}-${dates}.log
#mv ${logs_path}/${logs_names[i]}.log ${logs_path}/$dates/${logs_names[i]}-${dates}.log
echo >${logs_path}/${logs_names[i]}.log
done
#nginx平滑重启
#kill -USR1 `cat /export/servers/nginx/logs/nginx.pid`
cd $logs_path
find ${logs_path} -type f -mtime +7 -name "*.log" |egrep -v "access.log|error.log" |xargs rm -f
6.结合crontab定时执行
# crontab -e
#nginx日志切割
00 00 * * * bash /export/servers/nginx/logs/logrotate_nginx_log.sh > /dev/null 2>$1
备注:日志路径生产和测试不同