用脚本定时为Nginx多个虚拟主机批量切分日志

我有一台VPS是Nginx服务器,日志是这样规划的:

/var/log/nginx/域名/access.log

一开始用脚本为这些站点在每天0点切分日志,后来站点多了脚本就比较长,每次新增站点比较麻烦。尝试写了个脚本,能枚举/var/log/nginx下面的所有子目录,然后依次为各个站点切分日志,新增站点也会自动切分。

脚本内容如下:

todaydate=`date --date='yesterday' "+%Y%m%d"`
#先把日期赋值到变量,因为脚本在第二天0点后执行,所以日期应该获取前一天的
for site in `ls -l /var/log/nginx | grep -e "^d" |awk '{print $NF}'`
#把/var/log/nginx的子目录枚举一下
do
mv /var/log/nginx/$site/access.log /var/log/nginx/$site/$todaydate.log

#将正在写入的日志重命名为日期
done
kill -USR1 `ps aux | grep nginx | grep master | awk '{print $2}'`

#找到nginx的master进程,向它发USR1指令,让它往新的日志文件写入,如果不加这条命令的话,仍会往刚重命名的日志中写入

 评论
  省的自己写了

  一个懒人,终于等到了现成的解决方法,飘一个
 发表评论
姓   名: