• Nginx日志切割


    以下是nginx日志切割的脚本,按天切割
    $(date +%d) 获取当月第几天,如5月18日,就会取出来是18
    这样,可以做到按月循环,只保留一个月的日志,而不用担心去清理过期的日志了
    脚本请在crontab中设置执行,如在每天23点59分是执行日志切割脚本
    59 23 * * * /usr/local/nginx/nginxlog_happy.sh

    以下红色字是脚本内容:
    savepath_log保存日志的路径
    nginxlogs当前nginx默认的日志,如果你是装在/usr/local/nginx目录,那日志就和脚本上一样

    vim /usr/local/nginx/nginxlog_happy.sh  (使用vim命令新建一个bash日志分割脚本nginxlog_happy.log用以定时分割日志使用)内容如下:

    (注意,实际使用时请删除粗体部分的中文注释,下文注释旨在便于您的阅读)


    #/bin/bash 

    #Site:Happy

    #Email:happy.yin@qq.com
    yesterday=$(date +%Y-%m-%d)  #取得服务器当前时间

    savepath_log='/usr/local/nginx/logs/happylogs'#分割后的日志文件保存目录(注意结尾目录斜杠去掉)

    nglogs='/usr/local/nginx/logs'  #nginx日志文件目录,具体根据实际地址替换(结尾目录斜杠去掉 以免与下面路径中的"/"重复)

     

    #判断分割日志保存目录是否存在不存在则创建 

    if [ ! -d ${savepath_log} ]   # 注意 语句之间 空格不可省略,这是bash脚本 不是php脚本那样随和 

    then

    mkdir -p ${savepath_log}

    fi 

    #通过mv命令将日志移动到分割后的日志目录里,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件。

    mv ${nglogs}/access.log  ${savepath_log}/access_${yesterday}.log  #具体根据你的实际日志文件名路径 进行修改access.log名字

    mv ${nglogs}/error.log  ${savepath_log}/error_${yesterday}.log  #具体根据实际日志文件名地址 修改error.log名字

    mv ${nglogs}/host.access.log  ${savepath_log}/host.access_${yesterday}.log 
    kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)  #通知nginx重新生成新的日志

     

    下面进行最重要的一步:(建议采用第二种方式进行修改)

    crontab -e 在里面输入如下内容:(每晚23点59分执行日志分割,注意中间的空格,如果该命令找不到crontab文件选用下列方式修改即可)

    59  23  * * * /usr/local/nginx/nginxlog_happy.sh

    如果上面命令找不到文件地址可使用如下 命令查找crontab 文件进行修改:

    vim /etc/crontab在最后一行添加

    59  23  * * * /usr/local/nginx/nginxlog_happy.sh

    重新启动crond使设置生效

    /etc/rc.d/init.d/crond restart   #yum install -y vixie-cron 安装计划任务,某些系统上可能没有预装需要执行此操作进行安装
    chkconfig crond on #设为开机启动
    service crond start #启动
    如果直接复制的话,要注意字体编码的问题,很多windows上的脚本上传到linux就出错,还是因为编码问题

  • 相关阅读:
    ASP.NET Core -- 安装版
    基础知识系列☞各版本下IIS请求处理过程区别
    基础知识系列☞IList ←vs→ List
    005杰信-factory删除数据
    004杰信-关于formSubmit('factorycreate.action','_self')路径的疑惑
    23SpringMvc_各种参数绑定方式-就是<input那种
    003杰信-在jsp页面输入数据,然后在oracle数据库中插入factory数据,当字段允许为空时要特殊处理
    spring+springmvc+mybatis+maven整合
    22SpringMvc_jsp页面上的数据传递到控制器的说明
    002Jsp的内置对象
  • 原文地址:https://www.cnblogs.com/chuhongyun/p/11419135.html
Copyright © 2020-2023  润新知