首页 > 运维 > linux运维 > 正文

Linux下Nginx、MySQL和PHP等应用的日志切割脚本

星夢妙者
发布: 2025-07-19 11:52:01
原创
556人浏览过

linux系统中,如果应用程序产生了日志,就需要考虑日志的切割操作,例如根据固定的文件大小或者按日期进行切割。在编译nginx1.9.0、mysql5.7.7rc和php7后,这些服务都会产生日志,特别是nginx进程会根据nginx.conf配置文件将每条访问记录写入到access.log中。如果所有的日志都记录在同一个文件中,长时间下来会影响系统的效率。

Linux下Nginx、MySQL和PHP等应用的日志切割脚本本文介绍了如何在Linux下使用Shell脚本进行Nginx日志的切割,该脚本支持按天切割、自定义保留天数以及记录脚本执行过程和耗时。使用时需配置好应用的日志目录(Source_Log_Dir变量)和日志备份目录(Backup_Dirs变量),并通过Crontab定时任务执行该脚本。

Linux下Nginx、MySQL和PHP等应用的日志切割脚本下面是Nginx日志切割脚本nginx_log_backup.sh的具体内容,该脚本主要用于备份Nginx日志。其他如MySQL和PHP等Linux应用可以通过修改脚本中对应的日志路径来使用。该脚本已同步到博客在GitHub上创建的LNMP配置项目中,地址为:https://www.php.cn/link/27810d8aed732a494b7c10f1aaabcc8e

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 193
查看详情 Find JSON Path Online
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99100101 \#!/bin/bash# 备份Linux应用如nginx、php、mysql等的日志文件。# Crontab使用方法:00 01 * * * /mydata/backups/bak_list/nginx_log_backup.sh >/dev/null 2>&1# (c) 2015 vfhky https://typecodes.com/linux/applogsbackup.html# https://www.php.cn/link/27810d8aed732a494b7c10f1aaabcc8e/blob/master/nginx_log_backup.sh# 基础命令。TARCMD="tar -zcf"MVCMD="mv -f"FINDCMD="find"# 保留天数。NUMDAYS=40# 要备份的日志路径。可以设置为nginx日志路径、mysql日志路径等。Source_Log_Dir=/var/log/nginx# 设置要备份的日志文件类型,根据日志文件的后缀名设置。Source_Log_Files=`ls ${Source_Log_Dir}/*.log`# 设置备份路径。Backup_Dirs=${Source_Log_Dir}# 前一天的日期格式:例如20150505Previous_Date=`date -d "-1 days" +%Y%m%d`# 目标备份目录。Backup_Dir=${Backup_Dirs}/${Previous_Date}# 此Shell脚本自动生成的日志路径。Shell_Log=${Backup_Dir}/process.log# 运行命令函数。function ERROR() { echo >/dev/null && echo "`date +%H:%M:%S:%N` $@" >> ${Shell_Log} exit 1}function NOTICE() { echo >/dev/null && echo "`date +%H:%M:%S:%N` $@" >> ${Shell_Log}}function RUNCMD() { echo $@ >> ${Shell_Log} eval $@}# 检查用户输入的保留天数。通常可以删除下面的代码。if [[ ! $NUMDAYS =~ ^[0-9]+$ ]]; then ERROR "无效的保留天数$NUMDAYS!"elif [ "$NUMDAYS" -eq "0" ]; then ERROR "保留天数必须大于零!"fi# 锁定权限。umask 077# 创建备份日志目录和Shell日志。mkdir -p $Backup_Dirtouch $Shell_LogNOTICE "1开始备份。"NOTICE "2开始使用tar命令压缩日志文件。"RUNCMD "cd ${Source_Log_Dir} && ${TARCMD} ${Previous_Date}.tar.gz *.log"RC=$?if [ $RC -gt 0 ]; then ERROR "创建备份包失败!"fiNOTICE "3开始移动压缩文件到备份目录。"RUNCMD "${MVCMD} ${Previous_Date}.tar.gz ${Backup_Dir}/"RC=$?if [ $RC -gt 0 ]; then ERROR "移动压缩文件失败!"fiNOTICE "4开始清空每个日志文件。"for file in ${Source_Log_Files}do RUNCMD ">$file" RC=$? if [ $RC -gt 0 ]; then ERROR "清空每个日志文件失败!" fidoneNOTICE "5删除超过$NUMDAYS天的旧文件夹。"# ls ${Source_Log_Dir} | grep '^[0-9]{8}$' | xargs rm -rfRUNCMD "$FINDCMD ${Source_Log_Dir} -type d -name '[0-9]*[0-9]' -mtime +$NUMDAYS | xargs rm -rf"NOTICE "6备份结束。"exit 0

以上就是Linux下Nginx、MySQL和PHP等应用的日志切割脚本的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号