nginx-日志切割

nginx-日志切割

脚本

]# vim /scripts/nginx_log_split.sh
#!/usr/bin/env bash
# Author: wanwz
# Date: 2020-08-03
# Comment: Automatically split the log every day
set -euo pipefail

LOG_PATH=/opt/program/nginx/logs
YSDAY=$(date -d "yesterday" +%Y-%m-%d)

mv ${LOG_PATH}/access.log ${LOG_PATH}/access_${YSDAY}.log
kill -USR1 $(cat ${LOG_PATH}/nginx.pid)
]# chmod 755 /scripts/nginx_log_split.sh
]# crontab -e
0 0 * * * /bin/bash /scripts/nginx_log_split.sh

扩展

文件描述符

  • 文件描述符是Linux内核为每个打开的文件命名的一个整数标识,内核通过文件描述符来访问文件
  • 每一个文件描述符会与一个打开的文件对应
  • 不同的文件描述符也可以指向同一个文件

Nginx是一个运行的进程,早已经记录了access.log日志文件,即使路径发生了变化,依然可以定位到,所有如果只是把access.log名字更改了,Nginx还是会向那个文件写内容

信号

  • 在Linux系统中是通过信号与正在运行的进程进行通信的
  • 有预定好的信号如:SIGHUP,也有自定义信号如USR1

Nginx自定义信号USR1,当进程收到该信号后,重新打开日志文件,因此kill -USR1 nginx.pid会生成一个新的日志文件

参考文档

  1. 百度百科
posted @ 2020-08-22 10:54  wanwz  阅读(111)  评论(0编辑  收藏  举报