• nginx日志文件切割


    浅语

    nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大。所以需要进行日志文件的切割
    首先,就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。因为linux是靠文件描述符而不是文件名定位文件。
    第二步向nginx主进程发送USR1信号。
    nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。
    重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。
    工作进程会立刻打开新的日志文件并关闭重名名的日志文件。

    详细操作

    关于nginx日志文件的脚本切割
    提供以下方法
    1.独立创建一个脚本文件进行执行
    2.使用centos内的/etc/logrotate.d/nginx脚本进行切割

    方法1:

    vim /opt/nginxlogrotate.sh		
    	LOGPATH=/var/log/nginx/access.log		#定义日志文件位置		
    	BASEPATH=/usr/local/nginx			#备份的日志位置		
    	BAK="$BASEPATH"/$(date +"%Y%m%d")-access.log	#备份后的日志文件名		
    	mv "$LOGPATH" $BAK				#移动文件	
    	/bin/kill -USR1 `cat /run/nginx.pid`		#执行切割
    

    方法2:

    vim /etc/logrotate.d/nginx
    /var/log/nginx/*log {
    	create 0644 nginx nginx
    	daily
    	rotate 7
    	missingok
    	notifempty
    	compress
    	sharedscripts
    	postrotate
    		/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    	endscript
    }
    
    	#create ... :			以指定的权限创建全新的日志文件,同时logrotate也会重命名原始文件
    	#postrotate和endscript:		里面指定的命令将被执行
    	#rotate:			保留最近多少天的记录
    	#sharedscripts:			只为整个日志组运行一次的脚本
    	#daily:				按天切割  可用值  monthly  weekly yearly
    	#notifempty:			如果日志文件为空,不执行切割
    	#missingok:			忽略错误。
    	#dateext:			切割后的日志文件会附加上一个短划线和YYYYMMDD格式的日期,没有此配置项会附加一个小数点加一个数字序号
    	#compress:			在轮询任务完成后,已经轮询的归档将使用gzip进行压缩
    

    创建定时任务:

    方法1:

    crontab -e
    0 0 * * * 	 /usr/sbin/logrotate -vf /etc/logrotate.d/nginx >> /opt/cutnginx.log 2>&1
    #  -f  强制执行
    

    方法2:

    crontab -e 
    0 0 * * * 	/bin/bash /opt/nginxlogrotate.sh >> /opt/cutnginx.log 2>&1
    #2>&1” 表示将正确输出和错误输出都保存到同一个文件中  >>表示的是追加
  • 相关阅读:
    java volatile关键字解惑
    Java 反射
    拷贝源实体类到目标实体类中
    Bean和Map之间的转换
    DateUtils时间的封装
    HttpClient的代码封装,便于直接调用
    HttpClient语法
    LinkedHashMap+ConcurrentHashMap+hashMap的区别
    1006 Tick and Tick
    Event Flow
  • 原文地址:https://www.cnblogs.com/moniter/p/12305096.html
Copyright © 2020-2023  润新知