nginx进行日志切割的shell脚本分享
发表于:2026-11-05 作者:千家信息网编辑
千家信息网最后更新 2026年11月05日,本篇内容主要讲解"nginx进行日志切割的shell脚本分享",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"nginx进行日志切割的shell脚本分享"吧!
千家信息网最后更新 2026年11月05日nginx进行日志切割的shell脚本分享
本篇内容主要讲解"nginx进行日志切割的shell脚本分享",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"nginx进行日志切割的shell脚本分享"吧!
一、脚本思路
第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。
第二步向nginx主进程发送USR1信号。
nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。
重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。
工作进程立刻打开新的日志文件并关闭重名名的日志文件。
然后你就可以处理旧的日志文件了。
二、脚本实现
nginx日志按日期自动切割脚本如下:
#nginx日志切割脚本#!/bin/bash#设置日志文件存放目录logs_path="/usr/local/nginx/logs/"#设置pid文件pid_path="/usr/local/nginx/nginx.pid"#重命名日志文件mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log#向nginx主进程发信号重新打开日志kill -USR1 `cat ${pid_path}`试验环境:
# cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.3 (Tikanga)# /opt/nginx/nginx -vnginx version: nginx/1.6.2
代码:
#!/bin/bash# ==============================================================================# chmod u+x /opt/nginx/cut_nginx_log.sh# crontab -e# 0 0 * * * /opt/nginx/cut_nginx_log.sh > /opt/nginx/logs/cut_nginx_log.log 2>&1# ==============================================================================LOGS_PATH="/opt/nginx/logs"ARCHIVE_YEAR=$(date -d "yesterday" "+%Y")ARCHIVE_MONTH=$(date -d "yesterday" "+%m")ARCHIVE_DATE=$(date -d "yesterday" "+%Y%m%d_%H%M%S")if [ -r /opt/nginx/nginx.pid ]; then mkdir -p "${LOGS_PATH}/${ARCHIVE_YEAR}/${ARCHIVE_MONTH}" mv "${LOGS_PATH}/access.log" "${LOGS_PATH}/${ARCHIVE_YEAR}/${ARCHIVE_MONTH}/access_${ARCHIVE_DATE}.log" kill -USR1 $(cat "/opt/nginx/nginx.pid") sleep 1 gzip "${LOGS_PATH}/${ARCHIVE_YEAR}/${ARCHIVE_MONTH}/access_${ARCHIVE_DATE}.log"else echo "Nginx might be down"fi# ==============================================================================# Clean up log files older than 100 days# ==============================================================================# Change HOUSEKEEPING=1 to enable clean upHOUSEKEEPING=0KEEP_DAYS=100if [ $HOUSEKEEPING == 1 ]; then if [ -d "${LOGS_PATH}" ]; then find "${LOGS_PATH}" -type f -name "access_*.log.gz" -mtime +${KEEP_DAYS} -exec rm -f {} \; fifi参考:
http://wiki.nginx.org/LogRotation
保存以上脚本nginx_log.sh,并设置定时切割任务
三、定时工作
在crontab中设置作业
代码如下:
0 0 * * * bash /usr/local/nginx/nginx_log.sh
这样就每天的0点0分把nginx日志重命名为日期格式,并重新生成今天的新日志文件。
到此,相信大家对"nginx进行日志切割的shell脚本分享"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
日志
文件
脚本
进程
工作
代码
信号
内容
文件名
日期
学习
配置
实用
更深
不用
任务
兴趣
名字
名称
实用性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网高科技
上海挚品互联网科技有限公司
互联网科技公司电话
新浪科技互联网
上游互联网科技
互联网金融 科技创新
一五八零互联网科技
无锡溥仪互联网科技有限公司
海南购全球互联网科技
玖二柒互联网科技公司待遇
如何创新互联网科技
互联网科技和法律行业
中科明德北京互联网科技
上海京穆互联网科技有限公司
元气玛特互联网科技公司是外包吗
黑科技 体验场景 互联网大会
互联网科技快讯热点
互联网硬科技公司
云南互联网科技学费
中国科技和美国互联网
百单网互联网科技有限公司
河南云网互联网络科技有限公司
致聘互联网科技
金融科技与互联网金融相同和不同
昭通互联网科技选哪家
北京市互联网新科技
恒生科技指数 中概互联网
北京品多多互联网科技有限公司
银川新华互联网科技学校招聘
如何强化互联网金融科技