分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

Nginx日志切割并计划任务自动上传到FTP服务器

发布时间:2023-09-06 01:10责任编辑:熊小新关键词:暂无标签

Nginx日志切割并计划任务自动上传到FTP服务器

枫城浪子原创,转载请标明出处!

微信bh19890922

QQ445718526,490425557

更多技术博文请见个人博客:

https://fengchenglangzi.000webhostapp.com

http://fengchenglangzi.blog.51cto.com

一、简述

Nginx WEB服务器每天会产生大量的访问日志,而且不会自动地进行切割,如果持续天数访问,将会导致该access.log日志文件容量非常大,不便于SA查看相关的网站异常日志,并且后期进行分割非常不易。

日志分割可以基于Shell 脚本结合Crontab计划任务对Nginx日志进行自动、快速的切割,其切割的方法使用mv命令即可!

二、配置

安装vsftp服务器端


[root@localhost ~]# yum -y install vsftpd


本地安装ftp命令,否则会提示ftp: command not found

[root@localhost ~]# rpm -Uvhhttp://mirror.centos.org/centos/6/os/x86_64/Packages/ftp-0.17-54.el6.x86_64.rpm


自动切割Nginx日志与自动上传到FTP服务器的shell脚本如下:

#by fengchenglangzi#auto cut nginx log#########################!/bin/bash#2017-9-7 20:28:58#by fengchenglangzi#auto cut nginx log########################NGINX_LOG_FILE="/usr/local/nginx/logs/access.log"DES_LOG_DIR="/data/backup/nginx/logs"DES_LOG_FILE="$DES_LOG_DIR/access_$(date+%Y%m%d%H)"echo -e "\033[32mPlease wait start cutshell scripts!\033[0m"sleep 1if [ ! -d $DES_LOG_DIR ];then       mkdir -p $DES_LOG_DIR       echo -e "\033[32m$DES_LOG_DIR created!\033[0m"fimv $NGINX_LOG_FILE $DES_LOG_FILEkill -USR1  $(cat/usr/local/nginx/logs/nginx.pid)echo -e "\033[32mNginx log cuttingsuccessfully completed!\033[0m"ftp -n << EOFopen 192.168.8.194user nginx nginxbinary#使用二进制cd /home/nginx/#进入ftp服务器目录lcd $DES_LOG_DIR#进入本地目录prompt#打开prompt模式,一般prompt模式在使用多文件传输中才用到,默认为打开状态。如果prompt模式未打开,命令mput和mget将会传输目录中的所有文件put $(echo $DES_LOG_FILE|awk-F"/" ‘{print $NF}‘)#如果直接调用$ DES_LOG_FILE变量会报错,因为这个变量是一个绝对路径,由于上面调用了lcd命令,所以位置就已经处于$DES_LOG_DIR目录下,此时直接调用的话远程ftp服务器是无法识别这个路径的,所以这里直接取最后的日志文件名即可closebyeEOF

三、添加计划任务

将以上脚本添加到任务计划

默认情况下所有的任务计划都会放到下面的目录中,而且默认是没有任何计划的

[root@localhost ~]# ll /var/spool/cron/total 0[root@localhost ~]#

执行下面命令可以创建当前用户的计划任务

[root@localhost cron]# crontab -eno crontab for root - using an empty one 0 0  *  * *  /bin/sh  /root/auto_cut_nginx_log.sh>>/data/backup/nginx/nginx_cut.log 2>&1

保存后,在目录中就会出现当前用户命名的计划任务了

[root@localhost cron]# cd /var/spool/cron/[root@localhost cron]# lltotal 4-rw------- 1 root root 92 Aug 17 19:15 root[root@localhost cron]# cat root0 0  *  * *  /bin/sh  /root/auto_cut_nginx_log.sh>>/data/backup/nginx/nginx_cut.log 2>&1[root@localhost cron]# crontab -l0 0  *  * *  /bin/sh  /root/auto_cut_nginx_log.sh>>/data/backup/nginx/nginx_cut.log 2>&1[root@localhost cron]#

以上就是Nginx日志切割并添加到任务计划事例!


本文出自 “楓城浪子” 博客,请务必保留此出处http://fengchenglangzi.blog.51cto.com/1322043/1964692

Nginx日志切割并计划任务自动上传到FTP服务器

原文地址:http://fengchenglangzi.blog.51cto.com/1322043/1964692

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved