一、使用logrotate实现

1、添加配置文件

[[email protected] ~]# vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
 # 指定日志文件删除之前转储次数
        rotate 7      
# 指定转储周期为每天
    daily
# 如果日志丢失,不报错继续滚动下一个日志
        missingok
# 用于还在打开日志文件,把当前日志备份并截断
        copytruncate
# 使用当前日期作为命名格式
        dateext
}

2、测试

[[email protected] ~]# logrotate -f /etc/logrotate.d/nginx 
[[email protected] ~]# ll /usr/local/nginx/logs/
总用量 12
-rw-r--r--. 1 root root    0 3月   2 21:26 access.log
-rw-r--r--. 1 root root 2331 3月   2 21:26 access.log-20210302
-rw-r--r--. 1 root root    0 3月   2 21:26 error.log
-rw-r--r--. 1 root root  783 3月   2 21:26 error.log-20210302
-rw-r--r--. 1 root root    6 3月   2 20:03 nginx.pid

二、使用shell脚本+计划任务实现

1、配置脚本

[[email protected] ~]# mkdir /scripts
[[email protected] ~]# cd /scripts/
[[email protected] scripts]# vim cut_nginx_access_logs.sh
#!/bin/bash

# def var
date_format=$(date +%F)
log_dir=/usr/local/nginx/logs
log_name=access

# main program
[ -d ${log_dir} ] && cd ${log_dir} || exit 1
[ -f ${log_dir}/${log_name}.log ] || exit 1

mv ${log_dir}/${log_name}.log ${log_dir}/${log_name}_${date_format}.log
/usr/local/nginx/sbin/nginx -s reload

2、配置计划任务


[[email protected] scripts]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab

[[email protected] scripts]# cat /var/spool/cron/root
00 00 * * * /bin/sh /server/script/cut_nginx_log.sh >/dev/null 2>&1 EOF 

3、测试

[[email protected] scripts]# cd /usr/local/nginx/logs/
[[email protected] logs]# ll
总用量 8
-rw-r--r--. 1 root root  0 3月   2 21:26 access_2021-03-02.log
-rw-r--r--. 1 root root  0 3月   2 21:42 access.log
-rw-r--r--. 1 root root 61 3月   2 21:42 error.log
-rw-r--r--. 1 root root  6 3月   2 20:03 nginx.pid

标签: nginx, root, localhost, log, Web, web, 轮询, rw

相关文章推荐

添加新评论,含*的栏目为必填