nginx日志分割-shell案例

现象,我在windows环境下写了一个sh脚本,然后ftp到liunx服务器,代码看起来非常正确,就是执行不了.报错如下:

cannot  stat  '/alidata/server/nginx/logs/\r/access.log'

问题:脚本编码问题

解决:

vim 下命令

普通模式  :set  ff    //查看编码 doc  或者unix

              :set  fileformat=unix   //设置编码

脚本代码:

#!/bin/bash

savepath_log='/opt/nginx/logs'

nglogs='/alidata/server/nginx/logs'

mkdir -p $savepath_log/$(date +%Y)/$(date +%m)

mv ${nglogs}/access.log ${savepath_log}/$(date +%Y)/$(date +%m)/access.$(date +%Y%m%d).log

mv ${nglogs}/error.log ${savepath_log}/$(date +%Y)/$(date +%m)/error.$(date +%Y%m%d).log

kill -USR1 `cat /alidata/server/nginx/logs/nginx.pid`

#USR1 重新打开一个日志文件

分析: 

1. nginx 的主进程收到USR1信号,会重新打开日志文件(配置文件中设置的日志,如果不存在,会自动创建一个新的xxx.log)

2. 在没有执行kill -USR1 `cat ${pid_path}` 之前,即便已经对文件执行了mv命令改变文件名称,nginx还是会向新命名的文件access_20160801.log 照常写入日志数据的。原因是linux系统中内核是根据文件描述符来找文件的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值