nginx日志按日期切割并保留最近七天的日志

平凡
2018-06-27 09:50:02
345 阅读

脚本

/www/server/logrotate.sh

#!/bin/bash
## 零点执行该脚本

## Nginx 日志文件所在的目录
LOGS_PATH="/www/log/nginx"

mkdir -p ${LOGS_PATH}/backup/

mv ${LOGS_PATH}/api.einsition.com-access.log ${LOGS_PATH}/backup/api.einsition.com-access_$(date -d "yesterday" +"%Y%m%d").log
mv ${LOGS_PATH}/api.einsition.com-error.log ${LOGS_PATH}/backup/api.einsition.com-error_$(date -d "yesterday" +"%Y%m%d").log

## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
# nginx_pid=`ps -ef |grep -v grep |grep "nginx: master process"|awk -F" " '{print $2}'`
# kill -USR1 $nginx_pid
kill -USR1 $(cat /run/nginx.pid)

cd ${LOGS_PATH}/backup/
find . -name "*.einsition.com*.log" -type f -mtime +7 -exec rm -f {} \;

crontab

0 0 * * * /www/log/nginx/rotateLog.sh 1>> /dev/null 2>&1

systemd.timer

1、创建 /www/server/logrotate.timer 文件

[Unit]
Description=Daily Log Rotation Timer

[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

2、创建 /www/server/logrotate.service 文件

[Unit]
Description=Daily Log Rotation Service

[Service]
Type=oneshot
ExecStart=/www/server/logrotate.sh

3、将 /www/server/logrotate.timer 和 /www/server/logrotate.service 软连接到 /etc/systemd/system/ 目录

ln -sf /www/server/logrotate.timer /etc/systemd/system/logrotate.timer
ln -sf /www/server/logrotate.service /etc/systemd/system/logrotate.service

4、启用并启动定时器

sudo systemctl daemon-reload
sudo systemctl enable logrotate.timer
sudo systemctl start logrotate.timer
0 评论
暂无数据