美文网首页
windows/centos nginx access日志分割

windows/centos nginx access日志分割

作者: misspass | 来源:发表于2020-02-01 17:26 被阅读0次

    ### 新建 cut-nginx.bat

    ```

    @echo off

    rem 取1天之前的日期

    echo wscript.echo dateadd("d",-1,date) >%tmp%\tmp.vbs

    for /f "tokens=1,2,3* delims=/" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i

    for /f "tokens=1,2,3* delims=/" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j

    for /f "tokens=1,2,3* delims=/" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k

    if %m% LSS 9 set m=0%m%

    if %d% LSS 9 set d=0%d%

    echo %y%-%m%-%d%

    rem 查看系统正在运行的nginx进程

    tasklist /fi "imagename eq nginx.exe"

    ::taskkill /F /IM nginx.exe > nul  该行是注释

    rem设置Nginx 位于的盘符

    set NGINX_DRIVER=C:

    rem 设置 Nginx 的主目录

    ::set NGINX_PATH=%NGINX_DRIVER%\nginx  该行是注释

    set NGINX_PATH="%NGINX_DRIVER%\www\nginx"

    rem 设置 Nginx 的日志access目录

    set LOG_PATH=%NGINX_PATH%\log

    rem 保留7天日志

    set save_days=3

    rem 切换到 Nginx 所在的盘符

    %NGINX_DRIVER%

    rem 切换到logs所在目录

    cd %LOG_PATH%

    rem 移动文件

    move %LOG_PATH%\access_p1.log %LOG_PATH%\access_p1_%y%-%m%-%d%.log

    move %LOG_PATH%\access_p2.log %LOG_PATH%\access_p3_%y%-%m%-%d%.log

    ::move %LOG_PATH%\error.log %LOG_PATH%\error_%y%-%m%-%d%.log

    rem 进入 Nginx 的主目录

    ::cd %NGINX_PATH%

    rem 向nginx 发送 reopen 信号以重新打开日志文件,功能与 Linux 平台中的 kill -USR1 一致

    ::nginx -s reopen

    rem  kill nginx进程,然后启动服务

    ::nginx -s reopen

    process -k nginx.exe

    process -k nginx.exe

    del logs\nginx.pid

    net stop nginx

    net start nginx

    rem 删除7天前日志

    forfiles /p %LOG_PATH% /s /m *.log /d -%save_days% /c "cmd /c del /f /q /a @path"

    echo on

    ```

    ###添加计划任务

    在windows下添加一个任务计划,每天执行一次即可。

    说明:

    Windows Server 2008 计划任务配置 (我首次配,没有执行;后来经过测试,找到了原因)注意以下关键点:

    1- 使用最高权限

    ![113104_V9c9_586186.jpg](https://img.haomeiwen.com/i2156586/ba39a6ed464ae6e2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    2- “起始于(可选)”这里一定要填写相应执行程序或是BAT文件的所在目录,要不然是执行不成功的。路径中不能有引号。

    ![113123_DUA7_586186.jpg](https://img.haomeiwen.com/i2156586/d09a9e2abfe17214.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    ##Centos6 nginx 日志切割:

    ```

    log_dir="/www/nginx/logs"

    cd $log_dir

    mkdir -p $log_dir/backup/

    time=`date +%Y-%m-%d`

    #日志分割,按天分类

    website=`ls $log_dir/access* | xargs -n 1 | cut -f 2 -d "."`

    for i in $website

    do

      mv $log_dir/access.$i.log $log_dir/backup/$i.$time.log

    done

    service nginx restart

    #Set how long you want to save

    save_days=7

    find $log_dir/backup -mtime +$save_days -exec rm -rf {} \;

    ```

    #####需要注意的是:因为个人需要,Nginx访问日志命名格式必须是access.域名.log,例如:access.www_abc_com.log,域名中原来的点.必须换成其他字符,比如下划线_

    ##执行命令crontab -e进入编辑状态

    添加如下代码,每天00点00分启动。

    ```

    00 00 * * * /www/nginx/cutnginx.sh

    ```

    ```

    #重启服务

    service crond restart

    ```

    相关文章

      网友评论

          本文标题:windows/centos nginx access日志分割

          本文链接:https://www.haomeiwen.com/subject/kisxxhtx.html