ngx之日志切割 、ngx信号

目录

1、切割日志的配置(用系统自带的 logrotate )

1.1 配置文件参数解释:

1.2 重新打开日志文件的 kill -USR1 信号

nginx信号的接收和处理

Nginx信号简介

2、强制手动切割日志

3、配置定时切割任务


日志可以每天都进行切割重新写,保留固定的时间后也可使用 find 删除。

1、切割日志的配置(用系统自带的 logrotate

/etc/logrotate.d 下面再建立一个配置文件,这里新建名为nginx

ngx之日志切割 、ngx信号_第1张图片

( 中途有 ctrl+Z  暂停过任务,后面fg恢复的 )

    

1.1 配置文件参数解释:

/usr/local/nginx/logs/*log  把目录下所有的log结尾的文件都进行切割

daily           #每天切割。  日志文件轮转周期,可用值为: daily / weekly / yearly

rotate 30     # 设置轮转次数,即最多存储 n 个归档日志,超过会删除最早的归档日志

missingok    #忽略错误

notifempty    #当日志为空时,不切

compress     #使用gzip压缩

   

minsize 5M           #限制条件,大于5M的日志文件才进行分割,否则不操作

dateext             # 以当前日期作为命名格式

 

引入脚本命令

sharescripts

      XXXX   中间是脚本、命令部分

endscript  

    

postrotate  表示当切割完成之后要执行的命令。

这里kill是因为 日志mv挪走以后,始终还是在写旧的日志文件。通过给nginx 一个reopen信号以后才会自动新建一个新的日志文件。

    

有时候因为要在容器外kill ,可以用ps+awk来kill

ps -ef |grep "openresty/nginx/nginx" | awk '/master/{print $2}'

   

1.2 重新打开日志文件的 kill -USR1 信号

注意:这里的kill 的作用并不是用来杀掉进程。

kill杀进程只是作用之一,这里是通过kill向nginx的master进程发送特定的信号来进行对nginx的控制。

kill  -USR1  PID  起到的效果相当于  nginx  -s  reopen   重载日志文件

   

nginx信号的接收和处理

nginx 主进程在启动完成后会进入等待状态,负责响应各类系统消息,如SIGCHLD、SIGHUP、SIGUSR2等。

   

Nginx信号简介

(master)主进程支持的信号

  • TERM, INT: 立刻退出        相当于 nginx -s stop
  • QUIT: 等待工作进程结束后再退出          相当于 nginx -s quit
  • KILL: 强制终止进程
  • HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。相当于nginx -s reload
  • USR1: 重新打开日志文件        相当于 nginx -s reopen
  • USR2: 启动新的主进程,实现热升级
  • WINCH: 逐步关闭工作进程

    

(worker)工作进程支持的信号

  • TERM, INT: 立刻退出
  • QUIT: 等待请求处理结束后再退出,优雅停止
  • USR1: 重新打开日志文件

nginx -t 时候也可以用 nginx  -c  xxx.conf  -t   检测nginx配置的正确性。

# 在重启或者重载配置文件前需要检查nginx配置的正确性
nginx -c /path/to/nginx.conf -t

# 正常输出示例
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 异常输出示例
nginx: [emerg] unknown directive "eerror_log" in /etc/nginx/nginx.conf:3
nginx: configuration file /etc/nginx/nginx.conf test failed

2、强制手动切割日志

logrotate  -f  /etc/logrotate.d/nginx    

 (这里切割配置文件名起的是nginx)

去看设置的文件夹下已经发生了切割

3、配置定时切割任务

crontab  -e

0 */1 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginxvideo

这里是每个小时 0 分时候使用该nginxvideo配置文件进行切割

你可能感兴趣的:(Nginx,nginx)