欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

nginx分割日志

程序员文章站 2022-12-22 08:29:53
实现nginx日志按照时间分割存储 backups_log.sh 将sh脚本加入到定时任务中,每天23:59执行 添加定时任务 注意事项: 1.在没有执行kill -USR1 nginx_pid 之前,即便已经对文件执行了mv命令也只是改变了文件的名称,nginx还是会向新命名的文件中照常写入日志数 ......

实现nginx日志按照时间分割存储

backups_log.sh

#设置log日志的存储地址
log_path=/home/soft/nginx/logs
#设置历史日志的存储地址
history_log_path=/home/soft/nginx/history_logs
#获取分割日志时所需要的时间当做日志文件名称
time=$(date +%y-%m-%d)
#将当前日志备份到指定存储目录
mv ${log_path}/access.log ${history_log_path}/access_log/${time}_access.log
#发送信号重新打开日志文件
kill -usr1 $(cat ${log_path}/nginx.pid)

将sh脚本加入到定时任务中,每天23:59执行

crontab -e

添加定时任务

59 23 * * * /home/sh/backups_log.sh

 

注意事项:

1.在没有执行kill -usr1 nginx_pid 之前,即便已经对文件执行了mv命令也只是改变了文件的名称,nginx还是会向新命名的文件中照常写入日志数据。原因在于linux系统中,内核是根据文件描述符来找文件的

2.添加定时任务后如果定时任务没有起作用,则使用 ps -aux | grep cron 确认下服务是否已经开启

3. -usr1 是进程间通信的信号中的一种,至于nginx进程接收到该信号做什么操作是它内部定义的,除此之外我们可以使用 kill -l 确认liunx中包含哪些信号